@aws-cdk/cloud-assembly-schema 53.26.0 → 53.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 +562 -18
- package/cli-version.json +1 -1
- package/lib/cloud-assembly/index.d.ts +1 -0
- package/lib/cloud-assembly/index.js +2 -1
- package/lib/cloud-assembly/validation-report-schema.d.ts +166 -0
- package/lib/cloud-assembly/validation-report-schema.js +9 -0
- package/lib/manifest.d.ts +7 -0
- package/lib/manifest.js +11 -2
- package/package.json +8 -8
- package/schema/validation-report.schema.json +163 -0
package/.jsii
CHANGED
|
@@ -1597,6 +1597,80 @@
|
|
|
1597
1597
|
],
|
|
1598
1598
|
"symbolId": "lib/integ-tests/test-case:CdkCommands"
|
|
1599
1599
|
},
|
|
1600
|
+
"@aws-cdk/cloud-assembly-schema.CloudFormationResourceJson": {
|
|
1601
|
+
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
1602
|
+
"datatype": true,
|
|
1603
|
+
"docs": {
|
|
1604
|
+
"stability": "stable",
|
|
1605
|
+
"summary": "A node in the construct creation stack trace."
|
|
1606
|
+
},
|
|
1607
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.CloudFormationResourceJson",
|
|
1608
|
+
"kind": "interface",
|
|
1609
|
+
"locationInModule": {
|
|
1610
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
1611
|
+
"line": 167
|
|
1612
|
+
},
|
|
1613
|
+
"name": "CloudFormationResourceJson",
|
|
1614
|
+
"properties": [
|
|
1615
|
+
{
|
|
1616
|
+
"abstract": true,
|
|
1617
|
+
"docs": {
|
|
1618
|
+
"stability": "stable",
|
|
1619
|
+
"summary": "The logical ID of the resource in the CloudFormation template."
|
|
1620
|
+
},
|
|
1621
|
+
"immutable": true,
|
|
1622
|
+
"locationInModule": {
|
|
1623
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
1624
|
+
"line": 176
|
|
1625
|
+
},
|
|
1626
|
+
"name": "logicalId",
|
|
1627
|
+
"type": {
|
|
1628
|
+
"primitive": "string"
|
|
1629
|
+
}
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"abstract": true,
|
|
1633
|
+
"docs": {
|
|
1634
|
+
"stability": "stable",
|
|
1635
|
+
"summary": "The path to the CloudFormation template containing this resource."
|
|
1636
|
+
},
|
|
1637
|
+
"immutable": true,
|
|
1638
|
+
"locationInModule": {
|
|
1639
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
1640
|
+
"line": 171
|
|
1641
|
+
},
|
|
1642
|
+
"name": "templatePath",
|
|
1643
|
+
"type": {
|
|
1644
|
+
"primitive": "string"
|
|
1645
|
+
}
|
|
1646
|
+
},
|
|
1647
|
+
{
|
|
1648
|
+
"abstract": true,
|
|
1649
|
+
"docs": {
|
|
1650
|
+
"default": "- no locations",
|
|
1651
|
+
"remarks": "Either a single component, in which case it regards a top-level property\nname, or a JSON path (starting with `$.`) to indicate a deeper property.",
|
|
1652
|
+
"stability": "stable",
|
|
1653
|
+
"summary": "Properties within the construct where the violation was detected."
|
|
1654
|
+
},
|
|
1655
|
+
"immutable": true,
|
|
1656
|
+
"locationInModule": {
|
|
1657
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
1658
|
+
"line": 186
|
|
1659
|
+
},
|
|
1660
|
+
"name": "propertyPaths",
|
|
1661
|
+
"optional": true,
|
|
1662
|
+
"type": {
|
|
1663
|
+
"collection": {
|
|
1664
|
+
"elementtype": {
|
|
1665
|
+
"primitive": "string"
|
|
1666
|
+
},
|
|
1667
|
+
"kind": "array"
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
],
|
|
1672
|
+
"symbolId": "lib/cloud-assembly/validation-report-schema:CloudFormationResourceJson"
|
|
1673
|
+
},
|
|
1600
1674
|
"@aws-cdk/cloud-assembly-schema.ContainerImageAssetCacheOption": {
|
|
1601
1675
|
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
1602
1676
|
"datatype": true,
|
|
@@ -4808,7 +4882,7 @@
|
|
|
4808
4882
|
"kind": "interface",
|
|
4809
4883
|
"locationInModule": {
|
|
4810
4884
|
"filename": "lib/manifest.ts",
|
|
4811
|
-
"line":
|
|
4885
|
+
"line": 42
|
|
4812
4886
|
},
|
|
4813
4887
|
"name": "LoadManifestOptions",
|
|
4814
4888
|
"properties": [
|
|
@@ -4823,7 +4897,7 @@
|
|
|
4823
4897
|
"immutable": true,
|
|
4824
4898
|
"locationInModule": {
|
|
4825
4899
|
"filename": "lib/manifest.ts",
|
|
4826
|
-
"line":
|
|
4900
|
+
"line": 62
|
|
4827
4901
|
},
|
|
4828
4902
|
"name": "skipEnumCheck",
|
|
4829
4903
|
"optional": true,
|
|
@@ -4842,7 +4916,7 @@
|
|
|
4842
4916
|
"immutable": true,
|
|
4843
4917
|
"locationInModule": {
|
|
4844
4918
|
"filename": "lib/manifest.ts",
|
|
4845
|
-
"line":
|
|
4919
|
+
"line": 52
|
|
4846
4920
|
},
|
|
4847
4921
|
"name": "skipVersionCheck",
|
|
4848
4922
|
"optional": true,
|
|
@@ -4861,7 +4935,7 @@
|
|
|
4861
4935
|
"immutable": true,
|
|
4862
4936
|
"locationInModule": {
|
|
4863
4937
|
"filename": "lib/manifest.ts",
|
|
4864
|
-
"line":
|
|
4938
|
+
"line": 72
|
|
4865
4939
|
},
|
|
4866
4940
|
"name": "topoSort",
|
|
4867
4941
|
"optional": true,
|
|
@@ -4880,7 +4954,7 @@
|
|
|
4880
4954
|
"immutable": true,
|
|
4881
4955
|
"locationInModule": {
|
|
4882
4956
|
"filename": "lib/manifest.ts",
|
|
4883
|
-
"line":
|
|
4957
|
+
"line": 82
|
|
4884
4958
|
},
|
|
4885
4959
|
"name": "validateSchema",
|
|
4886
4960
|
"optional": true,
|
|
@@ -4907,7 +4981,7 @@
|
|
|
4907
4981
|
"kind": "class",
|
|
4908
4982
|
"locationInModule": {
|
|
4909
4983
|
"filename": "lib/manifest.ts",
|
|
4910
|
-
"line":
|
|
4984
|
+
"line": 88
|
|
4911
4985
|
},
|
|
4912
4986
|
"methods": [
|
|
4913
4987
|
{
|
|
@@ -4917,7 +4991,7 @@
|
|
|
4917
4991
|
},
|
|
4918
4992
|
"locationInModule": {
|
|
4919
4993
|
"filename": "lib/manifest.ts",
|
|
4920
|
-
"line":
|
|
4994
|
+
"line": 178
|
|
4921
4995
|
},
|
|
4922
4996
|
"name": "cliVersion",
|
|
4923
4997
|
"returns": {
|
|
@@ -4936,7 +5010,7 @@
|
|
|
4936
5010
|
},
|
|
4937
5011
|
"locationInModule": {
|
|
4938
5012
|
"filename": "lib/manifest.ts",
|
|
4939
|
-
"line":
|
|
5013
|
+
"line": 195
|
|
4940
5014
|
},
|
|
4941
5015
|
"name": "load",
|
|
4942
5016
|
"parameters": [
|
|
@@ -4961,7 +5035,7 @@
|
|
|
4961
5035
|
},
|
|
4962
5036
|
"locationInModule": {
|
|
4963
5037
|
"filename": "lib/manifest.ts",
|
|
4964
|
-
"line":
|
|
5038
|
+
"line": 104
|
|
4965
5039
|
},
|
|
4966
5040
|
"name": "loadAssemblyManifest",
|
|
4967
5041
|
"parameters": [
|
|
@@ -4996,7 +5070,7 @@
|
|
|
4996
5070
|
},
|
|
4997
5071
|
"locationInModule": {
|
|
4998
5072
|
"filename": "lib/manifest.ts",
|
|
4999
|
-
"line":
|
|
5073
|
+
"line": 126
|
|
5000
5074
|
},
|
|
5001
5075
|
"name": "loadAssetManifest",
|
|
5002
5076
|
"parameters": [
|
|
@@ -5024,7 +5098,7 @@
|
|
|
5024
5098
|
},
|
|
5025
5099
|
"locationInModule": {
|
|
5026
5100
|
"filename": "lib/manifest.ts",
|
|
5027
|
-
"line":
|
|
5101
|
+
"line": 145
|
|
5028
5102
|
},
|
|
5029
5103
|
"name": "loadIntegManifest",
|
|
5030
5104
|
"parameters": [
|
|
@@ -5045,6 +5119,34 @@
|
|
|
5045
5119
|
},
|
|
5046
5120
|
"static": true
|
|
5047
5121
|
},
|
|
5122
|
+
{
|
|
5123
|
+
"docs": {
|
|
5124
|
+
"stability": "stable",
|
|
5125
|
+
"summary": "Load and validate the policy validation report from file."
|
|
5126
|
+
},
|
|
5127
|
+
"locationInModule": {
|
|
5128
|
+
"filename": "lib/manifest.ts",
|
|
5129
|
+
"line": 164
|
|
5130
|
+
},
|
|
5131
|
+
"name": "loadValidationReport",
|
|
5132
|
+
"parameters": [
|
|
5133
|
+
{
|
|
5134
|
+
"docs": {
|
|
5135
|
+
"summary": "- path to the validation report file."
|
|
5136
|
+
},
|
|
5137
|
+
"name": "filePath",
|
|
5138
|
+
"type": {
|
|
5139
|
+
"primitive": "string"
|
|
5140
|
+
}
|
|
5141
|
+
}
|
|
5142
|
+
],
|
|
5143
|
+
"returns": {
|
|
5144
|
+
"type": {
|
|
5145
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PolicyValidationReportJson"
|
|
5146
|
+
}
|
|
5147
|
+
},
|
|
5148
|
+
"static": true
|
|
5149
|
+
},
|
|
5048
5150
|
{
|
|
5049
5151
|
"docs": {
|
|
5050
5152
|
"deprecated": "use `saveAssemblyManifest()`",
|
|
@@ -5053,7 +5155,7 @@
|
|
|
5053
5155
|
},
|
|
5054
5156
|
"locationInModule": {
|
|
5055
5157
|
"filename": "lib/manifest.ts",
|
|
5056
|
-
"line":
|
|
5158
|
+
"line": 187
|
|
5057
5159
|
},
|
|
5058
5160
|
"name": "save",
|
|
5059
5161
|
"parameters": [
|
|
@@ -5079,7 +5181,7 @@
|
|
|
5079
5181
|
},
|
|
5080
5182
|
"locationInModule": {
|
|
5081
5183
|
"filename": "lib/manifest.ts",
|
|
5082
|
-
"line":
|
|
5184
|
+
"line": 95
|
|
5083
5185
|
},
|
|
5084
5186
|
"name": "saveAssemblyManifest",
|
|
5085
5187
|
"parameters": [
|
|
@@ -5111,7 +5213,7 @@
|
|
|
5111
5213
|
},
|
|
5112
5214
|
"locationInModule": {
|
|
5113
5215
|
"filename": "lib/manifest.ts",
|
|
5114
|
-
"line":
|
|
5216
|
+
"line": 117
|
|
5115
5217
|
},
|
|
5116
5218
|
"name": "saveAssetManifest",
|
|
5117
5219
|
"parameters": [
|
|
@@ -5143,7 +5245,7 @@
|
|
|
5143
5245
|
},
|
|
5144
5246
|
"locationInModule": {
|
|
5145
5247
|
"filename": "lib/manifest.ts",
|
|
5146
|
-
"line":
|
|
5248
|
+
"line": 136
|
|
5147
5249
|
},
|
|
5148
5250
|
"name": "saveIntegManifest",
|
|
5149
5251
|
"parameters": [
|
|
@@ -5175,7 +5277,7 @@
|
|
|
5175
5277
|
},
|
|
5176
5278
|
"locationInModule": {
|
|
5177
5279
|
"filename": "lib/manifest.ts",
|
|
5178
|
-
"line":
|
|
5280
|
+
"line": 171
|
|
5179
5281
|
},
|
|
5180
5282
|
"name": "version",
|
|
5181
5283
|
"returns": {
|
|
@@ -5494,6 +5596,335 @@
|
|
|
5494
5596
|
],
|
|
5495
5597
|
"symbolId": "lib/cloud-assembly/context-queries:PluginContextQuery"
|
|
5496
5598
|
},
|
|
5599
|
+
"@aws-cdk/cloud-assembly-schema.PluginReportJson": {
|
|
5600
|
+
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
5601
|
+
"datatype": true,
|
|
5602
|
+
"docs": {
|
|
5603
|
+
"stability": "stable",
|
|
5604
|
+
"summary": "A report from a single validation plugin."
|
|
5605
|
+
},
|
|
5606
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PluginReportJson",
|
|
5607
|
+
"kind": "interface",
|
|
5608
|
+
"locationInModule": {
|
|
5609
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5610
|
+
"line": 31
|
|
5611
|
+
},
|
|
5612
|
+
"name": "PluginReportJson",
|
|
5613
|
+
"properties": [
|
|
5614
|
+
{
|
|
5615
|
+
"abstract": true,
|
|
5616
|
+
"docs": {
|
|
5617
|
+
"stability": "stable",
|
|
5618
|
+
"summary": "Whether the plugin's validation passed or failed."
|
|
5619
|
+
},
|
|
5620
|
+
"immutable": true,
|
|
5621
|
+
"locationInModule": {
|
|
5622
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5623
|
+
"line": 47
|
|
5624
|
+
},
|
|
5625
|
+
"name": "conclusion",
|
|
5626
|
+
"type": {
|
|
5627
|
+
"primitive": "string"
|
|
5628
|
+
}
|
|
5629
|
+
},
|
|
5630
|
+
{
|
|
5631
|
+
"abstract": true,
|
|
5632
|
+
"docs": {
|
|
5633
|
+
"stability": "stable",
|
|
5634
|
+
"summary": "The name of the plugin that produced this report."
|
|
5635
|
+
},
|
|
5636
|
+
"immutable": true,
|
|
5637
|
+
"locationInModule": {
|
|
5638
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5639
|
+
"line": 35
|
|
5640
|
+
},
|
|
5641
|
+
"name": "pluginName",
|
|
5642
|
+
"type": {
|
|
5643
|
+
"primitive": "string"
|
|
5644
|
+
}
|
|
5645
|
+
},
|
|
5646
|
+
{
|
|
5647
|
+
"abstract": true,
|
|
5648
|
+
"docs": {
|
|
5649
|
+
"stability": "stable",
|
|
5650
|
+
"summary": "Violations found by this plugin."
|
|
5651
|
+
},
|
|
5652
|
+
"immutable": true,
|
|
5653
|
+
"locationInModule": {
|
|
5654
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5655
|
+
"line": 59
|
|
5656
|
+
},
|
|
5657
|
+
"name": "violations",
|
|
5658
|
+
"type": {
|
|
5659
|
+
"collection": {
|
|
5660
|
+
"elementtype": {
|
|
5661
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PolicyViolationJson"
|
|
5662
|
+
},
|
|
5663
|
+
"kind": "array"
|
|
5664
|
+
}
|
|
5665
|
+
}
|
|
5666
|
+
},
|
|
5667
|
+
{
|
|
5668
|
+
"abstract": true,
|
|
5669
|
+
"docs": {
|
|
5670
|
+
"default": "- no metadata",
|
|
5671
|
+
"stability": "stable",
|
|
5672
|
+
"summary": "Additional plugin-specific metadata."
|
|
5673
|
+
},
|
|
5674
|
+
"immutable": true,
|
|
5675
|
+
"locationInModule": {
|
|
5676
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5677
|
+
"line": 54
|
|
5678
|
+
},
|
|
5679
|
+
"name": "metadata",
|
|
5680
|
+
"optional": true,
|
|
5681
|
+
"type": {
|
|
5682
|
+
"collection": {
|
|
5683
|
+
"elementtype": {
|
|
5684
|
+
"primitive": "string"
|
|
5685
|
+
},
|
|
5686
|
+
"kind": "map"
|
|
5687
|
+
}
|
|
5688
|
+
}
|
|
5689
|
+
},
|
|
5690
|
+
{
|
|
5691
|
+
"abstract": true,
|
|
5692
|
+
"docs": {
|
|
5693
|
+
"default": "- no version",
|
|
5694
|
+
"stability": "stable",
|
|
5695
|
+
"summary": "Version of the plugin that produced this report."
|
|
5696
|
+
},
|
|
5697
|
+
"immutable": true,
|
|
5698
|
+
"locationInModule": {
|
|
5699
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5700
|
+
"line": 42
|
|
5701
|
+
},
|
|
5702
|
+
"name": "pluginVersion",
|
|
5703
|
+
"optional": true,
|
|
5704
|
+
"type": {
|
|
5705
|
+
"primitive": "string"
|
|
5706
|
+
}
|
|
5707
|
+
}
|
|
5708
|
+
],
|
|
5709
|
+
"symbolId": "lib/cloud-assembly/validation-report-schema:PluginReportJson"
|
|
5710
|
+
},
|
|
5711
|
+
"@aws-cdk/cloud-assembly-schema.PolicyValidationReportJson": {
|
|
5712
|
+
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
5713
|
+
"datatype": true,
|
|
5714
|
+
"docs": {
|
|
5715
|
+
"stability": "stable",
|
|
5716
|
+
"summary": "The top-level structure of the policy validation report file."
|
|
5717
|
+
},
|
|
5718
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PolicyValidationReportJson",
|
|
5719
|
+
"kind": "interface",
|
|
5720
|
+
"locationInModule": {
|
|
5721
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5722
|
+
"line": 11
|
|
5723
|
+
},
|
|
5724
|
+
"name": "PolicyValidationReportJson",
|
|
5725
|
+
"properties": [
|
|
5726
|
+
{
|
|
5727
|
+
"abstract": true,
|
|
5728
|
+
"docs": {
|
|
5729
|
+
"stability": "stable",
|
|
5730
|
+
"summary": "Reports from all validation plugins that ran during synthesis."
|
|
5731
|
+
},
|
|
5732
|
+
"immutable": true,
|
|
5733
|
+
"locationInModule": {
|
|
5734
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5735
|
+
"line": 25
|
|
5736
|
+
},
|
|
5737
|
+
"name": "pluginReports",
|
|
5738
|
+
"type": {
|
|
5739
|
+
"collection": {
|
|
5740
|
+
"elementtype": {
|
|
5741
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PluginReportJson"
|
|
5742
|
+
},
|
|
5743
|
+
"kind": "array"
|
|
5744
|
+
}
|
|
5745
|
+
}
|
|
5746
|
+
},
|
|
5747
|
+
{
|
|
5748
|
+
"abstract": true,
|
|
5749
|
+
"docs": {
|
|
5750
|
+
"stability": "stable",
|
|
5751
|
+
"summary": "Protocol version."
|
|
5752
|
+
},
|
|
5753
|
+
"immutable": true,
|
|
5754
|
+
"locationInModule": {
|
|
5755
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5756
|
+
"line": 15
|
|
5757
|
+
},
|
|
5758
|
+
"name": "version",
|
|
5759
|
+
"type": {
|
|
5760
|
+
"primitive": "string"
|
|
5761
|
+
}
|
|
5762
|
+
},
|
|
5763
|
+
{
|
|
5764
|
+
"abstract": true,
|
|
5765
|
+
"docs": {
|
|
5766
|
+
"stability": "stable",
|
|
5767
|
+
"summary": "Report title, if present."
|
|
5768
|
+
},
|
|
5769
|
+
"immutable": true,
|
|
5770
|
+
"locationInModule": {
|
|
5771
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5772
|
+
"line": 20
|
|
5773
|
+
},
|
|
5774
|
+
"name": "title",
|
|
5775
|
+
"optional": true,
|
|
5776
|
+
"type": {
|
|
5777
|
+
"primitive": "string"
|
|
5778
|
+
}
|
|
5779
|
+
}
|
|
5780
|
+
],
|
|
5781
|
+
"symbolId": "lib/cloud-assembly/validation-report-schema:PolicyValidationReportJson"
|
|
5782
|
+
},
|
|
5783
|
+
"@aws-cdk/cloud-assembly-schema.PolicyViolationJson": {
|
|
5784
|
+
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
5785
|
+
"datatype": true,
|
|
5786
|
+
"docs": {
|
|
5787
|
+
"stability": "stable",
|
|
5788
|
+
"summary": "A single policy violation found by a validation plugin."
|
|
5789
|
+
},
|
|
5790
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.PolicyViolationJson",
|
|
5791
|
+
"kind": "interface",
|
|
5792
|
+
"locationInModule": {
|
|
5793
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5794
|
+
"line": 70
|
|
5795
|
+
},
|
|
5796
|
+
"name": "PolicyViolationJson",
|
|
5797
|
+
"properties": [
|
|
5798
|
+
{
|
|
5799
|
+
"abstract": true,
|
|
5800
|
+
"docs": {
|
|
5801
|
+
"stability": "stable",
|
|
5802
|
+
"summary": "A description of the violation."
|
|
5803
|
+
},
|
|
5804
|
+
"immutable": true,
|
|
5805
|
+
"locationInModule": {
|
|
5806
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5807
|
+
"line": 79
|
|
5808
|
+
},
|
|
5809
|
+
"name": "description",
|
|
5810
|
+
"type": {
|
|
5811
|
+
"primitive": "string"
|
|
5812
|
+
}
|
|
5813
|
+
},
|
|
5814
|
+
{
|
|
5815
|
+
"abstract": true,
|
|
5816
|
+
"docs": {
|
|
5817
|
+
"stability": "stable",
|
|
5818
|
+
"summary": "The name of the rule that was violated."
|
|
5819
|
+
},
|
|
5820
|
+
"immutable": true,
|
|
5821
|
+
"locationInModule": {
|
|
5822
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5823
|
+
"line": 74
|
|
5824
|
+
},
|
|
5825
|
+
"name": "ruleName",
|
|
5826
|
+
"type": {
|
|
5827
|
+
"primitive": "string"
|
|
5828
|
+
}
|
|
5829
|
+
},
|
|
5830
|
+
{
|
|
5831
|
+
"abstract": true,
|
|
5832
|
+
"docs": {
|
|
5833
|
+
"stability": "stable",
|
|
5834
|
+
"summary": "The severity of the violation."
|
|
5835
|
+
},
|
|
5836
|
+
"immutable": true,
|
|
5837
|
+
"locationInModule": {
|
|
5838
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5839
|
+
"line": 91
|
|
5840
|
+
},
|
|
5841
|
+
"name": "severity",
|
|
5842
|
+
"type": {
|
|
5843
|
+
"primitive": "string"
|
|
5844
|
+
}
|
|
5845
|
+
},
|
|
5846
|
+
{
|
|
5847
|
+
"abstract": true,
|
|
5848
|
+
"docs": {
|
|
5849
|
+
"stability": "stable",
|
|
5850
|
+
"summary": "Constructs that violated the rule."
|
|
5851
|
+
},
|
|
5852
|
+
"immutable": true,
|
|
5853
|
+
"locationInModule": {
|
|
5854
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5855
|
+
"line": 108
|
|
5856
|
+
},
|
|
5857
|
+
"name": "violatingConstructs",
|
|
5858
|
+
"type": {
|
|
5859
|
+
"collection": {
|
|
5860
|
+
"elementtype": {
|
|
5861
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.ViolatingConstructJson"
|
|
5862
|
+
},
|
|
5863
|
+
"kind": "array"
|
|
5864
|
+
}
|
|
5865
|
+
}
|
|
5866
|
+
},
|
|
5867
|
+
{
|
|
5868
|
+
"abstract": true,
|
|
5869
|
+
"docs": {
|
|
5870
|
+
"stability": "stable",
|
|
5871
|
+
"summary": "If the plugin wants to report using a non-standard severity, put it here."
|
|
5872
|
+
},
|
|
5873
|
+
"immutable": true,
|
|
5874
|
+
"locationInModule": {
|
|
5875
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5876
|
+
"line": 96
|
|
5877
|
+
},
|
|
5878
|
+
"name": "customSeverity",
|
|
5879
|
+
"optional": true,
|
|
5880
|
+
"type": {
|
|
5881
|
+
"primitive": "string"
|
|
5882
|
+
}
|
|
5883
|
+
},
|
|
5884
|
+
{
|
|
5885
|
+
"abstract": true,
|
|
5886
|
+
"docs": {
|
|
5887
|
+
"default": "- no metadata",
|
|
5888
|
+
"stability": "stable",
|
|
5889
|
+
"summary": "Additional rule-specific metadata."
|
|
5890
|
+
},
|
|
5891
|
+
"immutable": true,
|
|
5892
|
+
"locationInModule": {
|
|
5893
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5894
|
+
"line": 103
|
|
5895
|
+
},
|
|
5896
|
+
"name": "ruleMetadata",
|
|
5897
|
+
"optional": true,
|
|
5898
|
+
"type": {
|
|
5899
|
+
"collection": {
|
|
5900
|
+
"elementtype": {
|
|
5901
|
+
"primitive": "string"
|
|
5902
|
+
},
|
|
5903
|
+
"kind": "map"
|
|
5904
|
+
}
|
|
5905
|
+
}
|
|
5906
|
+
},
|
|
5907
|
+
{
|
|
5908
|
+
"abstract": true,
|
|
5909
|
+
"docs": {
|
|
5910
|
+
"default": "- no fix provided",
|
|
5911
|
+
"stability": "stable",
|
|
5912
|
+
"summary": "How to fix the violation."
|
|
5913
|
+
},
|
|
5914
|
+
"immutable": true,
|
|
5915
|
+
"locationInModule": {
|
|
5916
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
5917
|
+
"line": 86
|
|
5918
|
+
},
|
|
5919
|
+
"name": "suggestedFix",
|
|
5920
|
+
"optional": true,
|
|
5921
|
+
"type": {
|
|
5922
|
+
"primitive": "string"
|
|
5923
|
+
}
|
|
5924
|
+
}
|
|
5925
|
+
],
|
|
5926
|
+
"symbolId": "lib/cloud-assembly/validation-report-schema:PolicyViolationJson"
|
|
5927
|
+
},
|
|
5497
5928
|
"@aws-cdk/cloud-assembly-schema.PropertyMutationMetadataEntry": {
|
|
5498
5929
|
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
5499
5930
|
"datatype": true,
|
|
@@ -6097,6 +6528,119 @@
|
|
|
6097
6528
|
],
|
|
6098
6529
|
"symbolId": "lib/cloud-assembly/artifact-schema:UnconfiguredBehavesLike"
|
|
6099
6530
|
},
|
|
6531
|
+
"@aws-cdk/cloud-assembly-schema.ViolatingConstructJson": {
|
|
6532
|
+
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
6533
|
+
"datatype": true,
|
|
6534
|
+
"docs": {
|
|
6535
|
+
"stability": "stable",
|
|
6536
|
+
"summary": "A construct that violated a policy rule."
|
|
6537
|
+
},
|
|
6538
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.ViolatingConstructJson",
|
|
6539
|
+
"kind": "interface",
|
|
6540
|
+
"locationInModule": {
|
|
6541
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6542
|
+
"line": 122
|
|
6543
|
+
},
|
|
6544
|
+
"name": "ViolatingConstructJson",
|
|
6545
|
+
"properties": [
|
|
6546
|
+
{
|
|
6547
|
+
"abstract": true,
|
|
6548
|
+
"docs": {
|
|
6549
|
+
"default": "- no construct path",
|
|
6550
|
+
"stability": "stable",
|
|
6551
|
+
"summary": "The construct path as defined in the application."
|
|
6552
|
+
},
|
|
6553
|
+
"immutable": true,
|
|
6554
|
+
"locationInModule": {
|
|
6555
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6556
|
+
"line": 128
|
|
6557
|
+
},
|
|
6558
|
+
"name": "constructPath",
|
|
6559
|
+
"type": {
|
|
6560
|
+
"primitive": "string"
|
|
6561
|
+
}
|
|
6562
|
+
},
|
|
6563
|
+
{
|
|
6564
|
+
"abstract": true,
|
|
6565
|
+
"docs": {
|
|
6566
|
+
"stability": "stable",
|
|
6567
|
+
"summary": "If this construct violation regards a CloudFormation resource, a reference to the resource details."
|
|
6568
|
+
},
|
|
6569
|
+
"immutable": true,
|
|
6570
|
+
"locationInModule": {
|
|
6571
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6572
|
+
"line": 149
|
|
6573
|
+
},
|
|
6574
|
+
"name": "cloudFormationResource",
|
|
6575
|
+
"optional": true,
|
|
6576
|
+
"type": {
|
|
6577
|
+
"fqn": "@aws-cdk/cloud-assembly-schema.CloudFormationResourceJson"
|
|
6578
|
+
}
|
|
6579
|
+
},
|
|
6580
|
+
{
|
|
6581
|
+
"abstract": true,
|
|
6582
|
+
"docs": {
|
|
6583
|
+
"default": "- no construct info",
|
|
6584
|
+
"stability": "stable",
|
|
6585
|
+
"summary": "The fully qualified name of the construct class (includes the library name)."
|
|
6586
|
+
},
|
|
6587
|
+
"immutable": true,
|
|
6588
|
+
"locationInModule": {
|
|
6589
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6590
|
+
"line": 135
|
|
6591
|
+
},
|
|
6592
|
+
"name": "constructFqn",
|
|
6593
|
+
"optional": true,
|
|
6594
|
+
"type": {
|
|
6595
|
+
"primitive": "string"
|
|
6596
|
+
}
|
|
6597
|
+
},
|
|
6598
|
+
{
|
|
6599
|
+
"abstract": true,
|
|
6600
|
+
"docs": {
|
|
6601
|
+
"default": "- no version info",
|
|
6602
|
+
"remarks": "The library name is the first component of the construct FQN.",
|
|
6603
|
+
"stability": "stable",
|
|
6604
|
+
"summary": "The version of the library that contains this construct."
|
|
6605
|
+
},
|
|
6606
|
+
"immutable": true,
|
|
6607
|
+
"locationInModule": {
|
|
6608
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6609
|
+
"line": 144
|
|
6610
|
+
},
|
|
6611
|
+
"name": "libraryVersion",
|
|
6612
|
+
"optional": true,
|
|
6613
|
+
"type": {
|
|
6614
|
+
"primitive": "string"
|
|
6615
|
+
}
|
|
6616
|
+
},
|
|
6617
|
+
{
|
|
6618
|
+
"abstract": true,
|
|
6619
|
+
"docs": {
|
|
6620
|
+
"default": "- No stack traces",
|
|
6621
|
+
"remarks": "This can be all the stack traces where a violating property got its value,\nor just the construct creation stack trace.\n\nEvery element of the array is a stack trace, where each stack trace is a `\\n`-delimited string.",
|
|
6622
|
+
"stability": "stable",
|
|
6623
|
+
"summary": "Stack traces associated with this violation."
|
|
6624
|
+
},
|
|
6625
|
+
"immutable": true,
|
|
6626
|
+
"locationInModule": {
|
|
6627
|
+
"filename": "lib/cloud-assembly/validation-report-schema.ts",
|
|
6628
|
+
"line": 161
|
|
6629
|
+
},
|
|
6630
|
+
"name": "stackTraces",
|
|
6631
|
+
"optional": true,
|
|
6632
|
+
"type": {
|
|
6633
|
+
"collection": {
|
|
6634
|
+
"elementtype": {
|
|
6635
|
+
"primitive": "string"
|
|
6636
|
+
},
|
|
6637
|
+
"kind": "array"
|
|
6638
|
+
}
|
|
6639
|
+
}
|
|
6640
|
+
}
|
|
6641
|
+
],
|
|
6642
|
+
"symbolId": "lib/cloud-assembly/validation-report-schema:ViolatingConstructJson"
|
|
6643
|
+
},
|
|
6100
6644
|
"@aws-cdk/cloud-assembly-schema.VpcContextQuery": {
|
|
6101
6645
|
"assembly": "@aws-cdk/cloud-assembly-schema",
|
|
6102
6646
|
"datatype": true,
|
|
@@ -6198,6 +6742,6 @@
|
|
|
6198
6742
|
"symbolId": "lib/cloud-assembly/context-queries:VpcContextQuery"
|
|
6199
6743
|
}
|
|
6200
6744
|
},
|
|
6201
|
-
"version": "53.
|
|
6202
|
-
"fingerprint": "
|
|
6745
|
+
"version": "53.28.0",
|
|
6746
|
+
"fingerprint": "4Lk7tYymk7iomvnWiv82mnaWatiXIFP/Zt4rUApYc0Y="
|
|
6203
6747
|
}
|
package/cli-version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"2.
|
|
1
|
+
{"version":"2.1125.0"}
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./metadata-schema"), exports);
|
|
|
19
19
|
__exportStar(require("./artifact-schema"), exports);
|
|
20
20
|
__exportStar(require("./context-queries"), exports);
|
|
21
21
|
__exportStar(require("./interfaces"), exports);
|
|
22
|
-
|
|
22
|
+
__exportStar(require("./validation-report-schema"), exports);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDO0FBQ2xDLCtDQUE2QjtBQUM3Qiw2REFBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL21ldGFkYXRhLXNjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0aW9uLXJlcG9ydC1zY2hlbWEnO1xuIl19
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON schema for validation-report.json
|
|
3
|
+
*
|
|
4
|
+
* This file is written to the cloud assembly directory by aws-cdk-lib
|
|
5
|
+
* during synthesis and consumed by the CDK CLI's validate command.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The top-level structure of the policy validation report file.
|
|
9
|
+
*/
|
|
10
|
+
export interface PolicyValidationReportJson {
|
|
11
|
+
/**
|
|
12
|
+
* Protocol version
|
|
13
|
+
*/
|
|
14
|
+
readonly version: string;
|
|
15
|
+
/**
|
|
16
|
+
* Report title, if present.
|
|
17
|
+
*/
|
|
18
|
+
readonly title?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Reports from all validation plugins that ran during synthesis.
|
|
21
|
+
*/
|
|
22
|
+
readonly pluginReports: PluginReportJson[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A report from a single validation plugin.
|
|
26
|
+
*/
|
|
27
|
+
export interface PluginReportJson {
|
|
28
|
+
/**
|
|
29
|
+
* The name of the plugin that produced this report.
|
|
30
|
+
*/
|
|
31
|
+
readonly pluginName: string;
|
|
32
|
+
/**
|
|
33
|
+
* Version of the plugin that produced this report.
|
|
34
|
+
*
|
|
35
|
+
* @default - no version
|
|
36
|
+
*/
|
|
37
|
+
readonly pluginVersion?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the plugin's validation passed or failed.
|
|
40
|
+
*/
|
|
41
|
+
readonly conclusion: PolicyValidationReportConclusion;
|
|
42
|
+
/**
|
|
43
|
+
* Additional plugin-specific metadata.
|
|
44
|
+
*
|
|
45
|
+
* @default - no metadata
|
|
46
|
+
*/
|
|
47
|
+
readonly metadata?: {
|
|
48
|
+
readonly [key: string]: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Violations found by this plugin.
|
|
52
|
+
*/
|
|
53
|
+
readonly violations: PolicyViolationJson[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The final conclusion of a validation report.
|
|
57
|
+
*/
|
|
58
|
+
export type PolicyValidationReportConclusion = 'success' | 'failure';
|
|
59
|
+
/**
|
|
60
|
+
* A single policy violation found by a validation plugin.
|
|
61
|
+
*/
|
|
62
|
+
export interface PolicyViolationJson {
|
|
63
|
+
/**
|
|
64
|
+
* The name of the rule that was violated.
|
|
65
|
+
*/
|
|
66
|
+
readonly ruleName: string;
|
|
67
|
+
/**
|
|
68
|
+
* A description of the violation.
|
|
69
|
+
*/
|
|
70
|
+
readonly description: string;
|
|
71
|
+
/**
|
|
72
|
+
* How to fix the violation.
|
|
73
|
+
*
|
|
74
|
+
* @default - no fix provided
|
|
75
|
+
*/
|
|
76
|
+
readonly suggestedFix?: string;
|
|
77
|
+
/**
|
|
78
|
+
* The severity of the violation.
|
|
79
|
+
*/
|
|
80
|
+
readonly severity: PolicyViolationSeverity;
|
|
81
|
+
/**
|
|
82
|
+
* If the plugin wants to report using a non-standard severity, put it here
|
|
83
|
+
*/
|
|
84
|
+
readonly customSeverity?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Additional rule-specific metadata.
|
|
87
|
+
*
|
|
88
|
+
* @default - no metadata
|
|
89
|
+
*/
|
|
90
|
+
readonly ruleMetadata?: {
|
|
91
|
+
readonly [key: string]: string;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Constructs that violated the rule.
|
|
95
|
+
*/
|
|
96
|
+
readonly violatingConstructs: ViolatingConstructJson[];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The severity of a policy violation.
|
|
100
|
+
*
|
|
101
|
+
* If you need to use a severity level that doesn't exist as a static member,
|
|
102
|
+
* use `custom`.
|
|
103
|
+
*/
|
|
104
|
+
export type PolicyViolationSeverity = 'fatal' | 'error' | 'warning' | 'info' | 'custom';
|
|
105
|
+
/**
|
|
106
|
+
* A construct that violated a policy rule.
|
|
107
|
+
*/
|
|
108
|
+
export interface ViolatingConstructJson {
|
|
109
|
+
/**
|
|
110
|
+
* The construct path as defined in the application.
|
|
111
|
+
*
|
|
112
|
+
* @default - no construct path
|
|
113
|
+
*/
|
|
114
|
+
readonly constructPath: string;
|
|
115
|
+
/**
|
|
116
|
+
* The fully qualified name of the construct class (includes the library name)
|
|
117
|
+
*
|
|
118
|
+
* @default - no construct info
|
|
119
|
+
*/
|
|
120
|
+
readonly constructFqn?: string;
|
|
121
|
+
/**
|
|
122
|
+
* The version of the library that contains this construct.
|
|
123
|
+
*
|
|
124
|
+
* The library name is the first component of the construct FQN.
|
|
125
|
+
*
|
|
126
|
+
* @default - no version info
|
|
127
|
+
*/
|
|
128
|
+
readonly libraryVersion?: string;
|
|
129
|
+
/**
|
|
130
|
+
* If this construct violation regards a CloudFormation resource, a reference to the resource details
|
|
131
|
+
*/
|
|
132
|
+
readonly cloudFormationResource?: CloudFormationResourceJson;
|
|
133
|
+
/**
|
|
134
|
+
* Stack traces associated with this violation
|
|
135
|
+
*
|
|
136
|
+
* This can be all the stack traces where a violating property got its value,
|
|
137
|
+
* or just the construct creation stack trace.
|
|
138
|
+
*
|
|
139
|
+
* Every element of the array is a stack trace, where each stack trace is a `\n`-delimited string.
|
|
140
|
+
*
|
|
141
|
+
* @default - No stack traces
|
|
142
|
+
*/
|
|
143
|
+
readonly stackTraces?: string[];
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* A node in the construct creation stack trace.
|
|
147
|
+
*/
|
|
148
|
+
export interface CloudFormationResourceJson {
|
|
149
|
+
/**
|
|
150
|
+
* The path to the CloudFormation template containing this resource.
|
|
151
|
+
*/
|
|
152
|
+
readonly templatePath: string;
|
|
153
|
+
/**
|
|
154
|
+
* The logical ID of the resource in the CloudFormation template.
|
|
155
|
+
*/
|
|
156
|
+
readonly logicalId: string;
|
|
157
|
+
/**
|
|
158
|
+
* Properties within the construct where the violation was detected.
|
|
159
|
+
*
|
|
160
|
+
* Either a single component, in which case it regards a top-level property
|
|
161
|
+
* name, or a JSON path (starting with `$.`) to indicate a deeper property.
|
|
162
|
+
*
|
|
163
|
+
* @default - no locations
|
|
164
|
+
*/
|
|
165
|
+
readonly propertyPaths?: string[];
|
|
166
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* JSON schema for validation-report.json
|
|
4
|
+
*
|
|
5
|
+
* This file is written to the cloud assembly directory by aws-cdk-lib
|
|
6
|
+
* during synthesis and consumed by the CDK CLI's validate command.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1yZXBvcnQtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1yZXBvcnQtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHZhbGlkYXRpb24tcmVwb3J0Lmpzb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgd3JpdHRlbiB0byB0aGUgY2xvdWQgYXNzZW1ibHkgZGlyZWN0b3J5IGJ5IGF3cy1jZGstbGliXG4gKiBkdXJpbmcgc3ludGhlc2lzIGFuZCBjb25zdW1lZCBieSB0aGUgQ0RLIENMSSdzIHZhbGlkYXRlIGNvbW1hbmQuXG4gKi9cblxuLyoqXG4gKiBUaGUgdG9wLWxldmVsIHN0cnVjdHVyZSBvZiB0aGUgcG9saWN5IHZhbGlkYXRpb24gcmVwb3J0IGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5VmFsaWRhdGlvblJlcG9ydEpzb24ge1xuICAvKipcbiAgICogUHJvdG9jb2wgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvcnQgdGl0bGUsIGlmIHByZXNlbnQuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVwb3J0cyBmcm9tIGFsbCB2YWxpZGF0aW9uIHBsdWdpbnMgdGhhdCByYW4gZHVyaW5nIHN5bnRoZXNpcy5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblJlcG9ydHM6IFBsdWdpblJlcG9ydEpzb25bXTtcbn1cblxuLyoqXG4gKiBBIHJlcG9ydCBmcm9tIGEgc2luZ2xlIHZhbGlkYXRpb24gcGx1Z2luLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJlcG9ydEpzb24ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IHByb2R1Y2VkIHRoaXMgcmVwb3J0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBwbHVnaW4gdGhhdCBwcm9kdWNlZCB0aGlzIHJlcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwbHVnaW4ncyB2YWxpZGF0aW9uIHBhc3NlZCBvciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBjb25jbHVzaW9uOiBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0Q29uY2x1c2lvbjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwbHVnaW4tc3BlY2lmaWMgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGFcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmlvbGF0aW9ucyBmb3VuZCBieSB0aGlzIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHZpb2xhdGlvbnM6IFBvbGljeVZpb2xhdGlvbkpzb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgZmluYWwgY29uY2x1c2lvbiBvZiBhIHZhbGlkYXRpb24gcmVwb3J0LlxuICovXG5leHBvcnQgdHlwZSBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0Q29uY2x1c2lvbiA9ICdzdWNjZXNzJyB8ICdmYWlsdXJlJztcblxuLyoqXG4gKiBBIHNpbmdsZSBwb2xpY3kgdmlvbGF0aW9uIGZvdW5kIGJ5IGEgdmFsaWRhdGlvbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9saWN5VmlvbGF0aW9uSnNvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcnVsZSB0aGF0IHdhcyB2aW9sYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIHZpb2xhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyB0byBmaXggdGhlIHZpb2xhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmaXggcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHN1Z2dlc3RlZEZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldmVyaXR5IG9mIHRoZSB2aW9sYXRpb24uXG4gICAqL1xuICByZWFkb25seSBzZXZlcml0eTogUG9saWN5VmlvbGF0aW9uU2V2ZXJpdHk7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBwbHVnaW4gd2FudHMgdG8gcmVwb3J0IHVzaW5nIGEgbm9uLXN0YW5kYXJkIHNldmVyaXR5LCBwdXQgaXQgaGVyZVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tU2V2ZXJpdHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcnVsZS1zcGVjaWZpYyBtZXRhZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZU1ldGFkYXRhPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGF0IHZpb2xhdGVkIHRoZSBydWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmlvbGF0aW5nQ29uc3RydWN0czogVmlvbGF0aW5nQ29uc3RydWN0SnNvbltdO1xufVxuXG4vKipcbiAqIFRoZSBzZXZlcml0eSBvZiBhIHBvbGljeSB2aW9sYXRpb24uXG4gKlxuICogSWYgeW91IG5lZWQgdG8gdXNlIGEgc2V2ZXJpdHkgbGV2ZWwgdGhhdCBkb2Vzbid0IGV4aXN0IGFzIGEgc3RhdGljIG1lbWJlcixcbiAqIHVzZSBgY3VzdG9tYC5cbiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5VmlvbGF0aW9uU2V2ZXJpdHkgPSAnZmF0YWwnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdjdXN0b20nO1xuXG4vKipcbiAqIEEgY29uc3RydWN0IHRoYXQgdmlvbGF0ZWQgYSBwb2xpY3kgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uIHtcbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3QgcGF0aCBhcyBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25zdHJ1Y3QgcGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGNvbnN0cnVjdCBjbGFzcyAoaW5jbHVkZXMgdGhlIGxpYnJhcnkgbmFtZSlcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25zdHJ1Y3QgaW5mb1xuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0RnFuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSB0aGF0IGNvbnRhaW5zIHRoaXMgY29uc3RydWN0LlxuICAgKlxuICAgKiBUaGUgbGlicmFyeSBuYW1lIGlzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YgdGhlIGNvbnN0cnVjdCBGUU4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdmVyc2lvbiBpbmZvXG4gICAqL1xuICByZWFkb25seSBsaWJyYXJ5VmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBjb25zdHJ1Y3QgdmlvbGF0aW9uIHJlZ2FyZHMgYSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSwgYSByZWZlcmVuY2UgdG8gdGhlIHJlc291cmNlIGRldGFpbHNcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uUmVzb3VyY2U/OiBDbG91ZEZvcm1hdGlvblJlc291cmNlSnNvbjtcblxuICAvKipcbiAgICogU3RhY2sgdHJhY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpb2xhdGlvblxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbGwgdGhlIHN0YWNrIHRyYWNlcyB3aGVyZSBhIHZpb2xhdGluZyBwcm9wZXJ0eSBnb3QgaXRzIHZhbHVlLFxuICAgKiBvciBqdXN0IHRoZSBjb25zdHJ1Y3QgY3JlYXRpb24gc3RhY2sgdHJhY2UuXG4gICAqXG4gICAqIEV2ZXJ5IGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIGEgc3RhY2sgdHJhY2UsIHdoZXJlIGVhY2ggc3RhY2sgdHJhY2UgaXMgYSBgXFxuYC1kZWxpbWl0ZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHN0YWNrIHRyYWNlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIG5vZGUgaW4gdGhlIGNvbnN0cnVjdCBjcmVhdGlvbiBzdGFjayB0cmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZvcm1hdGlvblJlc291cmNlSnNvbiB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgY29udGFpbmluZyB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUHJvcGVydGllcyB3aXRoaW4gdGhlIGNvbnN0cnVjdCB3aGVyZSB0aGUgdmlvbGF0aW9uIHdhcyBkZXRlY3RlZC5cbiAgICpcbiAgICogRWl0aGVyIGEgc2luZ2xlIGNvbXBvbmVudCwgaW4gd2hpY2ggY2FzZSBpdCByZWdhcmRzIGEgdG9wLWxldmVsIHByb3BlcnR5XG4gICAqIG5hbWUsIG9yIGEgSlNPTiBwYXRoIChzdGFydGluZyB3aXRoIGAkLmApIHRvIGluZGljYXRlIGEgZGVlcGVyIHByb3BlcnR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxvY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlQYXRocz86IHN0cmluZ1tdO1xufVxuIl19
|
package/lib/manifest.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type * as assets from './assets';
|
|
2
2
|
import * as assembly from './cloud-assembly';
|
|
3
|
+
import type * as validation from './cloud-assembly/validation-report-schema';
|
|
3
4
|
import type * as integ from './integ-tests';
|
|
4
5
|
export declare const VERSION_MISMATCH: string;
|
|
5
6
|
/**
|
|
@@ -87,6 +88,12 @@ export declare abstract class Manifest {
|
|
|
87
88
|
* @param filePath - path to the manifest file.
|
|
88
89
|
*/
|
|
89
90
|
static loadIntegManifest(filePath: string): integ.IntegManifest;
|
|
91
|
+
/**
|
|
92
|
+
* Load and validate the policy validation report from file.
|
|
93
|
+
*
|
|
94
|
+
* @param filePath - path to the validation report file.
|
|
95
|
+
*/
|
|
96
|
+
static loadValidationReport(filePath: string): validation.PolicyValidationReportJson;
|
|
90
97
|
/**
|
|
91
98
|
* Fetch the current schema version number.
|
|
92
99
|
*/
|
package/lib/manifest.js
CHANGED
|
@@ -24,6 +24,7 @@ const CLI_VERSION = require("../cli-version.json");
|
|
|
24
24
|
const ASSETS_SCHEMA = require("../schema/assets.schema.json");
|
|
25
25
|
const ASSEMBLY_SCHEMA = require("../schema/cloud-assembly.schema.json");
|
|
26
26
|
const INTEG_SCHEMA = require("../schema/integ.schema.json");
|
|
27
|
+
const VALIDATION_REPORT_SCHEMA = require("../schema/validation-report.schema.json");
|
|
27
28
|
/**
|
|
28
29
|
* Version is shared for both manifests
|
|
29
30
|
*/
|
|
@@ -92,6 +93,14 @@ class Manifest {
|
|
|
92
93
|
testCases: manifest.testCases ?? [],
|
|
93
94
|
};
|
|
94
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Load and validate the policy validation report from file.
|
|
98
|
+
*
|
|
99
|
+
* @param filePath - path to the validation report file.
|
|
100
|
+
*/
|
|
101
|
+
static loadValidationReport(filePath) {
|
|
102
|
+
return Manifest.loadManifest(filePath, VALIDATION_REPORT_SCHEMA);
|
|
103
|
+
}
|
|
95
104
|
/**
|
|
96
105
|
* Fetch the current schema version number.
|
|
97
106
|
*/
|
|
@@ -258,8 +267,8 @@ class Manifest {
|
|
|
258
267
|
}
|
|
259
268
|
exports.Manifest = Manifest;
|
|
260
269
|
_a = JSII_RTTI_SYMBOL_1;
|
|
261
|
-
Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "53.
|
|
270
|
+
Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "53.28.0" };
|
|
262
271
|
function stripEnumErrors(errors) {
|
|
263
272
|
return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema));
|
|
264
273
|
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakY7Ozs7OztHQU1HO0FBQ0gsbURBQW9EO0FBRXBELDhEQUErRDtBQUUvRCx3RUFBeUU7QUFFekUsNERBQTZEO0FBRTdEOztHQUVHO0FBQ0gseURBQTBEO0FBZ0QxRDs7R0FFRztBQUNILE1BQXNCLFFBQVE7SUFDNUI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsUUFBbUMsRUFBRSxRQUFnQjtRQUN0RixRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQ2hDLFFBQWdCLEVBQ2hCLE9BQTZCO1FBRTdCLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjtRQUM5RSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4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QyxJQUFJLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzs7QUFsUkgsNEJBbVJDOzs7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUFvQztJQUMzRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMganNvbnNjaGVtYSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgdHlwZSAqIGFzIGludGVnIGZyb20gJy4vaW50ZWctdGVzdHMnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5cbi8vIHRoaXMgcHJlZml4IGlzIHVzZWQgYnkgdGhlIENMSSB0byBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yLlxuLy8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGluc3RydWN0IHRoZSB1c2VyIHRvIHVwZ3JhZGUgaGlzIENMSS5cbi8vIHNlZSBleGVjLnRzI2NyZWF0ZUFzc2VtYmx5XG5leHBvcnQgY29uc3QgVkVSU0lPTl9NSVNNQVRDSDogc3RyaW5nID0gJ0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoJztcblxuLyoqXG4gKiBDTEkgdmVyc2lvbiBpcyBjcmVhdGVkIGF0IGJ1aWxkIGFuZCByZWxlYXNlIHRpbWVcbiAqXG4gKiBJdCBuZWVkcyB0byBiZSAuZ2l0aWdub3JlJ2QsIG90aGVyd2lzZSB0aGUgcHJvamVuICdubyB1bmNvbW1pdHRlZFxuICogY2hhbmdlcycgc2VsZi1jaGVjayB3aWxsIGZhaWwsIHdoaWNoIG1lYW5zIGl0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZFxuICogYXQgYnVpbGQgdGltZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmltcG9ydCBDTElfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2NsaS12ZXJzaW9uLmpzb24nKTtcblxuaW1wb3J0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBBU1NFTUJMWV9TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuaW1wb3J0IElOVEVHX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9pbnRlZy5zY2hlbWEuanNvbicpO1xuXG4vKipcbiAqIFZlcnNpb24gaXMgc2hhcmVkIGZvciBib3RoIG1hbmlmZXN0c1xuICovXG5pbXBvcnQgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9zY2hlbWEvdmVyc2lvbi5qc29uJyk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGxvYWRNYW5pZmVzdCBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkTWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNraXAgdGhlIHZlcnNpb24gY2hlY2tcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgYSBuZXdlciBjbG91ZCBhc3NlbWJseSB0aGFuIHRoZSBDWCBBUEkgaXMgZGVzaWduZWRcbiAgICogdG8gc3VwcG9ydCwgYW5kIHlvdXIgYXBwbGljYXRpb24gbWF5IG5vdCBiZSBhd2FyZSBvZiBhbGwgZmVhdHVyZXMgdGhhdCBpbiB1c2VcbiAgICogaW4gdGhlIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZlcnNpb25DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgZW51bSBjaGVja3NcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgZW51bSB2YWx1ZXMgeW91IGRvbid0IGtub3cgYWJvdXQgeWV0LiBNYWtlIHN1cmUgdG8gYWx3YXlzXG4gICAqIGNoZWNrIHRoZSB2YWx1ZXMgb2YgZW51bXMgeW91IGVuY291bnRlciBpbiB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwRW51bUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9wb2xvZ2ljYWxseSBzb3J0IGFsbCBhcnRpZmFjdHNcbiAgICpcbiAgICogVGhpcyBwYXJhbWV0ZXIgaXMgb25seSByZXNwZWN0ZWQgYnkgdGhlIGNvbnN0cnVjdG9yIG9mIGBDbG91ZEFzc2VtYmx5YC4gVGhlXG4gICAqIHByb3BlcnR5IGxpdmVzIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRvcG9Tb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGZpbGUgYWNjb3JkaW5nIHRvIHRoZSBkZWNsYXJlZCBKU09OIFNjaGVtYVxuICAgKlxuICAgKiBCZSBhd2FyZSB0aGF0IEpTT04gU2NoZW1hIHZhbGlkYXRpb24gaGFzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgY29zdFxuICAgKiAoYWJvdXQgMTB4IG92ZXIgbm90IHZhbGlkYXRpbmcpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZSwgdW5sZXNzICRURVNUSU5HX0NESyBpcyBzZXQgdG8gJzEnXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVNjaGVtYT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NlbWJseU1hbmlmZXN0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMsXG4gICk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIHJldHVybiBNYW5pZmVzdC5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZXRNYW5pZmVzdChtYW5pZmVzdDogYXNzZXRzLkFzc2V0TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2V0TWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2V0cy5Bc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBpbnRlZyBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUludGVnTWFuaWZlc3QobWFuaWZlc3Q6IGludGVnLkludGVnTWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBJTlRFR19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgaW50ZWcgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkSW50ZWdNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogaW50ZWcuSW50ZWdNYW5pZmVzdCB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcblxuICAgIC8vIEFkZGluZyB0eXBpbmcgdG8gYHZhbGlkYXRlKClgIGxlZCB0byBgbG9hZE1hbmlmZXN0KClgIHRvIHByb3Blcmx5IGluZmVyXG4gICAgLy8gaXRzIHJldHVybiB0eXBlLCB3aGljaCBpbmRpY2F0ZWQgdGhhdCB0aGUgcmV0dXJuIHR5cGUgb2YgdGhpc1xuICAgIC8vIGZ1bmN0aW9uIG1heSBiZSBhIGxpZS4gSSBjb3VsZCBjaGFuZ2UgdGhlIHNjaGVtYSB0byBtYWtlIGB0ZXN0Q2FzZXNgXG4gICAgLy8gb3B0aW9uYWwsIGJ1dCB0aGF0IHdpbGwgYnVtcCB0aGUgbWFqb3IgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UgYW5kIElcbiAgICAvLyBkb24ndCB3YW50IHRvIGRvIHRoYXQuIFNvIGluc3RlYWQsIGp1c3QgbWFrZSBzdXJlIGB0ZXN0Q2FzZXNgIGlzIGFsd2F5cyB0aGVyZS5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICB0ZXN0Q2FzZXM6IChtYW5pZmVzdCBhcyBhbnkpLnRlc3RDYXNlcyA/PyBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBjdXJyZW50IHNjaGVtYSB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtTQ0hFTUFfVkVSU0lPTi5yZXZpc2lvbn0uMC4wYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENMSSB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgdGhpcyBDbG91ZCBBc3NlbWJseSBTY2hlbWEgdmVyc2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlWZXJzaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmVyc2lvbiA9IENMSV9WRVJTSU9OLnZlcnNpb247XG4gICAgcmV0dXJuIHZlcnNpb24gPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgbG9hZEFzc2VtYmx5TWFuaWZlc3QoKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZChmaWxlUGF0aDogc3RyaW5nKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEFzc2VtYmx5TWFuaWZlc3QoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGUoXG4gICAgbWFuaWZlc3Q6IGFueSxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApOiBhc3NlcnRzIG1hbmlmZXN0IGlzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgbW9yZSBzcGVjaWZpYyBlcnJvciB0byB0aHJvdyB0aGFuIHRoZSBnZW5lcmljIG9uZSBiZWxvdywgbWFrZSBzdXJlIHRvIGFkZCB0aGF0IGluZm8uXG4gICAgICBjb25zdCBjbGlWZXJzaW9uID0gKG1hbmlmZXN0IGFzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpLm1pbmltdW1DbGlWZXJzaW9uO1xuICAgICAgbGV0IGNsaVdhcm5pbmcgPSAnJztcbiAgICAgIGlmIChjbGlWZXJzaW9uKSB7XG4gICAgICAgIGNsaVdhcm5pbmcgPSBgLiBZb3UgbmVlZCBhdCBsZWFzdCBDTEkgdmVyc2lvbiAke2NsaVZlcnNpb259IHRvIHJlYWQgdGhpcyBtYW5pZmVzdC5gO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH0ke2NsaVdhcm5pbmd9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnZhbGlkYXRlU2NoZW1hID8/IChwcm9jZXNzLmVudi5URVNUSU5HX0NESyA9PT0gJzEnKSkge1xuICAgICAgLy8gbm93IHZhbGlkYXRlIHRoZSBmb3JtYXQgaXMgZ29vZC5cbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IG5ldyBqc29uc2NoZW1hLlZhbGlkYXRvcigpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuICAgICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgICAgcHJlVmFsaWRhdGVQcm9wZXJ0eTogTWFuaWZlc3QudmFsaWRhdGVBc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgICBpZiAob3B0aW9ucz8uc2tpcEVudW1DaGVjaykge1xuICAgICAgICAvLyBFbnVtIHZhbGlkYXRpb25zIGFyZW4ndCB1c2VmdWwgd2hlblxuICAgICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXNzZW1ibHkgbWFuaWZlc3Q6XFxuJHtlcnJvcnMubWFwKChlKSA9PiBlLnN0YWNrKS5qb2luKCdcXG4nKX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzYXZlTWFuaWZlc3QoXG4gICAgbWFuaWZlc3Q6IGFueSxcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICApIHtcbiAgICBsZXQgd2l0aFZlcnNpb24gPSB7XG4gICAgICAuLi5tYW5pZmVzdCxcbiAgICAgIHZlcnNpb246IE1hbmlmZXN0LnZlcnNpb24oKSxcbiAgICAgIG1pbmltdW1DbGlWZXJzaW9uOiBNYW5pZmVzdC5jbGlWZXJzaW9uKCksXG4gICAgfSBzYXRpc2ZpZXMgYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdDtcblxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKHdpdGhWZXJzaW9uLCBzY2hlbWEpO1xuXG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBsZXQgb2JqO1xuICAgIHRyeSB7XG4gICAgICBvYmogPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlLm1lc3NhZ2V9LCB3aGlsZSBwYXJzaW5nICR7SlNPTi5zdHJpbmdpZnkoY29udGVudHMpfWApO1xuICAgIH1cbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgb2JqID0gcHJlcHJvY2VzcyhvYmopO1xuICAgIH1cbiAgICBNYW5pZmVzdC52YWxpZGF0ZShvYmosIHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXggdGhlIGNhc2luZyBvZiBzdGFjayB0YWdzIGVudHJpZXNcbiAgICpcbiAgICogQXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBDREsgd2UgdXNlZCB0byBlbWl0IHN0YWNrIHRhZ3MgYXMgYW4gb2JqZWN0IHdpdGhcbiAgICogYHsgS2V5LCBWYWx1ZSB9YCBrZXlzOyB0aGlzIGhhZCB0aGUgXCJhZHZhbnRhZ2VcIiB0aGF0IHdlIGNvdWxkIHN0aWNrIHRob3NlXG4gICAqIHRhZ3MgZGlyZWN0bHkgaW50byB0aGUgYENyZWF0ZUNoYW5nZVNldGAgY2FsbC5cbiAgICpcbiAgICogVGhlbiB3ZSBsYXRlciBvbiB1c2VkIGpzaWkgb24gdGhlIGFzc2VtYmx5IHNjaGVtYSBhbmQgd2Ugd2VyZSBmb3JjZWQgdG8gdHlwZVxuICAgKiB0aGUgaW4tbWVtb3J5IG9iamVjdHMgYXMgYHsga2V5LCB2YWx1ZSB9YCB3aXRoIGxvd2VyY2FzZSBsZXR0ZXJzLiBOb3cgdGhlXG4gICAqIG9iamVjdHMgaGF2ZSBhIGRpZmZlcmVudCBvbi1kaXNrIGFuZCBpbi1tZW1vcnkgZm9ybWF0LCBhbmQgd2UgbmVlZCB0byBjb252ZXJ0XG4gICAqIGJldHdlZW4gdGhlbS5cbiAgICpcbiAgICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIHVzZWQgdG8gY29udmVydCBsb3dlcmNhc2UgaW4tbWVtb3J5XG4gICAqIHRvIHVwcGVyY2FzZSBvbi1kaXNrIHZhcmlhbnQgdW50aWwgdmVyeSByZWNlbnRseS4gVGhpcyBpcyBub3cgdW5uZWNlc3NhcnksXG4gICAqIHNpbmNlIG5vIG9mZmljaWFsbHkgc3VwcG9ydGVkIENESyB0b29scyByZWFkIHRoZSBzdGFjayB0YWdzIGZyb20gdGhlXG4gICAqIG1ldGFkYXRhOyB0aGUgQ0xJIGFuZCB0b29sa2l0IGxpYnJhcnkgcmVhZCBzdGFjayB0YWdzIGZyb20gdGhlIGFydGlmYWN0XG4gICAqIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIFNvIGFsdGhvdWdoIHdlIGRvbid0IGVtaXQgdXBwZXJjYXNlIHN0YWNrIHRhZyBvYmplY3RzIGFueW1vcmUsIHdlIG1pZ2h0IHN0aWxsIHJlYWRcbiAgICogbWFuaWZlc3RzIHRoYXQgaGF2ZSB0aGVtLiBCZWNhdXNlIHRoZSBtYW5pZmVzdCB3ZSByZWFkIG11c3QgcGFzcyBKU09OIFNjaGVtYVxuICAgKiB2YWxpZGF0aW9uICh3aGljaCBleHBlY3RzIGxvd2VyY2FzZSB0YWcgb2JqZWN0cyksIHdlIGhhdmUgdG8gZml4IHRoZSBjYXNpbmdcbiAgICogb2YgdGhlc2Ugb2JqZWN0cyBhZnRlciByZWFkaW5nIGZyb20gZGlzayBhbmQgYmVmb3JlIHZhbGlkYXRpbmcuXG4gICAqXG4gICAqIFRoYXQncyB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHBhdGNoU3RhY2tUYWdzT25SZWFkKHRoaXM6IHZvaWQsIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LnZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pXG4gICAgICAuZmlsdGVyKGFydGlmYWN0ID0+IGFydGlmYWN0LnR5cGUgPT09IGFzc2VtYmx5LkFydGlmYWN0VHlwZS5BV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0spO1xuXG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIGNvbnN0IHRhZ01ldGFkYXRhID0gT2JqZWN0LnZhbHVlcyhhcnRpZmFjdC5tZXRhZGF0YSA/PyB7fSlcbiAgICAgICAgLmZsYXRNYXAoeCA9PiB4KVxuICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LnR5cGUgPT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyk7XG5cbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGFnTWV0YWRhdGEpIHtcbiAgICAgICAgY29uc3QgdGFncyA9IGVudHJ5LmRhdGEgYXMgdW5rbm93biBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5W10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCB0OiBhbnkgPSB0YWc7XG4gICAgICAgICAgaWYgKCdLZXknIGluIHQpIHtcbiAgICAgICAgICAgIHQua2V5ID0gdC5LZXk7XG4gICAgICAgICAgICBkZWxldGUgdC5LZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgnVmFsdWUnIGluIHQpIHtcbiAgICAgICAgICAgIHQudmFsdWUgPSB0LlZhbHVlO1xuICAgICAgICAgICAgZGVsZXRlIHQuVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hbmlmZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IGBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnNgIGRvZXNuJ3QgY29udGFpbiBub3IgYEV4dGVybmFsSWRgIG5laXRoZXIgYFJvbGVBcm5gLCBhcyB0aGV5XG4gICAqIHNob3VsZCBoYXZlIGRlZGljYXRlZCBwcm9wZXJ0aWVzIHByZWNlZGluZyB0aGlzIChlLmcgYGFzc3VtZVJvbGVBcm5gIGFuZCBgYXNzdW1lUm9sZUV4dGVybmFsSWRgKS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zKFxuICAgIHRoaXM6IHZvaWQsXG4gICAgaW5zdGFuY2U6IGFueSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBfc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBfb3B0aW9uczoganNvbnNjaGVtYS5PcHRpb25zLFxuICAgIF9jdHg6IGpzb25zY2hlbWEuU2NoZW1hQ29udGV4dCxcbiAgKSB7XG4gICAgaWYgKGtleSAhPT0gJ2Fzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucycpIHtcbiAgICAgIC8vIG5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgaWYgd2UgaGFwcGVuIHRvIGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCBsaWtlIHRoaXMsIGJ1dCB0aGF0XG4gICAgICAvLyBkb2VzIHdhbnQgdG8gYWxsb3cgJ1JvbGVBcm4nIG9yICdFeHRlcm5hbElkJywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UgdG8gY29uc2lkZXIgdGhlIGZ1bGwgc2NoZW1hIHBhdGguXG4gICAgICAvLyBJIGRlY2lkZWQgdG8gbWFrZSB0aGlzIGxlc3MgZ3JhbnVsYXIgZm9yIG5vdyBvbiBwdXJwb3NlIGJlY2F1c2UgaXQgZml0cyBvdXIgbmVlZHMgYW5kIGF2b2lkcyBoYXZpbmcgbWVzc3lcbiAgICAgIC8vIHZhbGlkYXRpb24gbG9naWMgZHVlIHRvIHZhcmlvdXMgc2NoZW1hIHBhdGhzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc3VtZVJvbGVPcHRpb25zID0gaW5zdGFuY2Vba2V5XTtcbiAgICBpZiAoYXNzdW1lUm9sZU9wdGlvbnM/LlJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm9sZUFybiBpcyBub3QgYWxsb3dlZCBpbnNpZGUgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5FeHRlcm5hbElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4dGVybmFsSWQgaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUk3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakY7Ozs7OztHQU1HO0FBQ0gsbURBQW9EO0FBRXBELDhEQUErRDtBQUUvRCx3RUFBeUU7QUFFekUsNERBQTZEO0FBRTdELG9GQUFxRjtBQUVyRjs7R0FFRztBQUNILHlEQUEwRDtBQWdEMUQ7O0dBRUc7QUFDSCxNQUFzQixRQUFRO0lBQzVCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQW1DLEVBQUUsUUFBZ0I7UUFDdEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUNoQyxRQUFnQixFQUNoQixPQUE2QjtRQUU3QixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQThCLEVBQUUsUUFBZ0I7UUFDOUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsYUFBYSxD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QUFDO1lBQzFDLHNGQUFzRjtZQUN0RixnSEFBZ0g7WUFDaEgsNEdBQTRHO1lBQzVHLGdEQUFnRDtZQUNoRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDOztBQTNSSCw0QkE0UkM7OztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQW9DO0lBQzNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgdHlwZSAqIGFzIGFzc2V0cyBmcm9tICcuL2Fzc2V0cyc7XG5pbXBvcnQgKiBhcyBhc3NlbWJseSBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlICogYXMgdmFsaWRhdGlvbiBmcm9tICcuL2Nsb3VkLWFzc2VtYmx5L3ZhbGlkYXRpb24tcmVwb3J0LXNjaGVtYSc7XG5pbXBvcnQgdHlwZSAqIGFzIGludGVnIGZyb20gJy4vaW50ZWctdGVzdHMnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5cbi8vIHRoaXMgcHJlZml4IGlzIHVzZWQgYnkgdGhlIENMSSB0byBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yLlxuLy8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGluc3RydWN0IHRoZSB1c2VyIHRvIHVwZ3JhZGUgaGlzIENMSS5cbi8vIHNlZSBleGVjLnRzI2NyZWF0ZUFzc2VtYmx5XG5leHBvcnQgY29uc3QgVkVSU0lPTl9NSVNNQVRDSDogc3RyaW5nID0gJ0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoJztcblxuLyoqXG4gKiBDTEkgdmVyc2lvbiBpcyBjcmVhdGVkIGF0IGJ1aWxkIGFuZCByZWxlYXNlIHRpbWVcbiAqXG4gKiBJdCBuZWVkcyB0byBiZSAuZ2l0aWdub3JlJ2QsIG90aGVyd2lzZSB0aGUgcHJvamVuICdubyB1bmNvbW1pdHRlZFxuICogY2hhbmdlcycgc2VsZi1jaGVjayB3aWxsIGZhaWwsIHdoaWNoIG1lYW5zIGl0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZFxuICogYXQgYnVpbGQgdGltZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmltcG9ydCBDTElfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2NsaS12ZXJzaW9uLmpzb24nKTtcblxuaW1wb3J0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBBU1NFTUJMWV9TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuaW1wb3J0IElOVEVHX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9pbnRlZy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgVkFMSURBVElPTl9SRVBPUlRfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL3ZhbGlkYXRpb24tcmVwb3J0LnNjaGVtYS5qc29uJyk7XG5cbi8qKlxuICogVmVyc2lvbiBpcyBzaGFyZWQgZm9yIGJvdGggbWFuaWZlc3RzXG4gKi9cbmltcG9ydCBTQ0hFTUFfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3NjaGVtYS92ZXJzaW9uLmpzb24nKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgbG9hZE1hbmlmZXN0IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRNYW5pZmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogU2tpcCB0aGUgdmVyc2lvbiBjaGVja1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBhIG5ld2VyIGNsb3VkIGFzc2VtYmx5IHRoYW4gdGhlIENYIEFQSSBpcyBkZXNpZ25lZFxuICAgKiB0byBzdXBwb3J0LCBhbmQgeW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZVxuICAgKiBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwVmVyc2lvbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2tpcCBlbnVtIGNoZWNrc1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBlbnVtIHZhbHVlcyB5b3UgZG9uJ3Qga25vdyBhYm91dCB5ZXQuIE1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogY2hlY2sgdGhlIHZhbHVlcyBvZiBlbnVtcyB5b3UgZW5jb3VudGVyIGluIHRoZSBtYW5pZmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBFbnVtQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb3BvbG9naWNhbGx5IHNvcnQgYWxsIGFydGlmYWN0c1xuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IHJlc3BlY3RlZCBieSB0aGUgY29uc3RydWN0b3Igb2YgYENsb3VkQXNzZW1ibHlgLiBUaGVcbiAgICogcHJvcGVydHkgbGl2ZXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdG9wb1NvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZmlsZSBhY2NvcmRpbmcgdG8gdGhlIGRlY2xhcmVkIEpTT04gU2NoZW1hXG4gICAqXG4gICAqIEJlIGF3YXJlIHRoYXQgSlNPTiBTY2hlbWEgdmFsaWRhdGlvbiBoYXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBjb3N0XG4gICAqIChhYm91dCAxMHggb3ZlciBub3QgdmFsaWRhdGluZykuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlLCB1bmxlc3MgJFRFU1RJTkdfQ0RLIGlzIHNldCB0byAnMSdcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlU2NoZW1hPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm90b2NvbCB1dGlsaXR5IGNsYXNzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2VtYmx5TWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucyxcbiAgKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uUmVhZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgYXNzZXQgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NldE1hbmlmZXN0KG1hbmlmZXN0OiBhc3NldHMuQXNzZXRNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiBNYW5pZmVzdC5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGludGVnIG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlSW50ZWdNYW5pZmVzdChtYW5pZmVzdDogaW50ZWcuSW50ZWdNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBpbnRlZyBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRJbnRlZ01hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcpOiBpbnRlZy5JbnRlZ01hbmlmZXN0IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IHRoaXMubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBJTlRFR19TQ0hFTUEpO1xuXG4gICAgLy8gQWRkaW5nIHR5cGluZyB0byBgdmFsaWRhdGUoKWAgbGVkIHRvIGBsb2FkTWFuaWZlc3QoKWAgdG8gcHJvcGVybHkgaW5mZXJcbiAgICAvLyBpdHMgcmV0dXJuIHR5cGUsIHdoaWNoIGluZGljYXRlZCB0aGF0IHRoZSByZXR1cm4gdHlwZSBvZiB0aGlzXG4gICAgLy8gZnVuY3Rpb24gbWF5IGJlIGEgbGllLiBJIGNvdWxkIGNoYW5nZSB0aGUgc2NoZW1hIHRvIG1ha2UgYHRlc3RDYXNlc2BcbiAgICAvLyBvcHRpb25hbCwgYnV0IHRoYXQgd2lsbCBidW1wIHRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZSBhbmQgSVxuICAgIC8vIGRvbid0IHdhbnQgdG8gZG8gdGhhdC4gU28gaW5zdGVhZCwganVzdCBtYWtlIHN1cmUgYHRlc3RDYXNlc2AgaXMgYWx3YXlzIHRoZXJlLlxuICAgIHJldHVybiB7XG4gICAgICAuLi5tYW5pZmVzdCxcbiAgICAgIHRlc3RDYXNlczogKG1hbmlmZXN0IGFzIGFueSkudGVzdENhc2VzID8/IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGUgdGhlIHBvbGljeSB2YWxpZGF0aW9uIHJlcG9ydCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIHZhbGlkYXRpb24gcmVwb3J0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRWYWxpZGF0aW9uUmVwb3J0KGZpbGVQYXRoOiBzdHJpbmcpOiB2YWxpZGF0aW9uLlBvbGljeVZhbGlkYXRpb25SZXBvcnRKc29uIHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBWQUxJREFUSU9OX1JFUE9SVF9TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBjdXJyZW50IHNjaGVtYSB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtTQ0hFTUFfVkVSU0lPTi5yZXZpc2lvbn0uMC4wYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENMSSB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgdGhpcyBDbG91ZCBBc3NlbWJseSBTY2hlbWEgdmVyc2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlWZXJzaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmVyc2lvbiA9IENMSV9WRVJTSU9OLnZlcnNpb247XG4gICAgcmV0dXJuIHZlcnNpb24gPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgbG9hZEFzc2VtYmx5TWFuaWZlc3QoKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZChmaWxlUGF0aDogc3RyaW5nKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEFzc2VtYmx5TWFuaWZlc3QoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGUoXG4gICAgbWFuaWZlc3Q6IGFueSxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgICBjb25zdCB2ZXIgPSBzZW12ZXIudmFsaWQodmVyc2lvbik7XG4gICAgICBpZiAoIXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIHN0cmluZzogXCIke3ZlcnNpb259XCJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4U3VwcG9ydGVkID0gc2VtdmVyLm1ham9yKHBhcnNlVmVyc2lvbihNYW5pZmVzdC52ZXJzaW9uKCkpKTtcbiAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVZlcnNpb24obWFuaWZlc3QudmVyc2lvbik7XG5cbiAgICAvLyBmaXJzdCB2YWxpZGF0ZSB0aGUgdmVyc2lvbiBzaG91bGQgYmUgYWNjZXB0ZWQuIGFsbCB2ZXJzaW9ucyB3aXRoaW4gdGhlIHNhbWUgbWlub3IgdmVyc2lvbiBhcmUgZmluZVxuICAgIGlmIChtYXhTdXBwb3J0ZWQgPCBzZW12ZXIubWFqb3IoYWN0dWFsKSAmJiAhb3B0aW9ucz8uc2tpcFZlcnNpb25DaGVjaykge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1vcmUgc3BlY2lmaWMgZXJyb3IgdG8gdGhyb3cgdGhhbiB0aGUgZ2VuZXJpYyBvbmUgYmVsb3csIG1ha2Ugc3VyZSB0byBhZGQgdGhhdCBpbmZvLlxuICAgICAgY29uc3QgY2xpVmVyc2lvbiA9IChtYW5pZmVzdCBhcyBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KS5taW5pbXVtQ2xpVmVyc2lvbjtcbiAgICAgIGxldCBjbGlXYXJuaW5nID0gJyc7XG4gICAgICBpZiAoY2xpVmVyc2lvbikge1xuICAgICAgICBjbGlXYXJuaW5nID0gYC4gWW91IG5lZWQgYXQgbGVhc3QgQ0xJIHZlcnNpb24gJHtjbGlWZXJzaW9ufSB0byByZWFkIHRoaXMgbWFuaWZlc3QuYDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UgdXNlIGEgd2VsbCBrbm93biBlcnJvciBwcmVmaXggc28gdGhhdCB0aGUgQ0xJIGNhbiBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yXG4gICAgICAvLyBhbmQgcHJpbnQgc29tZSBtb3JlIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke1ZFUlNJT05fTUlTTUFUQ0h9OiBNYXhpbXVtIHNjaGVtYSB2ZXJzaW9uIHN1cHBvcnRlZCBpcyAke21heFN1cHBvcnRlZH0ueC54LCBidXQgZm91bmQgJHthY3R1YWx9JHtjbGlXYXJuaW5nfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zPy52YWxpZGF0ZVNjaGVtYSA/PyAocHJvY2Vzcy5lbnYuVEVTVElOR19DREsgPT09ICcxJykpIHtcbiAgICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcganNvbnNjaGVtYS5WYWxpZGF0b3IoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvci52YWxpZGF0ZShtYW5pZmVzdCwgc2NoZW1hLCB7XG4gICAgICAgIG5lc3RlZEVycm9yczogdHJ1ZSxcbiAgICAgICAgYWxsb3dVbmtub3duQXR0cmlidXRlczogZmFsc2UsXG4gICAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIGxldCBlcnJvcnMgPSByZXN1bHQuZXJyb3JzO1xuICAgICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgICAgLy8gRW51bSB2YWxpZGF0aW9ucyBhcmVuJ3QgdXNlZnVsIHdoZW5cbiAgICAgICAgZXJyb3JzID0gc3RyaXBFbnVtRXJyb3JzKGVycm9ycyk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2VtYmx5IG1hbmlmZXN0OlxcbiR7ZXJyb3JzLm1hcCgoZSkgPT4gZS5zdGFjaykuam9pbignXFxuJyl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2F2ZU1hbmlmZXN0KFxuICAgIG1hbmlmZXN0OiBhbnksXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSxcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0ge1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCksXG4gICAgICBtaW5pbXVtQ2xpVmVyc2lvbjogTWFuaWZlc3QuY2xpVmVyc2lvbigpLFxuICAgIH0gc2F0aXNmaWVzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Q7XG5cbiAgICBNYW5pZmVzdC52YWxpZGF0ZSh3aXRoVmVyc2lvbiwgc2NoZW1hKTtcblxuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICB3aXRoVmVyc2lvbiA9IHByZXByb2Nlc3Mod2l0aFZlcnNpb24pO1xuICAgIH1cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeSh3aXRoVmVyc2lvbiwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsb2FkTWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucyxcbiAgKSB7XG4gICAgY29uc3QgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgbGV0IG9iajtcbiAgICB0cnkge1xuICAgICAgb2JqID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZS5tZXNzYWdlfSwgd2hpbGUgcGFyc2luZyAke0pTT04uc3RyaW5naWZ5KGNvbnRlbnRzKX1gKTtcbiAgICB9XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIG9iaiA9IHByZXByb2Nlc3Mob2JqKTtcbiAgICB9XG4gICAgTWFuaWZlc3QudmFsaWRhdGUob2JqLCBzY2hlbWEsIG9wdGlvbnMpO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogRml4IHRoZSBjYXNpbmcgb2Ygc3RhY2sgdGFncyBlbnRyaWVzXG4gICAqXG4gICAqIEF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgQ0RLIHdlIHVzZWQgdG8gZW1pdCBzdGFjayB0YWdzIGFzIGFuIG9iamVjdCB3aXRoXG4gICAqIGB7IEtleSwgVmFsdWUgfWAga2V5czsgdGhpcyBoYWQgdGhlIFwiYWR2YW50YWdlXCIgdGhhdCB3ZSBjb3VsZCBzdGljayB0aG9zZVxuICAgKiB0YWdzIGRpcmVjdGx5IGludG8gdGhlIGBDcmVhdGVDaGFuZ2VTZXRgIGNhbGwuXG4gICAqXG4gICAqIFRoZW4gd2UgbGF0ZXIgb24gdXNlZCBqc2lpIG9uIHRoZSBhc3NlbWJseSBzY2hlbWEgYW5kIHdlIHdlcmUgZm9yY2VkIHRvIHR5cGVcbiAgICogdGhlIGluLW1lbW9yeSBvYmplY3RzIGFzIGB7IGtleSwgdmFsdWUgfWAgd2l0aCBsb3dlcmNhc2UgbGV0dGVycy4gTm93IHRoZVxuICAgKiBvYmplY3RzIGhhdmUgYSBkaWZmZXJlbnQgb24tZGlzayBhbmQgaW4tbWVtb3J5IGZvcm1hdCwgYW5kIHdlIG5lZWQgdG8gY29udmVydFxuICAgKiBiZXR3ZWVuIHRoZW0uXG4gICAqXG4gICAqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSB1c2VkIHRvIGNvbnZlcnQgbG93ZXJjYXNlIGluLW1lbW9yeVxuICAgKiB0byB1cHBlcmNhc2Ugb24tZGlzayB2YXJpYW50IHVudGlsIHZlcnkgcmVjZW50bHkuIFRoaXMgaXMgbm93IHVubmVjZXNzYXJ5LFxuICAgKiBzaW5jZSBubyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBDREsgdG9vbHMgcmVhZCB0aGUgc3RhY2sgdGFncyBmcm9tIHRoZVxuICAgKiBtZXRhZGF0YTsgdGhlIENMSSBhbmQgdG9vbGtpdCBsaWJyYXJ5IHJlYWQgc3RhY2sgdGFncyBmcm9tIHRoZSBhcnRpZmFjdFxuICAgKiBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBTbyBhbHRob3VnaCB3ZSBkb24ndCBlbWl0IHVwcGVyY2FzZSBzdGFjayB0YWcgb2JqZWN0cyBhbnltb3JlLCB3ZSBtaWdodCBzdGlsbCByZWFkXG4gICAqIG1hbmlmZXN0cyB0aGF0IGhhdmUgdGhlbS4gQmVjYXVzZSB0aGUgbWFuaWZlc3Qgd2UgcmVhZCBtdXN0IHBhc3MgSlNPTiBTY2hlbWFcbiAgICogdmFsaWRhdGlvbiAod2hpY2ggZXhwZWN0cyBsb3dlcmNhc2UgdGFnIG9iamVjdHMpLCB3ZSBoYXZlIHRvIGZpeCB0aGUgY2FzaW5nXG4gICAqIG9mIHRoZXNlIG9iamVjdHMgYWZ0ZXIgcmVhZGluZyBmcm9tIGRpc2sgYW5kIGJlZm9yZSB2YWxpZGF0aW5nLlxuICAgKlxuICAgKiBUaGF0J3Mgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZCh0aGlzOiB2b2lkLCBtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIGNvbnN0IGFydGlmYWN0cyA9IE9iamVjdC52YWx1ZXMobWFuaWZlc3QuYXJ0aWZhY3RzID8/IHt9KVxuICAgICAgLmZpbHRlcihhcnRpZmFjdCA9PiBhcnRpZmFjdC50eXBlID09PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKTtcblxuICAgIGZvciAoY29uc3QgYXJ0aWZhY3Qgb2YgYXJ0aWZhY3RzKSB7XG4gICAgICBjb25zdCB0YWdNZXRhZGF0YSA9IE9iamVjdC52YWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEgPz8ge30pXG4gICAgICAgIC5mbGF0TWFwKHggPT4geClcbiAgICAgICAgLmZpbHRlcihlbnRyeSA9PiBlbnRyeS50eXBlID09PSBhc3NlbWJseS5BcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1MpO1xuXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRhZ01ldGFkYXRhKSB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBlbnRyeS5kYXRhIGFzIHVua25vd24gYXMgYXNzZW1ibHkuU3RhY2tUYWdzTWV0YWRhdGFFbnRyeVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzID8/IFtdKSB7XG4gICAgICAgICAgY29uc3QgdDogYW55ID0gdGFnO1xuICAgICAgICAgIGlmICgnS2V5JyBpbiB0KSB7XG4gICAgICAgICAgICB0LmtleSA9IHQuS2V5O1xuICAgICAgICAgICAgZGVsZXRlIHQuS2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ1ZhbHVlJyBpbiB0KSB7XG4gICAgICAgICAgICB0LnZhbHVlID0gdC5WYWx1ZTtcbiAgICAgICAgICAgIGRlbGV0ZSB0LlZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICB0aGlzOiB2b2lkLFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAga2V5OiBzdHJpbmcsXG4gICAgX3NjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgX29wdGlvbnM6IGpzb25zY2hlbWEuT3B0aW9ucyxcbiAgICBfY3R4OiBqc29uc2NoZW1hLlNjaGVtYUNvbnRleHQsXG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdHJpcEVudW1FcnJvcnMoZXJyb3JzOiBqc29uc2NoZW1hLlZhbGlkYXRpb25FcnJvcltdKSB7XG4gIHJldHVybiBlcnJvcnMuZmlsdGVyKChlKSA9PiB0eXBlb2YgZS5zY2hlbWEgPT09ICdzdHJpbmcnIHx8ICEoJ2VudW0nIGluIGUuc2NoZW1hKSk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"organization": true
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@cdklabs/eslint-plugin": "^2.0.
|
|
42
|
+
"@cdklabs/eslint-plugin": "^2.0.6",
|
|
43
43
|
"@stylistic/eslint-plugin": "^3",
|
|
44
44
|
"@types/jest": "^29.5.14",
|
|
45
45
|
"@types/node": "^20",
|
|
@@ -58,18 +58,18 @@
|
|
|
58
58
|
"jest": "^29.7.0",
|
|
59
59
|
"jest-junit": "^16",
|
|
60
60
|
"jsii": "5.9",
|
|
61
|
-
"jsii-diff": "^1.
|
|
62
|
-
"jsii-pacmak": "^1.
|
|
61
|
+
"jsii-diff": "^1.131.0",
|
|
62
|
+
"jsii-pacmak": "^1.131.0",
|
|
63
63
|
"jsii-rosetta": "5.9",
|
|
64
64
|
"license-checker": "^25.0.1",
|
|
65
65
|
"mock-fs": "^5.5.0",
|
|
66
66
|
"nx": "^22.7.2",
|
|
67
67
|
"prettier": "^2.8",
|
|
68
|
-
"projen": "^0.99.
|
|
69
|
-
"ts-jest": "^29.4.
|
|
70
|
-
"tsx": "^4.22.
|
|
68
|
+
"projen": "^0.99.63",
|
|
69
|
+
"ts-jest": "^29.4.11",
|
|
70
|
+
"tsx": "^4.22.3",
|
|
71
71
|
"typescript": "5.9",
|
|
72
|
-
"typescript-json-schema": "^0.67.
|
|
72
|
+
"typescript-json-schema": "^0.67.4"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"jsonschema": "^1.5.0",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"publishConfig": {
|
|
100
100
|
"access": "public"
|
|
101
101
|
},
|
|
102
|
-
"version": "53.
|
|
102
|
+
"version": "53.28.0",
|
|
103
103
|
"packageManager": "yarn@4.13.0",
|
|
104
104
|
"types": "lib/index.d.ts",
|
|
105
105
|
"stability": "stable",
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/PolicyValidationReportJson",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"PolicyValidationReportJson": {
|
|
5
|
+
"description": "The top-level structure of the policy validation report file.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": {
|
|
9
|
+
"description": "Protocol version",
|
|
10
|
+
"type": "string"
|
|
11
|
+
},
|
|
12
|
+
"title": {
|
|
13
|
+
"description": "Report title, if present.",
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"pluginReports": {
|
|
17
|
+
"description": "Reports from all validation plugins that ran during synthesis.",
|
|
18
|
+
"type": "array",
|
|
19
|
+
"items": {
|
|
20
|
+
"$ref": "#/definitions/PluginReportJson"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"required": ["version", "pluginReports"]
|
|
25
|
+
},
|
|
26
|
+
"PluginReportJson": {
|
|
27
|
+
"description": "A report from a single validation plugin.",
|
|
28
|
+
"type": "object",
|
|
29
|
+
"properties": {
|
|
30
|
+
"pluginName": {
|
|
31
|
+
"description": "The name of the plugin that produced this report.",
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"pluginVersion": {
|
|
35
|
+
"description": "Version of the plugin that produced this report.",
|
|
36
|
+
"type": "string"
|
|
37
|
+
},
|
|
38
|
+
"conclusion": {
|
|
39
|
+
"description": "Whether the plugin's validation passed or failed.",
|
|
40
|
+
"$ref": "#/definitions/PolicyValidationReportConclusion"
|
|
41
|
+
},
|
|
42
|
+
"metadata": {
|
|
43
|
+
"description": "Additional plugin-specific metadata.",
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"violations": {
|
|
50
|
+
"description": "Violations found by this plugin.",
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": {
|
|
53
|
+
"$ref": "#/definitions/PolicyViolationJson"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"required": ["pluginName", "conclusion", "violations"]
|
|
58
|
+
},
|
|
59
|
+
"PolicyValidationReportConclusion": {
|
|
60
|
+
"description": "The final conclusion of a validation report.",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": ["success", "failure"]
|
|
63
|
+
},
|
|
64
|
+
"PolicyViolationJson": {
|
|
65
|
+
"description": "A single policy violation found by a validation plugin.",
|
|
66
|
+
"type": "object",
|
|
67
|
+
"properties": {
|
|
68
|
+
"ruleName": {
|
|
69
|
+
"description": "The name of the rule that was violated.",
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
"description": {
|
|
73
|
+
"description": "A description of the violation.",
|
|
74
|
+
"type": "string"
|
|
75
|
+
},
|
|
76
|
+
"suggestedFix": {
|
|
77
|
+
"description": "How to fix the violation.",
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"severity": {
|
|
81
|
+
"description": "The severity of the violation.",
|
|
82
|
+
"$ref": "#/definitions/PolicyViolationSeverity"
|
|
83
|
+
},
|
|
84
|
+
"customSeverity": {
|
|
85
|
+
"description": "If the plugin wants to report using a non-standard severity, put it here.",
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"ruleMetadata": {
|
|
89
|
+
"description": "Additional rule-specific metadata.",
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": {
|
|
92
|
+
"type": "string"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"violatingConstructs": {
|
|
96
|
+
"description": "Constructs that violated the rule.",
|
|
97
|
+
"type": "array",
|
|
98
|
+
"items": {
|
|
99
|
+
"$ref": "#/definitions/ViolatingConstructJson"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": ["ruleName", "description", "severity", "violatingConstructs"]
|
|
104
|
+
},
|
|
105
|
+
"PolicyViolationSeverity": {
|
|
106
|
+
"description": "The severity of a policy violation.",
|
|
107
|
+
"type": "string",
|
|
108
|
+
"enum": ["fatal", "error", "warning", "info", "custom"]
|
|
109
|
+
},
|
|
110
|
+
"ViolatingConstructJson": {
|
|
111
|
+
"description": "A construct that violated a policy rule.",
|
|
112
|
+
"type": "object",
|
|
113
|
+
"properties": {
|
|
114
|
+
"constructPath": {
|
|
115
|
+
"description": "The construct path as defined in the application.",
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
"constructFqn": {
|
|
119
|
+
"description": "The fully qualified name of the construct class (includes the library name).",
|
|
120
|
+
"type": "string"
|
|
121
|
+
},
|
|
122
|
+
"libraryVersion": {
|
|
123
|
+
"description": "The version of the library that contains this construct.",
|
|
124
|
+
"type": "string"
|
|
125
|
+
},
|
|
126
|
+
"cloudFormationResource": {
|
|
127
|
+
"description": "If this construct violation regards a CloudFormation resource, a reference to the resource details.",
|
|
128
|
+
"$ref": "#/definitions/CloudFormationResourceJson"
|
|
129
|
+
},
|
|
130
|
+
"stackTraces": {
|
|
131
|
+
"description": "Stack traces associated with this violation.",
|
|
132
|
+
"type": "array",
|
|
133
|
+
"items": {
|
|
134
|
+
"type": "string"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"required": ["constructPath"]
|
|
139
|
+
},
|
|
140
|
+
"CloudFormationResourceJson": {
|
|
141
|
+
"description": "CloudFormation resource details for a violating construct.",
|
|
142
|
+
"type": "object",
|
|
143
|
+
"properties": {
|
|
144
|
+
"templatePath": {
|
|
145
|
+
"description": "The path to the CloudFormation template containing this resource.",
|
|
146
|
+
"type": "string"
|
|
147
|
+
},
|
|
148
|
+
"logicalId": {
|
|
149
|
+
"description": "The logical ID of the resource in the CloudFormation template.",
|
|
150
|
+
"type": "string"
|
|
151
|
+
},
|
|
152
|
+
"propertyPaths": {
|
|
153
|
+
"description": "Properties within the construct where the violation was detected.",
|
|
154
|
+
"type": "array",
|
|
155
|
+
"items": {
|
|
156
|
+
"type": "string"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"required": ["templatePath", "logicalId"]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|