@cdktn/hcl2cdk 0.23.0-pre.4 → 0.23.0-pre.41

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 (86) 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/build/generation.js +676 -0
  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 +19 -19
  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/generation.js +0 -676
  49. package/lib/index.js +0 -364
  50. package/lib/iteration.js +0 -87
  51. package/lib/jsii-rosetta-workarounds.js +0 -126
  52. package/lib/partialCode.js +0 -116
  53. package/lib/provider.js +0 -40
  54. package/lib/references.js +0 -141
  55. package/lib/schema.js +0 -81
  56. package/lib/terraformSchema.js +0 -136
  57. package/lib/types.js +0 -3
  58. package/lib/utils.js +0 -25
  59. package/lib/variables.js +0 -172
  60. /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
  61. /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
  62. /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
  63. /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
  64. /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
  65. /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
  66. /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
  67. /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
  68. /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
  69. /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
  70. /package/{lib → build}/coerceType.d.ts +0 -0
  71. /package/{lib → build}/dynamic-blocks.d.ts +0 -0
  72. /package/{lib → build}/expressions.d.ts +0 -0
  73. /package/{lib → build}/function-bindings/functions.d.ts +0 -0
  74. /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
  75. /package/{lib → build}/generation.d.ts +0 -0
  76. /package/{lib → build}/iteration.d.ts +0 -0
  77. /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
  78. /package/{lib → build}/partialCode.d.ts +0 -0
  79. /package/{lib → build}/provider.d.ts +0 -0
  80. /package/{lib → build}/references.d.ts +0 -0
  81. /package/{lib → build}/schema.d.ts +0 -0
  82. /package/{lib → build}/terraformSchema.d.ts +0 -0
  83. /package/{lib → build}/types.d.ts +0 -0
  84. /package/{lib → build}/utils.d.ts +0 -0
  85. /package/{lib → build}/variables.d.ts +0 -0
  86. /package/{lib → src}/telemetryAllowList.json +0 -0
@@ -0,0 +1,45 @@
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 generation_1 = require("../generation");
8
+ const testHelpers_1 = require("./testHelpers");
9
+ describe("variableTypeToAst", () => {
10
+ async function run(type) {
11
+ return (0, testHelpers_1.astToCode)(await (0, generation_1.variableTypeToAst)({
12
+ importables: [],
13
+ }, type));
14
+ }
15
+ it("should convert a simple type", async () => {
16
+ expect(await run("${string}")).toMatchInlineSnapshot(`"VariableType.STRING"`);
17
+ });
18
+ it("should convert a object type", async () => {
19
+ expect(await run("${object({\n name = string\n address = string\n })}")).toMatchInlineSnapshot(`
20
+ "VariableType.object({
21
+ "address": VariableType.STRING,
22
+ "name": VariableType.STRING
23
+ })"
24
+ `);
25
+ });
26
+ it("should convert a list type", async () => {
27
+ expect(await run("${list(object({\n internal = number\n external = number\n protocol = string\n }))}")).toMatchInlineSnapshot(`
28
+ "VariableType.list(VariableType.object({
29
+ "external": VariableType.NUMBER,
30
+ "internal": VariableType.NUMBER,
31
+ "protocol": VariableType.STRING
32
+ }))"
33
+ `);
34
+ });
35
+ it("should convert a set type", async () => {
36
+ expect(await run("${set(string)}")).toMatchInlineSnapshot(`"VariableType.set(VariableType.STRING)"`);
37
+ });
38
+ it("should convert a map type", async () => {
39
+ expect(await run("${map(string)}")).toMatchInlineSnapshot(`"VariableType.map(VariableType.STRING)"`);
40
+ });
41
+ it("should convert a tuple type", async () => {
42
+ expect(await run("${tuple(string, number, bool)}")).toMatchInlineSnapshot(`"VariableType.tuple(VariableType.STRING, VariableType.NUMBER, VariableType.BOOL)"`);
43
+ });
44
+ });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9nZW5lcmF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFFSCw4Q0FBa0Q7QUFFbEQsK0NBQTBDO0FBRTFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFZO1FBQzdCLE9BQU8sSUFBQSx1QkFBUyxFQUNkLE1BQU0sSUFBQSw4QkFBaUIsRUFDckI7WUFDRSxXQUFXLEVBQUUsRUFBRTtTQUNXLEVBQzVCLElBQUksQ0FDTCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUNsRCx1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVDLE1BQU0sQ0FDSixNQUFNLEdBQUcsQ0FDUCxpRkFBaUYsQ0FDbEYsQ0FDRixDQUFDLHFCQUFxQixDQUFDOzs7OztLQUt2QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMxQyxNQUFNLENBQ0osTUFBTSxHQUFHLENBQ1AsNEhBQTRILENBQzdILENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7O0tBTXZCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJCQUEyQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3ZELHlDQUF5QyxDQUMxQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDdkQseUNBQXlDLENBQzFDLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN2RSxtRkFBbUYsQ0FDcEYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IHZhcmlhYmxlVHlwZVRvQXN0IH0gZnJvbSBcIi4uL2dlbmVyYXRpb25cIjtcbmltcG9ydCB7IFByb2dyYW1TY29wZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgYXN0VG9Db2RlIH0gZnJvbSBcIi4vdGVzdEhlbHBlcnNcIjtcblxuZGVzY3JpYmUoXCJ2YXJpYWJsZVR5cGVUb0FzdFwiLCAoKSA9PiB7XG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXN0VG9Db2RlKFxuICAgICAgYXdhaXQgdmFyaWFibGVUeXBlVG9Bc3QoXG4gICAgICAgIHtcbiAgICAgICAgICBpbXBvcnRhYmxlczogW10sXG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBQcm9ncmFtU2NvcGUsXG4gICAgICAgIHR5cGUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBpdChcInNob3VsZCBjb252ZXJ0IGEgc2ltcGxlIHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChhd2FpdCBydW4oXCIke3N0cmluZ31cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS5TVFJJTkdcImAsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIG9iamVjdCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBhd2FpdCBydW4oXG4gICAgICAgIFwiJHtvYmplY3Qoe1xcbiAgICAgICAgICBuYW1lICAgID0gc3RyaW5nXFxuICAgICAgICAgIGFkZHJlc3MgPSBzdHJpbmdcXG4gICAgICAgIH0pfVwiLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICBcIlZhcmlhYmxlVHlwZS5vYmplY3Qoe1xuICAgICAgICBcImFkZHJlc3NcIjogVmFyaWFibGVUeXBlLlNUUklORyxcbiAgICAgICAgXCJuYW1lXCI6IFZhcmlhYmxlVHlwZS5TVFJJTkdcbiAgICAgIH0pXCJcbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIGxpc3QgdHlwZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgYXdhaXQgcnVuKFxuICAgICAgICBcIiR7bGlzdChvYmplY3Qoe1xcbiAgICAgICAgICAgIGludGVybmFsID0gbnVtYmVyXFxuICAgICAgICAgICAgZXh0ZXJuYWwgPSBudW1iZXJcXG4gICAgICAgICAgICBwcm90b2NvbCA9IHN0cmluZ1xcbiAgICAgICAgfSkpfVwiLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICBcIlZhcmlhYmxlVHlwZS5saXN0KFZhcmlhYmxlVHlwZS5vYmplY3Qoe1xuICAgICAgICBcImV4dGVybmFsXCI6IFZhcmlhYmxlVHlwZS5OVU1CRVIsXG4gICAgICAgIFwiaW50ZXJuYWxcIjogVmFyaWFibGVUeXBlLk5VTUJFUixcbiAgICAgICAgXCJwcm90b2NvbFwiOiBWYXJpYWJsZVR5cGUuU1RSSU5HXG4gICAgICB9KSlcIlxuICAgIGApO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjb252ZXJ0IGEgc2V0IHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChhd2FpdCBydW4oXCIke3NldChzdHJpbmcpfVwiKSkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFwiVmFyaWFibGVUeXBlLnNldChWYXJpYWJsZVR5cGUuU1RSSU5HKVwiYCxcbiAgICApO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjb252ZXJ0IGEgbWFwIHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChhd2FpdCBydW4oXCIke21hcChzdHJpbmcpfVwiKSkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFwiVmFyaWFibGVUeXBlLm1hcChWYXJpYWJsZVR5cGUuU1RSSU5HKVwiYCxcbiAgICApO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjb252ZXJ0IGEgdHVwbGUgdHlwZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IHJ1bihcIiR7dHVwbGUoc3RyaW5nLCBudW1iZXIsIGJvb2wpfVwiKSkudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFwiVmFyaWFibGVUeXBlLnR1cGxlKFZhcmlhYmxlVHlwZS5TVFJJTkcsIFZhcmlhYmxlVHlwZS5OVU1CRVIsIFZhcmlhYmxlVHlwZS5CT09MKVwiYCxcbiAgICApO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // Copyright (c) HashiCorp, Inc
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const jsii_rosetta_workarounds_1 = require("../jsii-rosetta-workarounds");
6
+ describe("jsii-rosetta-workarounds", () => {
7
+ describe("replacePythonImports", () => {
8
+ it("normal imports", () => {
9
+ const code = `
10
+ import constructs as constructs
11
+ # Provider bindings are generated by running cdktn get.
12
+ # See https://cdk.tf/provider-generation for more details.
13
+ import ...gen.providers.scaleway as scaleway
14
+ class MyConvertedCode(constructs.Construct):
15
+ def __init__(self, scope, name):
16
+ super().__init__(scope, name)
17
+ scaleway.provider.ScalewayProvider(self, "scaleway",
18
+ region="fr-par",
19
+ zone="fr-par-1"
20
+ )`;
21
+ expect((0, jsii_rosetta_workarounds_1.replacePythonImports)(code)).toEqual(expect.stringContaining("import imports.scaleway as scaleway"));
22
+ });
23
+ it("granular imports", () => {
24
+ const code = `from ...gen.providers.aws.lib.rdsCluster import RdsCluster`;
25
+ expect((0, jsii_rosetta_workarounds_1.replacePythonImports)(code)).toEqual("from imports.aws.rdsCluster import RdsCluster");
26
+ const withoutLibCode = `from ...gen.providers.azurerm.resource_group import ResourceGroup`;
27
+ expect((0, jsii_rosetta_workarounds_1.replacePythonImports)(withoutLibCode)).toEqual("from imports.azurerm.resource_group import ResourceGroup");
28
+ });
29
+ it("resource imports", () => {
30
+ const code = `import ...gen.providers.aws.lib.rdsCluster as RdsCluster`;
31
+ expect((0, jsii_rosetta_workarounds_1.replacePythonImports)(code)).toEqual("import imports.aws.rdsCluster as RdsCluster");
32
+ });
33
+ it("fixes module imports", () => {
34
+ const code = `import ...gen.modules.hello_module as HelloModule`;
35
+ expect((0, jsii_rosetta_workarounds_1.replacePythonImports)(code)).toEqual("import imports.hello_module as HelloModule");
36
+ });
37
+ });
38
+ describe("replaceCsharpImports", () => {
39
+ it("normal imports", () => {
40
+ const code = `using Gen.Providers.Aws.Lib.RdsCluster;`;
41
+ expect((0, jsii_rosetta_workarounds_1.replaceCsharpImports)(code)).toEqual("using aws.RdsCluster;");
42
+ });
43
+ it("fixes module imports", () => {
44
+ const code = `using Gen.Modules.HelloModule`;
45
+ expect((0, jsii_rosetta_workarounds_1.replaceCsharpImports)(code)).toEqual("using HelloModule");
46
+ const anotherCode = `using Gen.Modules.Hello.Module`;
47
+ expect((0, jsii_rosetta_workarounds_1.replaceCsharpImports)(anotherCode)).toEqual("using Hello.Module");
48
+ });
49
+ });
50
+ describe("replaceJavaImports", () => {
51
+ it("normal imports", () => {
52
+ const code = `import gen.providers.scaleway.objectResource.*;`;
53
+ expect((0, jsii_rosetta_workarounds_1.replaceJavaImports)(code)).toEqual("import imports.scaleway.objectResource.*;");
54
+ });
55
+ it("precise imports", () => {
56
+ const code = `import gen.providers.aws.lib.s3Bucket.S3Bucket;`;
57
+ expect((0, jsii_rosetta_workarounds_1.replaceJavaImports)(code)).toEqual("import imports.aws.s3Bucket.S3Bucket;");
58
+ const withoutLibImport = `import gen.providers.aws.s3Bucket.S3Bucket;`;
59
+ expect((0, jsii_rosetta_workarounds_1.replaceJavaImports)(withoutLibImport)).toEqual("import imports.aws.s3Bucket.S3Bucket;");
60
+ });
61
+ it("fixes module imports", () => {
62
+ const code = `import gen.modules.hello.module.*;`;
63
+ expect((0, jsii_rosetta_workarounds_1.replaceJavaImports)(code)).toEqual("import imports.hello.module.*;");
64
+ const anotherCode = `import gen.modules.helloModule.*;`;
65
+ expect((0, jsii_rosetta_workarounds_1.replaceJavaImports)(anotherCode)).toEqual("import imports.helloModule.*;");
66
+ });
67
+ });
68
+ describe("replaceGoImports", () => {
69
+ it("normal imports", () => {
70
+ const code = `import "github.com/aws-samples/dummy/gen/providers/scaleway/objectBucket"`;
71
+ expect((0, jsii_rosetta_workarounds_1.replaceGoImports)(code)).toEqual(`import "cdk.tf/go/stack/generated/scaleway/objectBucket"`);
72
+ });
73
+ it("precise imports", () => {
74
+ const code = `import "github.com/aws-samples/dummy/gen/providers/aws/lib/dbInstance"`;
75
+ expect((0, jsii_rosetta_workarounds_1.replaceGoImports)(code)).toEqual(`import "cdk.tf/go/stack/generated/aws/dbInstance"`);
76
+ });
77
+ it("fixes module imports", () => {
78
+ const code = `import helloModule "github.com/aws-samples/dummy/gen/modules/hello_module"`;
79
+ expect((0, jsii_rosetta_workarounds_1.replaceGoImports)(code)).toEqual(
80
+ // TODO: Set up cdktn.io/ static redirect?
81
+ // "github.com/open-constructs/cdk-terrain/examples/go/documentation/generated/terraform-aws-modules/aws/vpc"
82
+ `import helloModule "cdk.tf/go/stack/generated/hello_module"`);
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2pzaWktcm9zZXR0YS13b3JrYXJvdW5kcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOztBQUVuQywwRUFLcUM7QUFFckMsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtJQUN4QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUc7Ozs7Ozs7Ozs7O1VBV1QsQ0FBQztZQUVMLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMscUNBQXFDLENBQUMsQ0FDL0QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyw0REFBNEQsQ0FBQztZQUUxRSxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDeEMsK0NBQStDLENBQ2hELENBQUM7WUFFRixNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztZQUMzRixNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsMERBQTBELENBQUM7WUFFeEUsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENB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WUFDekIsTUFBTSxJQUFJLEdBQUcsd0VBQXdFLENBQUM7WUFFdEYsTUFBTSxDQUFDLElBQUEsMkNBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BDLG1EQUFtRCxDQUNwRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLDRFQUE0RSxDQUFDO1lBRTFGLE1BQU0sQ0FBQyxJQUFBLDJDQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNwQywwQ0FBMEM7WUFDMUMsNkdBQTZHO1lBQzdHLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0IHtcbiAgcmVwbGFjZUNzaGFycEltcG9ydHMsXG4gIHJlcGxhY2VHb0ltcG9ydHMsXG4gIHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgcmVwbGFjZVB5dGhvbkltcG9ydHMsXG59IGZyb20gXCIuLi9qc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIjtcblxuZGVzY3JpYmUoXCJqc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIiwgKCkgPT4ge1xuICBkZXNjcmliZShcInJlcGxhY2VQeXRob25JbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgXG5pbXBvcnQgY29uc3RydWN0cyBhcyBjb25zdHJ1Y3RzXG4jIFByb3ZpZGVyIGJpbmRpbmdzIGFyZSBnZW5lcmF0ZWQgYnkgcnVubmluZyBjZGt0biBnZXQuXG4jIFNlZSBodHRwczovL2Nkay50Zi9wcm92aWRlci1nZW5lcmF0aW9uIGZvciBtb3JlIGRldGFpbHMuXG5pbXBvcnQgLi4uZ2VuLnByb3ZpZGVycy5zY2FsZXdheSBhcyBzY2FsZXdheVxuY2xhc3MgTXlDb252ZXJ0ZWRDb2RlKGNvbnN0cnVjdHMuQ29uc3RydWN0KTpcbiAgICBkZWYgX19pbml0X18oc2VsZiwgc2NvcGUsIG5hbWUpOlxuICAgICAgICBzdXBlcigpLl9faW5pdF9fKHNjb3BlLCBuYW1lKVxuICAgICAgICBzY2FsZXdheS5wcm92aWRlci5TY2FsZXdheVByb3ZpZGVyKHNlbGYsIFwic2NhbGV3YXlcIixcbiAgICAgICAgICAgIHJlZ2lvbj1cImZyLXBhclwiLFxuICAgICAgICAgICAgem9uZT1cImZyLXBhci0xXCJcbiAgICAgICAgKWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoXCJpbXBvcnQgaW1wb3J0cy5zY2FsZXdheSBhcyBzY2FsZXdheVwiKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImdyYW51bGFyIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBmcm9tIC4uLmdlbi5wcm92aWRlcnMuYXdzLmxpYi5yZHNDbHVzdGVyIGltcG9ydCBSZHNDbHVzdGVyYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImZyb20gaW1wb3J0cy5hd3MucmRzQ2x1c3RlciBpbXBvcnQgUmRzQ2x1c3RlclwiLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgd2l0aG91dExpYkNvZGUgPSBgZnJvbSAuLi5nZW4ucHJvdmlkZXJzLmF6dXJlcm0ucmVzb3VyY2VfZ3JvdXAgaW1wb3J0IFJlc291cmNlR3JvdXBgO1xuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKHdpdGhvdXRMaWJDb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJmcm9tIGltcG9ydHMuYXp1cmVybS5yZXNvdXJjZV9ncm91cCBpbXBvcnQgUmVzb3VyY2VHcm91cFwiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwicmVzb3VyY2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCAuLi5nZW4ucHJvdmlkZXJzLmF3cy5saWIucmRzQ2x1c3RlciBhcyBSZHNDbHVzdGVyYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmF3cy5yZHNDbHVzdGVyIGFzIFJkc0NsdXN0ZXJcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IC4uLmdlbi5tb2R1bGVzLmhlbGxvX21vZHVsZSBhcyBIZWxsb01vZHVsZWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5oZWxsb19tb2R1bGUgYXMgSGVsbG9Nb2R1bGVcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUNzaGFycEltcG9ydHNcIiwgKCkgPT4ge1xuICAgIGl0KFwibm9ybWFsIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGB1c2luZyBHZW4uUHJvdmlkZXJzLkF3cy5MaWIuUmRzQ2x1c3RlcjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUNzaGFycEltcG9ydHMoY29kZSkpLnRvRXF1YWwoXCJ1c2luZyBhd3MuUmRzQ2x1c3RlcjtcIik7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgdXNpbmcgR2VuLk1vZHVsZXMuSGVsbG9Nb2R1bGVgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUNzaGFycEltcG9ydHMoY29kZSkpLnRvRXF1YWwoXCJ1c2luZyBIZWxsb01vZHVsZVwiKTtcblxuICAgICAgY29uc3QgYW5vdGhlckNvZGUgPSBgdXNpbmcgR2VuLk1vZHVsZXMuSGVsbG8uTW9kdWxlYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGFub3RoZXJDb2RlKSkudG9FcXVhbChcInVzaW5nIEhlbGxvLk1vZHVsZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJyZXBsYWNlSmF2YUltcG9ydHNcIiwgKCkgPT4ge1xuICAgIGl0KFwibm9ybWFsIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5zY2FsZXdheS5vYmplY3RSZXNvdXJjZS4qO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuc2NhbGV3YXkub2JqZWN0UmVzb3VyY2UuKjtcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInByZWNpc2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBnZW4ucHJvdmlkZXJzLmF3cy5saWIuczNCdWNrZXQuUzNCdWNrZXQ7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7XCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCB3aXRob3V0TGliSW1wb3J0ID0gYGltcG9ydCBnZW4ucHJvdmlkZXJzLmF3cy5zM0J1Y2tldC5TM0J1Y2tldDtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKHdpdGhvdXRMaWJJbXBvcnQpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmF3cy5zM0J1Y2tldC5TM0J1Y2tldDtcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGdlbi5tb2R1bGVzLmhlbGxvLm1vZHVsZS4qO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG8ubW9kdWxlLio7XCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhbm90aGVyQ29kZSA9IGBpbXBvcnQgZ2VuLm1vZHVsZXMuaGVsbG9Nb2R1bGUuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGFub3RoZXJDb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5oZWxsb01vZHVsZS4qO1wiLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJyZXBsYWNlR29JbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IFwiZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9kdW1teS9nZW4vcHJvdmlkZXJzL3NjYWxld2F5L29iamVjdEJ1Y2tldFwiYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VHb0ltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIGBpbXBvcnQgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkL3NjYWxld2F5L29iamVjdEJ1Y2tldFwiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInByZWNpc2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL3Byb3ZpZGVycy9hd3MvbGliL2RiSW5zdGFuY2VcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9hd3MvZGJJbnN0YW5jZVwiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGhlbGxvTW9kdWxlIFwiZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9kdW1teS9nZW4vbW9kdWxlcy9oZWxsb19tb2R1bGVcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICAvLyBUT0RPOiBTZXQgdXAgY2RrdG4uaW8vIHN0YXRpYyByZWRpcmVjdD9cbiAgICAgICAgLy8gXCJnaXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbi9leGFtcGxlcy9nby9kb2N1bWVudGF0aW9uL2dlbmVyYXRlZC90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3ZwY1wiXG4gICAgICAgIGBpbXBvcnQgaGVsbG9Nb2R1bGUgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkL2hlbGxvX21vZHVsZVwiYCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,390 @@
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 partialCode_1 = require("../partialCode");
8
+ const getScope = () => ({
9
+ providerSchema: {
10
+ format_version: "0.1",
11
+ provider_schemas: {
12
+ aws: {
13
+ data_source_schemas: {},
14
+ provider: {
15
+ block: {
16
+ attributes: {},
17
+ block_types: {},
18
+ },
19
+ version: 0,
20
+ },
21
+ resource_schemas: {
22
+ aws_image: {
23
+ version: 0,
24
+ block: {
25
+ block_types: {
26
+ c: {
27
+ nesting_mode: "single",
28
+ block: {
29
+ attributes: {
30
+ d: {
31
+ type: "string",
32
+ description_kind: "plain",
33
+ optional: true,
34
+ required: true,
35
+ },
36
+ },
37
+ block_types: {},
38
+ },
39
+ },
40
+ d: {
41
+ nesting_mode: "list",
42
+ block: {
43
+ attributes: {
44
+ e: {
45
+ type: "string",
46
+ description_kind: "plain",
47
+ optional: true,
48
+ required: true,
49
+ },
50
+ },
51
+ block_types: {},
52
+ },
53
+ min_items: 1,
54
+ },
55
+ timeouts: {
56
+ nesting_mode: "single",
57
+ block: {
58
+ attributes: {
59
+ read: {
60
+ type: "string",
61
+ description_kind: "plain",
62
+ optional: true,
63
+ },
64
+ },
65
+ block_types: {},
66
+ description_kind: "plain",
67
+ },
68
+ },
69
+ },
70
+ attributes: {
71
+ a: {
72
+ type: "string",
73
+ required: true,
74
+ },
75
+ b: {
76
+ type: "string",
77
+ required: true,
78
+ },
79
+ },
80
+ },
81
+ },
82
+ },
83
+ },
84
+ },
85
+ },
86
+ constructs: new Set(),
87
+ hasTokenBasedTypeCoercion: false,
88
+ nodeIds: [],
89
+ providerGenerator: {},
90
+ variables: {},
91
+ importables: [],
92
+ // This should be mutated
93
+ topLevelConfig: {},
94
+ });
95
+ describe("fillWithConfigAccessors", () => {
96
+ it("adds a missing required attributes", () => {
97
+ const scope = getScope();
98
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
99
+ a: "a",
100
+ c: {
101
+ d: "d",
102
+ },
103
+ timeouts: {
104
+ read: "20m",
105
+ },
106
+ d: [{ e: "e" }],
107
+ }, "aws.image");
108
+ expect(scope.topLevelConfig.b).toEqual("aws.image.b");
109
+ expect(result).toMatchInlineSnapshot(`
110
+ {
111
+ "a": "a",
112
+ "b": {
113
+ "computed": false,
114
+ "object": {
115
+ "name": "config",
116
+ "type": "Identifier",
117
+ },
118
+ "optional": null,
119
+ "property": {
120
+ "name": "b",
121
+ "type": "Identifier",
122
+ },
123
+ "type": "MemberExpression",
124
+ },
125
+ "c": {
126
+ "d": "d",
127
+ },
128
+ "d": [
129
+ {
130
+ "e": "e",
131
+ },
132
+ ],
133
+ "timeouts": {
134
+ "read": "20m",
135
+ },
136
+ }
137
+ `);
138
+ });
139
+ it("ignores missing unrequired set block types", () => {
140
+ const scope = getScope();
141
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
142
+ a: "a",
143
+ b: "b",
144
+ c: {
145
+ d: "d",
146
+ },
147
+ d: [{ e: "e" }],
148
+ }, "aws.image");
149
+ expect(scope.topLevelConfig).toEqual({});
150
+ expect(result).toMatchInlineSnapshot(`
151
+ {
152
+ "a": "a",
153
+ "b": "b",
154
+ "c": {
155
+ "d": "d",
156
+ },
157
+ "d": [
158
+ {
159
+ "e": "e",
160
+ },
161
+ ],
162
+ }
163
+ `);
164
+ });
165
+ it("fills within a single block type", () => {
166
+ const scope = getScope();
167
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
168
+ a: "a",
169
+ b: "b",
170
+ c: {},
171
+ d: [{ e: "e" }],
172
+ }, "aws.image");
173
+ expect(scope.topLevelConfig).toEqual({
174
+ d: "aws.image.c.d",
175
+ });
176
+ expect(result).toMatchInlineSnapshot(`
177
+ {
178
+ "a": "a",
179
+ "b": "b",
180
+ "c": {
181
+ "d": {
182
+ "computed": false,
183
+ "object": {
184
+ "name": "config",
185
+ "type": "Identifier",
186
+ },
187
+ "optional": null,
188
+ "property": {
189
+ "name": "d",
190
+ "type": "Identifier",
191
+ },
192
+ "type": "MemberExpression",
193
+ },
194
+ },
195
+ "d": [
196
+ {
197
+ "e": "e",
198
+ },
199
+ ],
200
+ }
201
+ `);
202
+ });
203
+ it("fills an entire single block type", () => {
204
+ const scope = getScope();
205
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
206
+ a: "a",
207
+ b: "b",
208
+ d: [{ e: "e" }],
209
+ }, "aws.image");
210
+ expect(scope.topLevelConfig).toEqual({
211
+ c: "aws.image.c",
212
+ });
213
+ expect(result).toMatchInlineSnapshot(`
214
+ {
215
+ "a": "a",
216
+ "b": "b",
217
+ "c": {
218
+ "computed": false,
219
+ "object": {
220
+ "name": "config",
221
+ "type": "Identifier",
222
+ },
223
+ "optional": null,
224
+ "property": {
225
+ "name": "c",
226
+ "type": "Identifier",
227
+ },
228
+ "type": "MemberExpression",
229
+ },
230
+ "d": [
231
+ {
232
+ "e": "e",
233
+ },
234
+ ],
235
+ }
236
+ `);
237
+ });
238
+ it("fills within a list block type", () => {
239
+ const scope = getScope();
240
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
241
+ a: "a",
242
+ b: "b",
243
+ c: { d: "d" },
244
+ d: [{}],
245
+ }, "aws.image");
246
+ expect(scope.topLevelConfig).toEqual({
247
+ e: "aws.image.d.[].e",
248
+ });
249
+ expect(result).toMatchInlineSnapshot(`
250
+ {
251
+ "a": "a",
252
+ "b": "b",
253
+ "c": {
254
+ "d": "d",
255
+ },
256
+ "d": [
257
+ {
258
+ "e": {
259
+ "computed": false,
260
+ "object": {
261
+ "name": "config",
262
+ "type": "Identifier",
263
+ },
264
+ "optional": null,
265
+ "property": {
266
+ "name": "e",
267
+ "type": "Identifier",
268
+ },
269
+ "type": "MemberExpression",
270
+ },
271
+ },
272
+ ],
273
+ }
274
+ `);
275
+ });
276
+ it("fills an entire list block type", () => {
277
+ const scope = getScope();
278
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
279
+ a: "a",
280
+ b: "b",
281
+ c: { d: "d" },
282
+ }, "aws.image");
283
+ expect(scope.topLevelConfig).toEqual({
284
+ d: "aws.image.d",
285
+ });
286
+ expect(result).toMatchInlineSnapshot(`
287
+ {
288
+ "a": "a",
289
+ "b": "b",
290
+ "c": {
291
+ "d": "d",
292
+ },
293
+ "d": {
294
+ "computed": false,
295
+ "object": {
296
+ "name": "config",
297
+ "type": "Identifier",
298
+ },
299
+ "optional": null,
300
+ "property": {
301
+ "name": "d",
302
+ "type": "Identifier",
303
+ },
304
+ "type": "MemberExpression",
305
+ },
306
+ }
307
+ `);
308
+ });
309
+ it("can handle multiple fills with the same name", () => {
310
+ const scope = getScope();
311
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
312
+ a: "a",
313
+ b: "b",
314
+ c: {},
315
+ }, "aws.image");
316
+ expect(scope.topLevelConfig).toEqual({
317
+ d: "aws.image.c.d",
318
+ d1: "aws.image.d",
319
+ });
320
+ expect(result).toMatchInlineSnapshot(`
321
+ {
322
+ "a": "a",
323
+ "b": "b",
324
+ "c": {
325
+ "d": {
326
+ "computed": false,
327
+ "object": {
328
+ "name": "config",
329
+ "type": "Identifier",
330
+ },
331
+ "optional": null,
332
+ "property": {
333
+ "name": "d",
334
+ "type": "Identifier",
335
+ },
336
+ "type": "MemberExpression",
337
+ },
338
+ },
339
+ "d": {
340
+ "computed": false,
341
+ "object": {
342
+ "name": "config",
343
+ "type": "Identifier",
344
+ },
345
+ "optional": null,
346
+ "property": {
347
+ "name": "d1",
348
+ "type": "Identifier",
349
+ },
350
+ "type": "MemberExpression",
351
+ },
352
+ }
353
+ `);
354
+ });
355
+ it("fills lists with min_items > 0", () => {
356
+ const scope = getScope();
357
+ const result = (0, partialCode_1.fillWithConfigAccessors)(scope, {
358
+ a: "a",
359
+ b: "b",
360
+ c: { d: "d" },
361
+ d: [],
362
+ }, "aws.image");
363
+ expect(scope.topLevelConfig).toEqual({
364
+ d: "aws.image.d",
365
+ });
366
+ expect(result).toMatchInlineSnapshot(`
367
+ {
368
+ "a": "a",
369
+ "b": "b",
370
+ "c": {
371
+ "d": "d",
372
+ },
373
+ "d": {
374
+ "computed": false,
375
+ "object": {
376
+ "name": "config",
377
+ "type": "Identifier",
378
+ },
379
+ "optional": null,
380
+ "property": {
381
+ "name": "d",
382
+ "type": "Identifier",
383
+ },
384
+ "type": "MemberExpression",
385
+ },
386
+ }
387
+ `);
388
+ });
389
+ });
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbENvZGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcGFydGlhbENvZGUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQUVILGdEQUF5RDtBQUd6RCxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FDcEIsQ0FBQztJQUNDLGNBQWMsRUFBRTtRQUNkLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGdCQUFnQixFQUFFO1lBQ2hCLEdBQUcsRUFBRTtnQkFDSCxtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFO3dCQUNMLFVBQVUsRUFBRSxFQUFFO3dCQUNkLFdBQVcsRUFBRSxFQUFFO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQztpQkFDWDtnQkFDRCxnQkFBZ0IsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxDQUFDO3dCQUNWLEtBQUssRUFBRTs0QkFDTCxXQUFXLEVBQUU7Z0NBQ1gsQ0FBQyxFQUFFO29DQUNELFlBQVksRUFBRSxRQUFRO29DQUN0QixLQUFLLEVBQUU7d0NBQ0wsVUFBVSxFQUFFOzRDQUNWLENBQUMsRUFBRTtnREFDRCxJQUFJLEVBQUUsUUFBUTtnREFDZCxnQkFBZ0IsRUFBRSxPQUFPO2dEQUN6QixRQUFRLEVBQUUsSUFBSTtnREFDZCxRQUFRLEVBQUUsSUFBSTs2Q0FDZjt5Q0FDRjt3Q0FDRCxXQUFXLEVBQUUsRUFBRTtxQ0FDaEI7aUNBQ0Y7Z0NBQ0QsQ0FBQyxFQUFFO29DQUNELFlBQVksRUFBRSxNQUFNO29DQUNwQixLQUFLLEVBQUU7d0NBQ0wsVUFBVSxFQUFFOzRDQUNWLENBQUMsRUFBRTtnREFDRCxJQUFJLEVBQUUsUUFBUTtnREFDZCxnQkFBZ0IsRUFBRSxPQUFPO2dEQUN6QixRQUFRLEVBQUUsSUFBSTtnREFDZCxRQUFRLEVBQUUsSUFBSTs2Q0FDZjt5Q0FDRjt3Q0FD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bkMsQ0FBQyxFQUFFLGVBQWU7WUFDbEIsRUFBRSxFQUFFLGFBQWE7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FpQ3BDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFBLHFDQUF1QixFQUNwQyxLQUFLLEVBQ0w7WUFDRSxDQUFDLEVBQUUsR0FBRztZQUNOLENBQUMsRUFBRSxHQUFHO1lBQ04sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNiLENBQUMsRUFBRSxFQUFFO1NBQ04sRUFDRCxXQUFXLENBQ1osQ0FBQztRQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25DLENBQUMsRUFBRSxhQUFhO1NBQ2pCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUJwQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyB9IGZyb20gXCIuLi9wYXJ0aWFsQ29kZVwiO1xuaW1wb3J0IHsgUHJvZ3JhbVNjb3BlIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmNvbnN0IGdldFNjb3BlID0gKCkgPT5cbiAgKHtcbiAgICBwcm92aWRlclNjaGVtYToge1xuICAgICAgZm9ybWF0X3ZlcnNpb246IFwiMC4xXCIsXG4gICAgICBwcm92aWRlcl9zY2hlbWFzOiB7XG4gICAgICAgIGF3czoge1xuICAgICAgICAgIGRhdGFfc291cmNlX3NjaGVtYXM6IHt9LFxuICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZV9zY2hlbWFzOiB7XG4gICAgICAgICAgICBhd3NfaW1hZ2U6IHtcbiAgICAgICAgICAgICAgdmVyc2lvbjogMCxcbiAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICBibG9ja190eXBlczoge1xuICAgICAgICAgICAgICAgICAgYzoge1xuICAgICAgICAgICAgICAgICAgICBuZXN0aW5nX21vZGU6IFwic2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbl9raW5kOiBcInBsYWluXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlczoge30sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZDoge1xuICAgICAgICAgICAgICAgICAgICBuZXN0aW5nX21vZGU6IFwibGlzdFwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fa2luZDogXCJwbGFpblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtaW5faXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGltZW91dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fa2luZDogXCJwbGFpblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlczoge30sXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fa2luZDogXCJwbGFpblwiLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYjoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjb25zdHJ1Y3RzOiBuZXcgU2V0KCksXG4gICAgaGFzVG9rZW5CYXNlZFR5cGVDb2VyY2lvbjogZmFsc2UsXG4gICAgbm9kZUlkczogW10sXG4gICAgcHJvdmlkZXJHZW5lcmF0b3I6IHt9LFxuICAgIHZhcmlhYmxlczoge30sXG4gICAgaW1wb3J0YWJsZXM6IFtdLFxuXG4gICAgLy8gVGhpcyBzaG91bGQgYmUgbXV0YXRlZFxuICAgIHRvcExldmVsQ29uZmlnOiB7fSxcbiAgfSkgYXMgUHJvZ3JhbVNjb3BlO1xuXG5kZXNjcmliZShcImZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzXCIsICgpID0+IHtcbiAgaXQoXCJhZGRzIGEgbWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGVzXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGM6IHtcbiAgICAgICAgICBkOiBcImRcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGltZW91dHM6IHtcbiAgICAgICAgICByZWFkOiBcIjIwbVwiLFxuICAgICAgICB9LFxuICAgICAgICBkOiBbeyBlOiBcImVcIiB9XSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnLmIpLnRvRXF1YWwoXCJhd3MuaW1hZ2UuYlwiKTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImJcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IFwiZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIFwidGltZW91dHNcIjoge1xuICAgICAgICAgIFwicmVhZFwiOiBcIjIwbVwiLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImlnbm9yZXMgbWlzc2luZyB1bnJlcXVpcmVkIHNldCBibG9jayB0eXBlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzoge1xuICAgICAgICAgIGQ6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBkOiBbeyBlOiBcImVcIiB9XSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHt9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IFwiZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgd2l0aGluIGEgc2luZ2xlIGJsb2NrIHR5cGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGM6IHt9LFxuICAgICAgICBkOiBbeyBlOiBcImVcIiB9XSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmMuZFwiLFxuICAgIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICB7XG4gICAgICAgIFwiYVwiOiBcImFcIixcbiAgICAgICAgXCJiXCI6IFwiYlwiLFxuICAgICAgICBcImNcIjoge1xuICAgICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgICBcImNvbXB1dGVkXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICAgIFwicHJvcGVydHlcIjoge1xuICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkXCIsXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgXCJkXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImVcIjogXCJlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJmaWxscyBhbiBlbnRpcmUgc2luZ2xlIGJsb2NrIHR5cGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGQ6IFt7IGU6IFwiZVwiIH1dLFxuICAgICAgfSxcbiAgICAgIFwiYXdzLmltYWdlXCIsXG4gICAgKTtcbiAgICBleHBlY3Qoc2NvcGUudG9wTGV2ZWxDb25maWcpLnRvRXF1YWwoe1xuICAgICAgYzogXCJhd3MuaW1hZ2UuY1wiLFxuICAgIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICB7XG4gICAgICAgIFwiYVwiOiBcImFcIixcbiAgICAgICAgXCJiXCI6IFwiYlwiLFxuICAgICAgICBcImNcIjoge1xuICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IFwiZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgd2l0aGluIGEgbGlzdCBibG9jayB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBjOiB7IGQ6IFwiZFwiIH0sXG4gICAgICAgIGQ6IFt7fV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7XG4gICAgICBlOiBcImF3cy5pbWFnZS5kLltdLmVcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IHtcbiAgICAgICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJlXCIsXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgYW4gZW50aXJlIGxpc3QgYmxvY2sgdHlwZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzogeyBkOiBcImRcIiB9LFxuICAgICAgfSxcbiAgICAgIFwiYXdzLmltYWdlXCIsXG4gICAgKTtcbiAgICBleHBlY3Qoc2NvcGUudG9wTGV2ZWxDb25maWcpLnRvRXF1YWwoe1xuICAgICAgZDogXCJhd3MuaW1hZ2UuZFwiLFxuICAgIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICB7XG4gICAgICAgIFwiYVwiOiBcImFcIixcbiAgICAgICAgXCJiXCI6IFwiYlwiLFxuICAgICAgICBcImNcIjoge1xuICAgICAgICAgIFwiZFwiOiBcImRcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJkXCI6IHtcbiAgICAgICAgICBcImNvbXB1dGVkXCI6IGZhbHNlLFxuICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgIFwicHJvcGVydHlcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiZFwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImNhbiBoYW5kbGUgbXVsdGlwbGUgZmlsbHMgd2l0aCB0aGUgc2FtZSBuYW1lXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBjOiB7fSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmMuZFwiLFxuICAgICAgZDE6IFwiYXdzLmltYWdlLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjoge1xuICAgICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZFwiLFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImQxXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgbGlzdHMgd2l0aCBtaW5faXRlbXMgPiAwXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBjOiB7IGQ6IFwiZFwiIH0sXG4gICAgICAgIGQ6IFtdLFxuICAgICAgfSxcbiAgICAgIFwiYXdzLmltYWdlXCIsXG4gICAgKTtcbiAgICBleHBlY3Qoc2NvcGUudG9wTGV2ZWxDb25maWcpLnRvRXF1YWwoe1xuICAgICAgZDogXCJhd3MuaW1hZ2UuZFwiLFxuICAgIH0pO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChgXG4gICAgICB7XG4gICAgICAgIFwiYVwiOiBcImFcIixcbiAgICAgICAgXCJiXCI6IFwiYlwiLFxuICAgICAgICBcImNcIjoge1xuICAgICAgICAgIFwiZFwiOiBcImRcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJkXCI6IHtcbiAgICAgICAgICBcImNvbXB1dGVkXCI6IGZhbHNlLFxuICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgIFwicHJvcGVydHlcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiZFwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcbn0pO1xuIl19