@cdktn/hcl2cdk 0.23.0-pre.8 → 0.23.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.
Files changed (85) hide show
  1. package/ambient.d.ts +0 -1
  2. package/build/__tests__/coerceType.test.js +165 -0
  3. package/build/__tests__/expressionToTs.test.js +693 -0
  4. package/build/__tests__/expressions.test.js +415 -0
  5. package/build/__tests__/findExpressionType.test.js +105 -0
  6. package/build/__tests__/functions.test.js +605 -0
  7. package/build/__tests__/generation.test.js +45 -0
  8. package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
  9. package/build/__tests__/partialCode.test.js +390 -0
  10. package/build/__tests__/terraformSchema.test.js +105 -0
  11. package/build/__tests__/testHelpers.js +16 -0
  12. package/build/coerceType.js +240 -0
  13. package/build/dynamic-blocks.js +44 -0
  14. package/build/expressions.js +633 -0
  15. package/build/function-bindings/functions.generated.js +1142 -0
  16. package/build/function-bindings/functions.js +73 -0
  17. package/{lib → build}/generation.js +4 -4
  18. package/{lib → build}/index.d.ts +2 -2
  19. package/build/index.js +364 -0
  20. package/build/iteration.js +87 -0
  21. package/build/jsii-rosetta-workarounds.js +126 -0
  22. package/build/partialCode.js +116 -0
  23. package/build/provider.js +40 -0
  24. package/build/references.js +141 -0
  25. package/build/schema.js +81 -0
  26. package/build/telemetryAllowList.json +24 -0
  27. package/build/terraformSchema.js +136 -0
  28. package/build/types.js +3 -0
  29. package/build/utils.js +25 -0
  30. package/build/variables.js +172 -0
  31. package/package.json +13 -14
  32. package/tsconfig.json +4 -2
  33. package/lib/__tests__/coerceType.test.js +0 -165
  34. package/lib/__tests__/expressionToTs.test.js +0 -693
  35. package/lib/__tests__/expressions.test.js +0 -415
  36. package/lib/__tests__/findExpressionType.test.js +0 -105
  37. package/lib/__tests__/functions.test.js +0 -605
  38. package/lib/__tests__/generation.test.js +0 -45
  39. package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
  40. package/lib/__tests__/partialCode.test.js +0 -390
  41. package/lib/__tests__/terraformSchema.test.js +0 -105
  42. package/lib/__tests__/testHelpers.js +0 -16
  43. package/lib/coerceType.js +0 -240
  44. package/lib/dynamic-blocks.js +0 -44
  45. package/lib/expressions.js +0 -634
  46. package/lib/function-bindings/functions.generated.js +0 -1142
  47. package/lib/function-bindings/functions.js +0 -73
  48. package/lib/index.js +0 -364
  49. package/lib/iteration.js +0 -87
  50. package/lib/jsii-rosetta-workarounds.js +0 -126
  51. package/lib/partialCode.js +0 -116
  52. package/lib/provider.js +0 -40
  53. package/lib/references.js +0 -141
  54. package/lib/schema.js +0 -81
  55. package/lib/terraformSchema.js +0 -136
  56. package/lib/types.js +0 -3
  57. package/lib/utils.js +0 -25
  58. package/lib/variables.js +0 -172
  59. /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
  60. /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
  61. /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
  62. /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
  63. /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
  64. /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
  65. /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
  66. /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
  67. /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
  68. /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
  69. /package/{lib → build}/coerceType.d.ts +0 -0
  70. /package/{lib → build}/dynamic-blocks.d.ts +0 -0
  71. /package/{lib → build}/expressions.d.ts +0 -0
  72. /package/{lib → build}/function-bindings/functions.d.ts +0 -0
  73. /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
  74. /package/{lib → build}/generation.d.ts +0 -0
  75. /package/{lib → build}/iteration.d.ts +0 -0
  76. /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
  77. /package/{lib → build}/partialCode.d.ts +0 -0
  78. /package/{lib → build}/provider.d.ts +0 -0
  79. /package/{lib → build}/references.d.ts +0 -0
  80. /package/{lib → build}/schema.d.ts +0 -0
  81. /package/{lib → build}/terraformSchema.d.ts +0 -0
  82. /package/{lib → build}/types.d.ts +0 -0
  83. /package/{lib → build}/utils.d.ts +0 -0
  84. /package/{lib → build}/variables.d.ts +0 -0
  85. /package/{lib → src}/telemetryAllowList.json +0 -0
@@ -1,105 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) HashiCorp, Inc.
4
- * SPDX-License-Identifier: MPL-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const terraformSchema_1 = require("../terraformSchema");
8
- describe("getTypeAtPath", () => {
9
- const schema = {
10
- provider_schemas: {
11
- test: {
12
- provider: {},
13
- data_source_schemas: {},
14
- resource_schemas: {
15
- test_resource: {
16
- version: 1,
17
- block: {
18
- attributes: {
19
- stringAttribute: {
20
- type: "string",
21
- },
22
- numberAttribute: {
23
- type: "number",
24
- },
25
- booleanAttribute: {
26
- type: "bool",
27
- },
28
- stringListAttribute: {
29
- type: ["list", "string"],
30
- },
31
- stringSetAttribute: {
32
- type: ["set", "string"],
33
- },
34
- stringMapAttribute: {
35
- type: ["map", "string"],
36
- },
37
- stringListListAttribute: {
38
- type: ["list", ["list", "string"]],
39
- },
40
- objectAttribute: {
41
- type: [
42
- "object",
43
- {
44
- stringAttribute: "string",
45
- },
46
- ],
47
- },
48
- },
49
- block_types: {
50
- listMode: {
51
- nesting_mode: "list",
52
- block: {
53
- attributes: {
54
- stringAttribute: {
55
- type: "string",
56
- },
57
- },
58
- block_types: {
59
- listMode: {
60
- nesting_mode: "list",
61
- block: {
62
- attributes: {
63
- stringAttribute: {
64
- type: "string",
65
- },
66
- },
67
- block_types: {},
68
- },
69
- },
70
- },
71
- },
72
- },
73
- },
74
- },
75
- },
76
- },
77
- },
78
- },
79
- };
80
- it("should return null if it can not find the resource", () => {
81
- expect((0, terraformSchema_1.getTypeAtPath)(schema, "test.nonExistantResource")).toBeNull();
82
- });
83
- it("should return null if it can not find the attribute on the resource", () => {
84
- expect((0, terraformSchema_1.getTypeAtPath)(schema, "test.resource.ponyfoo")).toBeNull();
85
- });
86
- describe("known types", () => {
87
- it.each([
88
- ["stringAttribute", "string"],
89
- ["numberAttribute", "number"],
90
- ["booleanAttribute", "bool"],
91
- ["stringListAttribute", ["list", "string"]],
92
- ["stringSetAttribute", ["set", "string"]],
93
- ["stringMapAttribute", ["map", "string"]],
94
- ["stringMapAttribute.whateverkey", "string"],
95
- ["stringListListAttribute", ["list", ["list", "string"]]],
96
- ["stringListListAttribute.[]", ["list", "string"]],
97
- ["stringListListAttribute.[].[]", "string"],
98
- ["listMode.[].listMode.[].stringAttribute", "string"],
99
- ["objectAttribute.stringAttribute", "string"],
100
- ])(`access to %s returns %s`, (attr, res) => {
101
- expect((0, terraformSchema_1.getTypeAtPath)(schema, `test.resource.${attr}`)).toEqual(res);
102
- });
103
- });
104
- });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtU2NoZW1hLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXJyYWZvcm1TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQUdILHdEQUFtRDtBQUVuRCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixNQUFNLE1BQU0sR0FBbUI7UUFDN0IsZ0JBQWdCLEVBQUU7WUFDaEIsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxFQUFTO2dCQUNuQixtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixnQkFBZ0IsRUFBRTtvQkFDaEIsYUFBYSxFQUFFO3dCQUNiLE9BQU8sRUFBRSxDQUFDO3dCQUNWLEtBQUssRUFBRTs0QkFDTCxVQUFVLEVBQUU7Z0NBQ1YsZUFBZSxFQUFFO29DQUNmLElBQUksRUFBRSxRQUFRO2lDQUNmO2dDQUNELGVBQWUsRUFBRTtvQ0FDZixJQUFJLEVBQUUsUUFBUTtpQ0FDZjtnQ0FDRCxnQkFBZ0IsRUFBRTtvQ0FDaEIsSUFBSSxFQUFFLE1BQU07aUNBQ2I7Z0NBQ0QsbUJBQW1CLEVBQUU7b0NBQ25CLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7aUNBQ3pCO2dDQUNELGtCQUFrQixFQUFFO29DQUNsQixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO2lDQUN4QjtnQ0FDRCxrQkFBa0IsRUFBRTtvQ0FDbEIsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztpQ0FDeEI7Z0NBQ0QsdUJBQXVCLEVBQUU7b0NBQ3ZCLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztpQ0FDbkM7Z0NBQ0QsZUFBZSxFQUFFO29DQUNmLElBQUksRUFBRTt3Q0FDSixRQUFRO3dDQUNSOzRDQUNFLGVBQWUsRUFBRSxRQUFRO3lDQUMxQjtxQ0FDRjtpQ0FDRjs2QkFDRjs0QkFDRCxXQUFXLEVBQUU7Z0NBQ1gsUUFBUSxFQUFFO29DQUNSLFlBQVksRUFBRSxNQUFNO29DQUNwQixLQUFLLEVBQUU7d0NBQ0wsVUFBVSxFQUFFOzRDQUNWLGVBQWUsRUFBRTtnREFDZixJQUFJLEVBQUUsUUFBUTs2Q0FDZjt5Q0FDRjt3Q0FDRCxXQUFXLEVBQUU7NENBQ1gsUUFBUSxFQUFFO2dEQUNSLFlBQVksRUFBRSxNQUFNO2dEQUNwQixLQUFLLEVBQUU7b0RBQ0wsVUFBVSxFQUFFO3dEQUNWLGVBQWUsRUFBRTs0REFDZixJQUFJLEVBQUUsUUFBUTt5REFDZjtxREFDRjtvREFDRCxXQUFXLEVBQUUsRUFBRTtpREFDaEI7NkNBQ0Y7eUNBQ0Y7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxDQUFDLElBQUEsK0JBQWEsRUFBQyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEdBQUcsRUFBRTtRQUM3RSxNQUFNLENBQUMsSUFBQSwrQkFBYSxFQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ04sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUM7WUFDN0IsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUM7WUFDN0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUM7WUFDNUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMzQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekMsQ0FBQyxnQ0FBZ0MsRUFBRSxRQUFRLENBQUM7WUFDNUMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUM7WUFDM0MsQ0FBQyx5Q0FBeUMsRUFBRSxRQUFRLENBQUM7WUFDckQsQ0FBQyxpQ0FBaUMsRUFBRSxRQUFRLENBQUM7U0FDOUMsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzFDLE1BQU0sQ0FBQyxJQUFBLCtCQUFhLEVBQUMsTUFBTSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgUHJvdmlkZXJTY2hlbWEgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGdldFR5cGVBdFBhdGggfSBmcm9tIFwiLi4vdGVycmFmb3JtU2NoZW1hXCI7XG5cbmRlc2NyaWJlKFwiZ2V0VHlwZUF0UGF0aFwiLCAoKSA9PiB7XG4gIGNvbnN0IHNjaGVtYTogUHJvdmlkZXJTY2hlbWEgPSB7XG4gICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgdGVzdDoge1xuICAgICAgICBwcm92aWRlcjoge30gYXMgYW55LFxuICAgICAgICBkYXRhX3NvdXJjZV9zY2hlbWFzOiB7fSxcbiAgICAgICAgcmVzb3VyY2Vfc2NoZW1hczoge1xuICAgICAgICAgIHRlc3RfcmVzb3VyY2U6IHtcbiAgICAgICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgc3RyaW5nQXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbnVtYmVyQXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYm9vbGVhbkF0dHJpYnV0ZToge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJib29sXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdHJpbmdMaXN0QXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc3RyaW5nU2V0QXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXCJzZXRcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzdHJpbmdNYXBBdHRyaWJ1dGU6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFtcIm1hcFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN0cmluZ0xpc3RMaXN0QXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFtcImxpc3RcIiwgXCJzdHJpbmdcIl1dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXG4gICAgICAgICAgICAgICAgICAgIFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdBdHRyaWJ1dGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7XG4gICAgICAgICAgICAgICAgbGlzdE1vZGU6IHtcbiAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJsaXN0XCIsXG4gICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbGlzdE1vZGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJsaXN0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQXR0cmlidXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBpdChcInNob3VsZCByZXR1cm4gbnVsbCBpZiBpdCBjYW4gbm90IGZpbmQgdGhlIHJlc291cmNlXCIsICgpID0+IHtcbiAgICBleHBlY3QoZ2V0VHlwZUF0UGF0aChzY2hlbWEsIFwidGVzdC5ub25FeGlzdGFudFJlc291cmNlXCIpKS50b0JlTnVsbCgpO1xuICB9KTtcbiAgaXQoXCJzaG91bGQgcmV0dXJuIG51bGwgaWYgaXQgY2FuIG5vdCBmaW5kIHRoZSBhdHRyaWJ1dGUgb24gdGhlIHJlc291cmNlXCIsICgpID0+IHtcbiAgICBleHBlY3QoZ2V0VHlwZUF0UGF0aChzY2hlbWEsIFwidGVzdC5yZXNvdXJjZS5wb255Zm9vXCIpKS50b0JlTnVsbCgpO1xuICB9KTtcblxuICBkZXNjcmliZShcImtub3duIHR5cGVzXCIsICgpID0+IHtcbiAgICBpdC5lYWNoKFtcbiAgICAgIFtcInN0cmluZ0F0dHJpYnV0ZVwiLCBcInN0cmluZ1wiXSxcbiAgICAgIFtcIm51bWJlckF0dHJpYnV0ZVwiLCBcIm51bWJlclwiXSxcbiAgICAgIFtcImJvb2xlYW5BdHRyaWJ1dGVcIiwgXCJib29sXCJdLFxuICAgICAgW1wic3RyaW5nTGlzdEF0dHJpYnV0ZVwiLCBbXCJsaXN0XCIsIFwic3RyaW5nXCJdXSxcbiAgICAgIFtcInN0cmluZ1NldEF0dHJpYnV0ZVwiLCBbXCJzZXRcIiwgXCJzdHJpbmdcIl1dLFxuICAgICAgW1wic3RyaW5nTWFwQXR0cmlidXRlXCIsIFtcIm1hcFwiLCBcInN0cmluZ1wiXV0sXG4gICAgICBbXCJzdHJpbmdNYXBBdHRyaWJ1dGUud2hhdGV2ZXJrZXlcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBbXCJzdHJpbmdMaXN0TGlzdEF0dHJpYnV0ZVwiLCBbXCJsaXN0XCIsIFtcImxpc3RcIiwgXCJzdHJpbmdcIl1dXSxcbiAgICAgIFtcInN0cmluZ0xpc3RMaXN0QXR0cmlidXRlLltdXCIsIFtcImxpc3RcIiwgXCJzdHJpbmdcIl1dLFxuICAgICAgW1wic3RyaW5nTGlzdExpc3RBdHRyaWJ1dGUuW10uW11cIiwgXCJzdHJpbmdcIl0sXG4gICAgICBbXCJsaXN0TW9kZS5bXS5saXN0TW9kZS5bXS5zdHJpbmdBdHRyaWJ1dGVcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBbXCJvYmplY3RBdHRyaWJ1dGUuc3RyaW5nQXR0cmlidXRlXCIsIFwic3RyaW5nXCJdLFxuICAgIF0pKGBhY2Nlc3MgdG8gJXMgcmV0dXJucyAlc2AsIChhdHRyLCByZXMpID0+IHtcbiAgICAgIGV4cGVjdChnZXRUeXBlQXRQYXRoKHNjaGVtYSwgYHRlc3QucmVzb3VyY2UuJHthdHRyfWApKS50b0VxdWFsKHJlcyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,16 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) HashiCorp, Inc.
4
- * SPDX-License-Identifier: MPL-2.0
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.astToCode = void 0;
11
- const generator_1 = __importDefault(require("@babel/generator"));
12
- function astToCode(e) {
13
- return (0, generator_1.default)(e).code;
14
- }
15
- exports.astToCode = astToCode;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdEhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0SGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7QUFFSCxpRUFBd0M7QUFHeEMsU0FBZ0IsU0FBUyxDQUFDLENBQWU7SUFDdkMsT0FBTyxJQUFBLG1CQUFRLEVBQUMsQ0FBUSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ2pDLENBQUM7QUFGRCw4QkFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IGdlbmVyYXRlIGZyb20gXCJAYmFiZWwvZ2VuZXJhdG9yXCI7XG5pbXBvcnQgKiBhcyB0IGZyb20gXCJAYmFiZWwvdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFzdFRvQ29kZShlOiB0LkV4cHJlc3Npb24pOiBzdHJpbmcge1xuICByZXR1cm4gZ2VuZXJhdGUoZSBhcyBhbnkpLmNvZGU7XG59XG4iXX0=
package/lib/coerceType.js DELETED
@@ -1,240 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.findExpressionType = exports.coerceType = exports.typeForCallExpression = void 0;
30
- // Copyright (c) HashiCorp, Inc
31
- // SPDX-License-Identifier: MPL-2.0
32
- const template_1 = __importDefault(require("@babel/template"));
33
- const t = __importStar(require("@babel/types"));
34
- const commons_1 = require("@cdktn/commons");
35
- const deep_equal_1 = __importDefault(require("deep-equal"));
36
- const functions_1 = require("./function-bindings/functions");
37
- const terraformSchema_1 = require("./terraformSchema");
38
- const codemaker_1 = require("codemaker");
39
- function changeValueAccessor(ast, newAccessor) {
40
- const propertyIdentifier = {
41
- ...ast.property,
42
- name: newAccessor,
43
- };
44
- return {
45
- ...ast,
46
- property: propertyIdentifier,
47
- };
48
- }
49
- function typeForCallExpression(ast) {
50
- // Find all cdktf.Fn.* || cdktn.Fn.* calls
51
- if (t.isMemberExpression(ast.callee) &&
52
- t.isMemberExpression(ast.callee.object) &&
53
- t.isIdentifier(ast.callee.object.object) &&
54
- (ast.callee.object.object.name === "cdktf" ||
55
- ast.callee.object.object.name === "cdktn") &&
56
- t.isIdentifier(ast.callee.object.property) &&
57
- ast.callee.object.property.name === "Fn" &&
58
- t.isIdentifier(ast.callee.property)) {
59
- const meta = functions_1.tsFunctionsMap[ast.callee.property.name];
60
- if (meta) {
61
- return meta.returnType;
62
- }
63
- else {
64
- return "dynamic";
65
- }
66
- }
67
- // cdktf.conditional, cdktf.propertyAccess, cdktf.Op.* are all dynamic
68
- // By default we assume dynamic
69
- return "dynamic";
70
- }
71
- exports.typeForCallExpression = typeForCallExpression;
72
- const coerceType = (scope, ast, from, to) => {
73
- if (to === undefined) {
74
- return ast;
75
- }
76
- if ((0, deep_equal_1.default)(to, from)) {
77
- return ast;
78
- }
79
- const isTerraformVariableOrLocal = ast.type === "MemberExpression" &&
80
- ast.property.type === "Identifier" &&
81
- ast.property.name === "value" &&
82
- ast.object.type === "Identifier" &&
83
- Object.values(scope.variables).some((knownVars) => knownVars.variableName === ast.object.name &&
84
- ["var", "local"].includes(knownVars.resource));
85
- const addTokenToImports = () => scope.importables.push({
86
- constructName: "Token",
87
- provider: "cdktn",
88
- });
89
- if (Array.isArray(to)) {
90
- if (to[0] === "list" || to[0] === "set") {
91
- switch (to[1]) {
92
- case "string":
93
- if (isTerraformVariableOrLocal) {
94
- return changeValueAccessor(ast, "listValue");
95
- }
96
- addTokenToImports();
97
- return template_1.default.expression(`Token.asList(%%ast%%)`)({
98
- ast: ast,
99
- });
100
- case "number":
101
- addTokenToImports();
102
- return template_1.default.expression(`Token.asNumberList(%%ast%%)`)({
103
- ast: ast,
104
- });
105
- case "bool":
106
- addTokenToImports();
107
- return template_1.default.expression(`Token.asAny(%%ast%%)`)({
108
- ast: ast,
109
- });
110
- default:
111
- addTokenToImports();
112
- return template_1.default.expression(`Token.asAny(%%ast%%)`)({
113
- ast: ast,
114
- });
115
- }
116
- }
117
- if (to[0] === "map") {
118
- switch (to[1]) {
119
- case "string":
120
- addTokenToImports();
121
- return template_1.default.expression(`Token.asStringMap(%%ast%%)`)({
122
- ast: ast,
123
- });
124
- case "number":
125
- addTokenToImports();
126
- return template_1.default.expression(`Token.asNumberMap(%%ast%%)`)({
127
- ast: ast,
128
- });
129
- case "bool":
130
- addTokenToImports();
131
- return template_1.default.expression(`Token.asBooleanMap(%%ast%%)`)({
132
- ast: ast,
133
- });
134
- default:
135
- addTokenToImports();
136
- return template_1.default.expression(`Token.asAnyMap(%%ast%%)`)({
137
- ast: ast,
138
- });
139
- }
140
- }
141
- }
142
- switch (to) {
143
- case "number":
144
- if (isTerraformVariableOrLocal) {
145
- return changeValueAccessor(ast, "numberValue");
146
- }
147
- addTokenToImports();
148
- return template_1.default.expression(`Token.asNumber(%%ast%%)`)({
149
- ast: ast,
150
- });
151
- case "string":
152
- if (isTerraformVariableOrLocal) {
153
- return changeValueAccessor(ast, "stringValue");
154
- }
155
- addTokenToImports();
156
- return template_1.default.expression(`Token.asString(%%ast%%)`)({
157
- ast: ast,
158
- });
159
- case "bool":
160
- if (isTerraformVariableOrLocal) {
161
- return changeValueAccessor(ast, "booleanValue");
162
- }
163
- addTokenToImports();
164
- return template_1.default.expression(`Token.asBoolean(%%ast%%)`)({
165
- ast: ast,
166
- });
167
- }
168
- commons_1.logger.debug(`Could not coerce from ${from} to ${to} for ${ast}`);
169
- return ast;
170
- };
171
- exports.coerceType = coerceType;
172
- function findExpressionType(scope, ast) {
173
- const isReferenceWithoutTemplateString = ast.type === "MemberExpression" && ast.object.type === "Identifier";
174
- // If we have a property to cdktf.propertyAccess call it's dynamic
175
- if (ast.type === "CallExpression") {
176
- return typeForCallExpression(ast);
177
- }
178
- if (ast.type === "StringLiteral") {
179
- return "string";
180
- }
181
- if (ast.type === "NumericLiteral") {
182
- return "number";
183
- }
184
- if (ast.type === "BooleanLiteral") {
185
- return "bool";
186
- }
187
- // If we only have one reference this is a
188
- if (isReferenceWithoutTemplateString) {
189
- const destructuredAst = destructureAst(ast);
190
- if (!destructuredAst) {
191
- commons_1.logger.debug(`Could not destructure ast: ${JSON.stringify(ast, null, 2)}`);
192
- return "dynamic";
193
- }
194
- const [astVariableName, ...attributes] = destructuredAst;
195
- const variable = Object.values(scope.variables).find((x) => x.variableName === astVariableName);
196
- if (!variable) {
197
- commons_1.logger.debug(`Could not find variable ${astVariableName} given scope: ${JSON.stringify(scope.variables, null, 2)}`);
198
- // We don't know, this should not happen, but if it does we assume the worst case and make it dynamic
199
- return "dynamic";
200
- }
201
- if (variable.resource === "var") {
202
- return "dynamic";
203
- }
204
- const { resource: resourceType } = variable;
205
- const [provider, ...resourceNameFragments] = resourceType.split("_");
206
- const tfResourcePath = `${provider}.${resourceNameFragments.join("_")}.${attributes.map((x) => (0, codemaker_1.toSnakeCase)(x)).join(".")}`;
207
- const type = (0, terraformSchema_1.getTypeAtPath)(scope.providerSchema, tfResourcePath);
208
- // If this is an attribute type we can return it
209
- if (typeof type === "string" || Array.isArray(type)) {
210
- return type;
211
- }
212
- // Either nothing is found or it's a block type
213
- return "dynamic";
214
- }
215
- return "string";
216
- }
217
- exports.findExpressionType = findExpressionType;
218
- /*
219
- * Transforms a babel AST into a list of string accessors
220
- * e.g. foo.bar.baz -> ["foo", "bar", "baz"]
221
- */
222
- function destructureAst(ast) {
223
- switch (ast.type) {
224
- case "Identifier":
225
- return [ast.name];
226
- case "MemberExpression": {
227
- const object = destructureAst(ast.object);
228
- const property = destructureAst(ast.property);
229
- if (object && property) {
230
- return [...object, ...property];
231
- }
232
- else {
233
- return undefined;
234
- }
235
- }
236
- default:
237
- return undefined;
238
- }
239
- }
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvZXJjZVR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLCtEQUF1QztBQUN2QyxnREFBa0M7QUFDbEMsNENBQXVEO0FBRXZELDREQUFtQztBQUNuQyw2REFBK0Q7QUFDL0QsdURBQWtEO0FBQ2xELHlDQUF3QztBQUV4QyxTQUFTLG1CQUFtQixDQUMxQixHQUF1QixFQUN2QixXQUFtQjtJQUVuQixNQUFNLGtCQUFrQixHQUFpQjtRQUN2QyxHQUFJLEdBQUcsQ0FBQyxRQUF5QjtRQUNqQyxJQUFJLEVBQUUsV0FBVztLQUNsQixDQUFDO0lBQ0YsT0FBTztRQUNMLEdBQUcsR0FBRztRQUNOLFFBQVEsRUFBRSxrQkFBa0I7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxHQUFxQjtJQUN6RCwwQ0FBMEM7SUFDMUMsSUFDRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDdkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDeEMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU87WUFDeEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7UUFDNUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxD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QU0sSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBQ0Q7WUFDRSxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgdGVtcGxhdGUgZnJvbSBcIkBiYWJlbC90ZW1wbGF0ZVwiO1xuaW1wb3J0ICogYXMgdCBmcm9tIFwiQGJhYmVsL3R5cGVzXCI7XG5pbXBvcnQgeyBsb2dnZXIsIEF0dHJpYnV0ZVR5cGUgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IFByb2dyYW1TY29wZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJkZWVwLWVxdWFsXCI7XG5pbXBvcnQgeyB0c0Z1bmN0aW9uc01hcCB9IGZyb20gXCIuL2Z1bmN0aW9uLWJpbmRpbmdzL2Z1bmN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0VHlwZUF0UGF0aCB9IGZyb20gXCIuL3RlcnJhZm9ybVNjaGVtYVwiO1xuaW1wb3J0IHsgdG9TbmFrZUNhc2UgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5cbmZ1bmN0aW9uIGNoYW5nZVZhbHVlQWNjZXNzb3IoXG4gIGFzdDogdC5NZW1iZXJFeHByZXNzaW9uLFxuICBuZXdBY2Nlc3Nvcjogc3RyaW5nLFxuKTogdC5NZW1iZXJFeHByZXNzaW9uIHtcbiAgY29uc3QgcHJvcGVydHlJZGVudGlmaWVyOiB0LklkZW50aWZpZXIgPSB7XG4gICAgLi4uKGFzdC5wcm9wZXJ0eSBhcyB0LklkZW50aWZpZXIpLFxuICAgIG5hbWU6IG5ld0FjY2Vzc29yLFxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLmFzdCxcbiAgICBwcm9wZXJ0eTogcHJvcGVydHlJZGVudGlmaWVyLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZvckNhbGxFeHByZXNzaW9uKGFzdDogdC5DYWxsRXhwcmVzc2lvbik6IEF0dHJpYnV0ZVR5cGUge1xuICAvLyBGaW5kIGFsbCBjZGt0Zi5Gbi4qIHx8IGNka3RuLkZuLiogY2FsbHNcbiAgaWYgKFxuICAgIHQuaXNNZW1iZXJFeHByZXNzaW9uKGFzdC5jYWxsZWUpICYmXG4gICAgdC5pc01lbWJlckV4cHJlc3Npb24oYXN0LmNhbGxlZS5vYmplY3QpICYmXG4gICAgdC5pc0lkZW50aWZpZXIoYXN0LmNhbGxlZS5vYmplY3Qub2JqZWN0KSAmJlxuICAgIChhc3QuY2FsbGVlLm9iamVjdC5vYmplY3QubmFtZSA9PT0gXCJjZGt0ZlwiIHx8XG4gICAgICBhc3QuY2FsbGVlLm9iamVjdC5vYmplY3QubmFtZSA9PT0gXCJjZGt0blwiKSAmJlxuICAgIHQuaXNJZGVudGlmaWVyKGFzdC5jYWxsZWUub2JqZWN0LnByb3BlcnR5KSAmJlxuICAgIGFzdC5jYWxsZWUub2JqZWN0LnByb3BlcnR5Lm5hbWUgPT09IFwiRm5cIiAmJlxuICAgIHQuaXNJZGVudGlmaWVyKGFzdC5jYWxsZWUucHJvcGVydHkpXG4gICkge1xuICAgIGNvbnN0IG1ldGEgPSB0c0Z1bmN0aW9uc01hcFthc3QuY2FsbGVlLnByb3BlcnR5Lm5hbWVdO1xuICAgIGlmIChtZXRhKSB7XG4gICAgICByZXR1cm4gbWV0YS5yZXR1cm5UeXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJkeW5hbWljXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gY2RrdGYuY29uZGl0aW9uYWwsIGNka3RmLnByb3BlcnR5QWNjZXNzLCBjZGt0Zi5PcC4qIGFyZSBhbGwgZHluYW1pY1xuICAvLyBCeSBkZWZhdWx0IHdlIGFzc3VtZSBkeW5hbWljXG4gIHJldHVybiBcImR5bmFtaWNcIjtcbn1cblxuZXhwb3J0IGNvbnN0IGNvZXJjZVR5cGUgPSAoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIGFzdDogdC5FeHByZXNzaW9uLFxuICBmcm9tOiBBdHRyaWJ1dGVUeXBlLFxuICB0bzogQXR0cmlidXRlVHlwZSB8IHVuZGVmaW5lZCxcbik6IHQuRXhwcmVzc2lvbiA9PiB7XG4gIGlmICh0byA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuXG4gIGlmIChkZWVwRXF1YWwodG8sIGZyb20pKSB7XG4gICAgcmV0dXJuIGFzdDtcbiAgfVxuXG4gIGNvbnN0IGlzVGVycmFmb3JtVmFyaWFibGVPckxvY2FsID1cbiAgICBhc3QudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgICBhc3QucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBhc3QucHJvcGVydHkubmFtZSA9PT0gXCJ2YWx1ZVwiICYmXG4gICAgYXN0Lm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIE9iamVjdC52YWx1ZXMoc2NvcGUudmFyaWFibGVzKS5zb21lKFxuICAgICAgKGtub3duVmFycykgPT5cbiAgICAgICAga25vd25WYXJzLnZhcmlhYmxlTmFtZSA9PT0gKGFzdC5vYmplY3QgYXMgdC5JZGVudGlmaWVyKS5uYW1lICYmXG4gICAgICAgIFtcInZhclwiLCBcImxvY2FsXCJdLmluY2x1ZGVzKGtub3duVmFycy5yZXNvdXJjZSksXG4gICAgKTtcblxuICBjb25zdCBhZGRUb2tlblRvSW1wb3J0cyA9ICgpID0+XG4gICAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgICBjb25zdHJ1Y3ROYW1lOiBcIlRva2VuXCIsXG4gICAgICBwcm92aWRlcjogXCJjZGt0blwiLFxuICAgIH0pO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHRvKSkge1xuICAgIGlmICh0b1swXSA9PT0gXCJsaXN0XCIgfHwgdG9bMF0gPT09IFwic2V0XCIpIHtcbiAgICAgIHN3aXRjaCAodG9bMV0pIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgIGlmIChpc1RlcnJhZm9ybVZhcmlhYmxlT3JMb2NhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoYW5nZVZhbHVlQWNjZXNzb3IoYXN0IGFzIHQuTWVtYmVyRXhwcmVzc2lvbiwgXCJsaXN0VmFsdWVcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgICAgICByZXR1cm4gdGVtcGxhdGUuZXhwcmVzc2lvbihgVG9rZW4uYXNMaXN0KCUlYXN0JSUpYCkoe1xuICAgICAgICAgICAgYXN0OiBhc3QsXG4gICAgICAgICAgfSkgYXMgdC5FeHByZXNzaW9uO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgICAgICByZXR1cm4gdGVtcGxhdGUuZXhwcmVzc2lvbihgVG9rZW4uYXNOdW1iZXJMaXN0KCUlYXN0JSUpYCkoe1xuICAgICAgICAgICAgYXN0OiBhc3QsXG4gICAgICAgICAgfSkgYXMgdC5FeHByZXNzaW9uO1xuICAgICAgICBjYXNlIFwiYm9vbFwiOlxuICAgICAgICAgIGFkZFRva2VuVG9JbXBvcnRzKCk7XG4gICAgICAgICAgcmV0dXJuIHRlbXBsYXRlLmV4cHJlc3Npb24oYFRva2VuLmFzQW55KCUlYXN0JSUpYCkoe1xuICAgICAgICAgICAgYXN0OiBhc3QsXG4gICAgICAgICAgfSkgYXMgdC5FeHByZXNzaW9uO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFkZFRva2VuVG9JbXBvcnRzKCk7XG4gICAgICAgICAgcmV0dXJuIHRlbXBsYXRlLmV4cHJlc3Npb24oYFRva2VuLmFzQW55KCUlYXN0JSUpYCkoe1xuICAgICAgICAgICAgYXN0OiBhc3QsXG4gICAgICAgICAgfSkgYXMgdC5FeHByZXNzaW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b1swXSA9PT0gXCJtYXBcIikge1xuICAgICAgc3dpdGNoICh0b1sxXSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgICAgICByZXR1cm4gdGVtcGxhdGUuZXhwcmVzc2lvbihgVG9rZW4uYXNTdHJpbmdNYXAoJSVhc3QlJSlgKSh7XG4gICAgICAgICAgICBhc3Q6IGFzdCxcbiAgICAgICAgICB9KSBhcyB0LkV4cHJlc3Npb247XG4gICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICBhZGRUb2tlblRvSW1wb3J0cygpO1xuICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5leHByZXNzaW9uKGBUb2tlbi5hc051bWJlck1hcCglJWFzdCUlKWApKHtcbiAgICAgICAgICAgIGFzdDogYXN0LFxuICAgICAgICAgIH0pIGFzIHQuRXhwcmVzc2lvbjtcbiAgICAgICAgY2FzZSBcImJvb2xcIjpcbiAgICAgICAgICBhZGRUb2tlblRvSW1wb3J0cygpO1xuICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5leHByZXNzaW9uKGBUb2tlbi5hc0Jvb2xlYW5NYXAoJSVhc3QlJSlgKSh7XG4gICAgICAgICAgICBhc3Q6IGFzdCxcbiAgICAgICAgICB9KSBhcyB0LkV4cHJlc3Npb247XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgICAgICByZXR1cm4gdGVtcGxhdGUuZXhwcmVzc2lvbihgVG9rZW4uYXNBbnlNYXAoJSVhc3QlJSlgKSh7XG4gICAgICAgICAgICBhc3Q6IGFzdCxcbiAgICAgICAgICB9KSBhcyB0LkV4cHJlc3Npb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoICh0bykge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIGlmIChpc1RlcnJhZm9ybVZhcmlhYmxlT3JMb2NhbCkge1xuICAgICAgICByZXR1cm4gY2hhbmdlVmFsdWVBY2Nlc3Nvcihhc3QgYXMgdC5NZW1iZXJFeHByZXNzaW9uLCBcIm51bWJlclZhbHVlXCIpO1xuICAgICAgfVxuICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgIHJldHVybiB0ZW1wbGF0ZS5leHByZXNzaW9uKGBUb2tlbi5hc051bWJlciglJWFzdCUlKWApKHtcbiAgICAgICAgYXN0OiBhc3QsXG4gICAgICB9KSBhcyB0LkV4cHJlc3Npb247XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgaWYgKGlzVGVycmFmb3JtVmFyaWFibGVPckxvY2FsKSB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VWYWx1ZUFjY2Vzc29yKGFzdCBhcyB0Lk1lbWJlckV4cHJlc3Npb24sIFwic3RyaW5nVmFsdWVcIik7XG4gICAgICB9XG4gICAgICBhZGRUb2tlblRvSW1wb3J0cygpO1xuICAgICAgcmV0dXJuIHRlbXBsYXRlLmV4cHJlc3Npb24oYFRva2VuLmFzU3RyaW5nKCUlYXN0JSUpYCkoe1xuICAgICAgICBhc3Q6IGFzdCxcbiAgICAgIH0pIGFzIHQuRXhwcmVzc2lvbjtcbiAgICBjYXNlIFwiYm9vbFwiOlxuICAgICAgaWYgKGlzVGVycmFmb3JtVmFyaWFibGVPckxvY2FsKSB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VWYWx1ZUFjY2Vzc29yKGFzdCBhcyB0Lk1lbWJlckV4cHJlc3Npb24sIFwiYm9vbGVhblZhbHVlXCIpO1xuICAgICAgfVxuICAgICAgYWRkVG9rZW5Ub0ltcG9ydHMoKTtcbiAgICAgIHJldHVybiB0ZW1wbGF0ZS5leHByZXNzaW9uKGBUb2tlbi5hc0Jvb2xlYW4oJSVhc3QlJSlgKSh7XG4gICAgICAgIGFzdDogYXN0LFxuICAgICAgfSkgYXMgdC5FeHByZXNzaW9uO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKGBDb3VsZCBub3QgY29lcmNlIGZyb20gJHtmcm9tfSB0byAke3RvfSBmb3IgJHthc3R9YCk7XG4gIHJldHVybiBhc3Q7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEV4cHJlc3Npb25UeXBlKFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICBhc3Q6IHQuRXhwcmVzc2lvbixcbik6IEF0dHJpYnV0ZVR5cGUge1xuICBjb25zdCBpc1JlZmVyZW5jZVdpdGhvdXRUZW1wbGF0ZVN0cmluZyA9XG4gICAgYXN0LnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmIGFzdC5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCI7XG5cbiAgLy8gSWYgd2UgaGF2ZSBhIHByb3BlcnR5IHRvIGNka3RmLnByb3BlcnR5QWNjZXNzIGNhbGwgaXQncyBkeW5hbWljXG4gIGlmIChhc3QudHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIHR5cGVGb3JDYWxsRXhwcmVzc2lvbihhc3QpO1xuICB9XG5cbiAgaWYgKGFzdC50eXBlID09PSBcIlN0cmluZ0xpdGVyYWxcIikge1xuICAgIHJldHVybiBcInN0cmluZ1wiO1xuICB9XG4gIGlmIChhc3QudHlwZSA9PT0gXCJOdW1lcmljTGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIFwibnVtYmVyXCI7XG4gIH1cbiAgaWYgKGFzdC50eXBlID09PSBcIkJvb2xlYW5MaXRlcmFsXCIpIHtcbiAgICByZXR1cm4gXCJib29sXCI7XG4gIH1cblxuICAvLyBJZiB3ZSBvbmx5IGhhdmUgb25lIHJlZmVyZW5jZSB0aGlzIGlzIGFcbiAgaWYgKGlzUmVmZXJlbmNlV2l0aG91dFRlbXBsYXRlU3RyaW5nKSB7XG4gICAgY29uc3QgZGVzdHJ1Y3R1cmVkQXN0ID0gZGVzdHJ1Y3R1cmVBc3QoYXN0KTtcbiAgICBpZiAoIWRlc3RydWN0dXJlZEFzdCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQ291bGQgbm90IGRlc3RydWN0dXJlIGFzdDogJHtKU09OLnN0cmluZ2lmeShhc3QsIG51bGwsIDIpfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIFwiZHluYW1pY1wiO1xuICAgIH1cblxuICAgIGNvbnN0IFthc3RWYXJpYWJsZU5hbWUsIC4uLmF0dHJpYnV0ZXNdID0gZGVzdHJ1Y3R1cmVkQXN0O1xuICAgIGNvbnN0IHZhcmlhYmxlID0gT2JqZWN0LnZhbHVlcyhzY29wZS52YXJpYWJsZXMpLmZpbmQoXG4gICAgICAoeCkgPT4geC52YXJpYWJsZU5hbWUgPT09IGFzdFZhcmlhYmxlTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgdmFyaWFibGUgJHthc3RWYXJpYWJsZU5hbWV9IGdpdmVuIHNjb3BlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHNjb3BlLnZhcmlhYmxlcyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgICAvLyBXZSBkb24ndCBrbm93LCB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgaWYgaXQgZG9lcyB3ZSBhc3N1bWUgdGhlIHdvcnN0IGNhc2UgYW5kIG1ha2UgaXQgZHluYW1pY1xuICAgICAgcmV0dXJuIFwiZHluYW1pY1wiO1xuICAgIH1cblxuICAgIGlmICh2YXJpYWJsZS5yZXNvdXJjZSA9PT0gXCJ2YXJcIikge1xuICAgICAgcmV0dXJuIFwiZHluYW1pY1wiO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVzb3VyY2U6IHJlc291cmNlVHlwZSB9ID0gdmFyaWFibGU7XG4gICAgY29uc3QgW3Byb3ZpZGVyLCAuLi5yZXNvdXJjZU5hbWVGcmFnbWVudHNdID0gcmVzb3VyY2VUeXBlLnNwbGl0KFwiX1wiKTtcbiAgICBjb25zdCB0ZlJlc291cmNlUGF0aCA9IGAke3Byb3ZpZGVyfS4ke3Jlc291cmNlTmFtZUZyYWdtZW50cy5qb2luKFxuICAgICAgXCJfXCIsXG4gICAgKX0uJHthdHRyaWJ1dGVzLm1hcCgoeCkgPT4gdG9TbmFrZUNhc2UoeCkpLmpvaW4oXCIuXCIpfWA7XG4gICAgY29uc3QgdHlwZSA9IGdldFR5cGVBdFBhdGgoc2NvcGUucHJvdmlkZXJTY2hlbWEsIHRmUmVzb3VyY2VQYXRoKTtcblxuICAgIC8vIElmIHRoaXMgaXMgYW4gYXR0cmlidXRlIHR5cGUgd2UgY2FuIHJldHVybiBpdFxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICAvLyBFaXRoZXIgbm90aGluZyBpcyBmb3VuZCBvciBpdCdzIGEgYmxvY2sgdHlwZVxuICAgIHJldHVybiBcImR5bmFtaWNcIjtcbiAgfVxuXG4gIHJldHVybiBcInN0cmluZ1wiO1xufVxuXG4vKlxuICogVHJhbnNmb3JtcyBhIGJhYmVsIEFTVCBpbnRvIGEgbGlzdCBvZiBzdHJpbmcgYWNjZXNzb3JzXG4gKiBlLmcuIGZvby5iYXIuYmF6IC0+IFtcImZvb1wiLCBcImJhclwiLCBcImJhelwiXVxuICovXG5mdW5jdGlvbiBkZXN0cnVjdHVyZUFzdChhc3Q6IHQuRXhwcmVzc2lvbik6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChhc3QudHlwZSkge1xuICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICByZXR1cm4gW2FzdC5uYW1lXTtcbiAgICBjYXNlIFwiTWVtYmVyRXhwcmVzc2lvblwiOiB7XG4gICAgICBjb25zdCBvYmplY3QgPSBkZXN0cnVjdHVyZUFzdChhc3Qub2JqZWN0KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gZGVzdHJ1Y3R1cmVBc3QoYXN0LnByb3BlcnR5IGFzIHQuRXhwcmVzc2lvbik7XG4gICAgICBpZiAob2JqZWN0ICYmIHByb3BlcnR5KSB7XG4gICAgICAgIHJldHVybiBbLi4ub2JqZWN0LCAuLi5wcm9wZXJ0eV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -1,44 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) HashiCorp, Inc.
4
- * SPDX-License-Identifier: MPL-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.extractDynamicBlocks = exports.isNestedDynamicBlock = void 0;
8
- function isNestedDynamicBlock(dynBlocks, block) {
9
- return dynBlocks.some((dyn) => dyn.path !== block.path && block.path.startsWith(dyn.path));
10
- }
11
- exports.isNestedDynamicBlock = isNestedDynamicBlock;
12
- const extractDynamicBlocks = (config, path = "") => {
13
- if (typeof config !== "object") {
14
- return [];
15
- }
16
- if (!config) {
17
- return [];
18
- }
19
- if (Array.isArray(config)) {
20
- return config.reduce((carry, item, index) => [
21
- ...carry,
22
- ...(0, exports.extractDynamicBlocks)(item, `${path}.${index}`),
23
- ], []);
24
- }
25
- if ("dynamic" in config) {
26
- const dynamic = config.dynamic;
27
- const scopedVar = Object.keys(dynamic)[0];
28
- const { for_each, content } = dynamic[scopedVar][0];
29
- return [
30
- {
31
- path: `${path}.dynamic.${scopedVar}`,
32
- for_each,
33
- content,
34
- scopedVar,
35
- },
36
- ...(0, exports.extractDynamicBlocks)(content, `${path}.dynamic.${scopedVar}.0.content`),
37
- ];
38
- }
39
- return Object.entries(config).reduce((carry, [key, value]) => {
40
- return [...carry, ...(0, exports.extractDynamicBlocks)(value, `${path}.${key}`)];
41
- }, []);
42
- };
43
- exports.extractDynamicBlocks = extractDynamicBlocks;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1ibG9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkeW5hbWljLWJsb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFJSCxTQUFnQixvQkFBb0IsQ0FDbEMsU0FBeUIsRUFDekIsS0FBbUI7SUFFbkIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUNuQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDcEUsQ0FBQztBQUNKLENBQUM7QUFQRCxvREFPQztBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsTUFBOEIsRUFDOUIsSUFBSSxHQUFHLEVBQUUsRUFDTyxFQUFFO0lBQ2xCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUNsQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN0QixHQUFHLEtBQUs7WUFDUixHQUFHLElBQUEsNEJBQW9CLEVBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQ2xELEVBQ0QsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUksTUFBYyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELE9BQU87WUFDTDtnQkFDRSxJQUFJLEVBQUUsR0FBRyxJQUFJLFlBQVksU0FBUyxFQUFFO2dCQUNwQyxRQUFRO2dCQUNSLE9BQU87Z0JBQ1AsU0FBUzthQUNWO1lBQ0QsR0FBRyxJQUFBLDRCQUFvQixFQUNyQixPQUFPLEVBQ1AsR0FBRyxJQUFJLFlBQVksU0FBUyxZQUFZLENBQ3pDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDM0QsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBQSw0QkFBb0IsRUFBQyxLQUFZLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsRUFBRSxFQUFvQixDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBNUNXLFFBQUEsb0JBQW9CLHdCQTRDL0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IER5bmFtaWNCbG9jaywgVGVycmFmb3JtUmVzb3VyY2VCbG9jayB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05lc3RlZER5bmFtaWNCbG9jayhcbiAgZHluQmxvY2tzOiBEeW5hbWljQmxvY2tbXSxcbiAgYmxvY2s6IER5bmFtaWNCbG9jayxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gZHluQmxvY2tzLnNvbWUoXG4gICAgKGR5bikgPT4gZHluLnBhdGggIT09IGJsb2NrLnBhdGggJiYgYmxvY2sucGF0aC5zdGFydHNXaXRoKGR5bi5wYXRoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IGV4dHJhY3REeW5hbWljQmxvY2tzID0gKFxuICBjb25maWc6IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4gIHBhdGggPSBcIlwiLFxuKTogRHluYW1pY0Jsb2NrW10gPT4ge1xuICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnKSkge1xuICAgIHJldHVybiBjb25maWcucmVkdWNlKFxuICAgICAgKGNhcnJ5LCBpdGVtLCBpbmRleCkgPT4gW1xuICAgICAgICAuLi5jYXJyeSxcbiAgICAgICAgLi4uZXh0cmFjdER5bmFtaWNCbG9ja3MoaXRlbSwgYCR7cGF0aH0uJHtpbmRleH1gKSxcbiAgICAgIF0sXG4gICAgICBbXSxcbiAgICApO1xuICB9XG5cbiAgaWYgKFwiZHluYW1pY1wiIGluIGNvbmZpZykge1xuICAgIGNvbnN0IGR5bmFtaWMgPSAoY29uZmlnIGFzIGFueSkuZHluYW1pYztcbiAgICBjb25zdCBzY29wZWRWYXIgPSBPYmplY3Qua2V5cyhkeW5hbWljKVswXTtcbiAgICBjb25zdCB7IGZvcl9lYWNoLCBjb250ZW50IH0gPSBkeW5hbWljW3Njb3BlZFZhcl1bMF07XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYXRoOiBgJHtwYXRofS5keW5hbWljLiR7c2NvcGVkVmFyfWAsXG4gICAgICAgIGZvcl9lYWNoLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBzY29wZWRWYXIsXG4gICAgICB9LFxuICAgICAgLi4uZXh0cmFjdER5bmFtaWNCbG9ja3MoXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGAke3BhdGh9LmR5bmFtaWMuJHtzY29wZWRWYXJ9LjAuY29udGVudGAsXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29uZmlnKS5yZWR1Y2UoKGNhcnJ5LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICByZXR1cm4gWy4uLmNhcnJ5LCAuLi5leHRyYWN0RHluYW1pY0Jsb2Nrcyh2YWx1ZSBhcyBhbnksIGAke3BhdGh9LiR7a2V5fWApXTtcbiAgfSwgW10gYXMgRHluYW1pY0Jsb2NrW10pO1xufTtcbiJdfQ==