@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 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": 39
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": 59
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": 49
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": 69
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": 79
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": 85
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": 166
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": 183
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": 101
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": 123
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": 142
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": 175
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": 92
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": 114
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": 133
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": 159
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.26.0",
6202
- "fingerprint": "PdY3GWQk2qn3/WJ+rbtvWkQnSznv/fF2S955WChlzJ4="
6745
+ "version": "53.28.0",
6746
+ "fingerprint": "4Lk7tYymk7iomvnWiv82mnaWatiXIFP/Zt4rUApYc0Y="
6203
6747
  }
package/cli-version.json CHANGED
@@ -1 +1 @@
1
- {"version":"2.1124.0"}
1
+ {"version":"2.1125.0"}
@@ -3,3 +3,4 @@ export * from './metadata-schema';
3
3
  export * from './artifact-schema';
4
4
  export * from './context-queries';
5
5
  export * from './interfaces';
6
+ export * from './validation-report-schema';
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDO0FBQ2xDLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vYXJ0aWZhY3Qtc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1xdWVyaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG4iXX0=
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.26.0" };
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.5",
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.130.0",
62
- "jsii-pacmak": "^1.130.0",
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.61",
69
- "ts-jest": "^29.4.9",
70
- "tsx": "^4.22.0",
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.2"
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.26.0",
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
+ }