@cdktn/hcl2cdk 0.23.0-pre.7 → 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,45 +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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJhdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBRUgsOENBQWtEO0FBRWxELCtDQUEwQztBQUUxQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLEtBQUssVUFBVSxHQUFHLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUEsdUJBQVMsRUFDZCxNQUFNLElBQUEsOEJBQWlCLEVBQ3JCO1lBQ0UsV0FBVyxFQUFFLEVBQUU7U0FDVyxFQUM1QixJQUFJLENBQ0wsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDbEQsdUJBQXVCLENBQ3hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLENBQ0osTUFBTSxHQUFHLENBQ1AsaUZBQWlGLENBQ2xGLENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7S0FLdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUMsTUFBTSxDQUNKLE1BQU0sR0FBRyxDQUNQLDRIQUE0SCxDQUM3SCxDQUNGLENBQUMscUJBQXFCLENBQUM7Ozs7OztLQU12QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6QyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN2RCx5Q0FBeUMsQ0FDMUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJCQUEyQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3ZELHlDQUF5QyxDQUMxQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDdkUsbUZBQW1GLENBQ3BGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyB2YXJpYWJsZVR5cGVUb0FzdCB9IGZyb20gXCIuLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGFzdFRvQ29kZSB9IGZyb20gXCIuL3Rlc3RIZWxwZXJzXCI7XG5cbmRlc2NyaWJlKFwidmFyaWFibGVUeXBlVG9Bc3RcIiwgKCkgPT4ge1xuICBhc3luYyBmdW5jdGlvbiBydW4odHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGFzdFRvQ29kZShcbiAgICAgIGF3YWl0IHZhcmlhYmxlVHlwZVRvQXN0KFxuICAgICAgICB7XG4gICAgICAgICAgaW1wb3J0YWJsZXM6IFtdLFxuICAgICAgICB9IGFzIHVua25vd24gYXMgUHJvZ3JhbVNjb3BlLFxuICAgICAgICB0eXBlLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHNpbXBsZSB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHtzdHJpbmd9XCIpKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCJWYXJpYWJsZVR5cGUuU1RSSU5HXCJgLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgYSBvYmplY3QgdHlwZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgYXdhaXQgcnVuKFxuICAgICAgICBcIiR7b2JqZWN0KHtcXG4gICAgICAgICAgbmFtZSAgICA9IHN0cmluZ1xcbiAgICAgICAgICBhZGRyZXNzID0gc3RyaW5nXFxuICAgICAgICB9KX1cIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAgXCJWYXJpYWJsZVR5cGUub2JqZWN0KHtcbiAgICAgICAgXCJhZGRyZXNzXCI6IFZhcmlhYmxlVHlwZS5TVFJJTkcsXG4gICAgICAgIFwibmFtZVwiOiBWYXJpYWJsZVR5cGUuU1RSSU5HXG4gICAgICB9KVwiXG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgYSBsaXN0IHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGF3YWl0IHJ1bihcbiAgICAgICAgXCIke2xpc3Qob2JqZWN0KHtcXG4gICAgICAgICAgICBpbnRlcm5hbCA9IG51bWJlclxcbiAgICAgICAgICAgIGV4dGVybmFsID0gbnVtYmVyXFxuICAgICAgICAgICAgcHJvdG9jb2wgPSBzdHJpbmdcXG4gICAgICAgIH0pKX1cIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAgXCJWYXJpYWJsZVR5cGUubGlzdChWYXJpYWJsZVR5cGUub2JqZWN0KHtcbiAgICAgICAgXCJleHRlcm5hbFwiOiBWYXJpYWJsZVR5cGUuTlVNQkVSLFxuICAgICAgICBcImludGVybmFsXCI6IFZhcmlhYmxlVHlwZS5OVU1CRVIsXG4gICAgICAgIFwicHJvdG9jb2xcIjogVmFyaWFibGVUeXBlLlNUUklOR1xuICAgICAgfSkpXCJcbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHNldCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHtzZXQoc3RyaW5nKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS5zZXQoVmFyaWFibGVUeXBlLlNUUklORylcImAsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIG1hcCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHttYXAoc3RyaW5nKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS5tYXAoVmFyaWFibGVUeXBlLlNUUklORylcImAsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHR1cGxlIHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChhd2FpdCBydW4oXCIke3R1cGxlKHN0cmluZywgbnVtYmVyLCBib29sKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS50dXBsZShWYXJpYWJsZVR5cGUuU1RSSU5HLCBWYXJpYWJsZVR5cGUuTlVNQkVSLCBWYXJpYWJsZVR5cGUuQk9PTClcImAsXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,86 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQzs7QUFFbkMsMEVBS3FDO0FBRXJDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHOzs7Ozs7Ozs7OztVQVdULENBQUM7WUFFTCxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDeEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHFDQUFxQyxDQUFDLENBQy9ELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsNERBQTRELENBQUM7WUFFMUUsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3hDLCtDQUErQyxDQUNoRCxDQUFDO1lBRUYsTUFBTSxjQUFjLEdBQUcsbUVBQW1FLENBQUM7WUFDM0YsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2xELDBEQUEwRCxDQUMzRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLDBEQUEwRCxDQUFDO1lBRXhFLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4Qyw2Q0FBNkMsQ0FDOUMsQ0FB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LHdFQUF3RSxDQUFDO1lBRXRGLE1BQU0sQ0FBQyxJQUFBLDJDQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNwQyxtREFBbUQsQ0FDcEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUM5QixNQUFNLElBQUksR0FBRyw0RUFBNEUsQ0FBQztZQUUxRixNQUFNLENBQUMsSUFBQSwyQ0FBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDcEMsMENBQTBDO1lBQzFDLDZHQUE2RztZQUM3Ryw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmltcG9ydCB7XG4gIHJlcGxhY2VDc2hhcnBJbXBvcnRzLFxuICByZXBsYWNlR29JbXBvcnRzLFxuICByZXBsYWNlSmF2YUltcG9ydHMsXG4gIHJlcGxhY2VQeXRob25JbXBvcnRzLFxufSBmcm9tIFwiLi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5cbmRlc2NyaWJlKFwianNpaS1yb3NldHRhLXdvcmthcm91bmRzXCIsICgpID0+IHtcbiAgZGVzY3JpYmUoXCJyZXBsYWNlUHl0aG9uSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYFxuaW1wb3J0IGNvbnN0cnVjdHMgYXMgY29uc3RydWN0c1xuIyBQcm92aWRlciBiaW5kaW5ncyBhcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgY2RrdG4gZ2V0LlxuIyBTZWUgaHR0cHM6Ly9jZGsudGYvcHJvdmlkZXItZ2VuZXJhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlxuaW1wb3J0IC4uLmdlbi5wcm92aWRlcnMuc2NhbGV3YXkgYXMgc2NhbGV3YXlcbmNsYXNzIE15Q29udmVydGVkQ29kZShjb25zdHJ1Y3RzLkNvbnN0cnVjdCk6XG4gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjb3BlLCBuYW1lKTpcbiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhzY29wZSwgbmFtZSlcbiAgICAgICAgc2NhbGV3YXkucHJvdmlkZXIuU2NhbGV3YXlQcm92aWRlcihzZWxmLCBcInNjYWxld2F5XCIsXG4gICAgICAgICAgICByZWdpb249XCJmci1wYXJcIixcbiAgICAgICAgICAgIHpvbmU9XCJmci1wYXItMVwiXG4gICAgICAgIClgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKFwiaW1wb3J0IGltcG9ydHMuc2NhbGV3YXkgYXMgc2NhbGV3YXlcIiksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJncmFudWxhciBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgZnJvbSAuLi5nZW4ucHJvdmlkZXJzLmF3cy5saWIucmRzQ2x1c3RlciBpbXBvcnQgUmRzQ2x1c3RlcmA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJmcm9tIGltcG9ydHMuYXdzLnJkc0NsdXN0ZXIgaW1wb3J0IFJkc0NsdXN0ZXJcIixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpdGhvdXRMaWJDb2RlID0gYGZyb20gLi4uZ2VuLnByb3ZpZGVycy5henVyZXJtLnJlc291cmNlX2dyb3VwIGltcG9ydCBSZXNvdXJjZUdyb3VwYDtcbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyh3aXRob3V0TGliQ29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiZnJvbSBpbXBvcnRzLmF6dXJlcm0ucmVzb3VyY2VfZ3JvdXAgaW1wb3J0IFJlc291cmNlR3JvdXBcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInJlc291cmNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgLi4uZ2VuLnByb3ZpZGVycy5hd3MubGliLnJkc0NsdXN0ZXIgYXMgUmRzQ2x1c3RlcmA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MucmRzQ2x1c3RlciBhcyBSZHNDbHVzdGVyXCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCAuLi5nZW4ubW9kdWxlcy5oZWxsb19tb2R1bGUgYXMgSGVsbG9Nb2R1bGVgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG9fbW9kdWxlIGFzIEhlbGxvTW9kdWxlXCIsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcInJlcGxhY2VDc2hhcnBJbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgdXNpbmcgR2VuLlByb3ZpZGVycy5Bd3MuTGliLlJkc0NsdXN0ZXI7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFwidXNpbmcgYXdzLlJkc0NsdXN0ZXI7XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYHVzaW5nIEdlbi5Nb2R1bGVzLkhlbGxvTW9kdWxlYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFwidXNpbmcgSGVsbG9Nb2R1bGVcIik7XG5cbiAgICAgIGNvbnN0IGFub3RoZXJDb2RlID0gYHVzaW5nIEdlbi5Nb2R1bGVzLkhlbGxvLk1vZHVsZWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlQ3NoYXJwSW1wb3J0cyhhbm90aGVyQ29kZSkpLnRvRXF1YWwoXCJ1c2luZyBIZWxsby5Nb2R1bGVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUphdmFJbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGdlbi5wcm92aWRlcnMuc2NhbGV3YXkub2JqZWN0UmVzb3VyY2UuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLnNjYWxld2F5Lm9iamVjdFJlc291cmNlLio7XCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJwcmVjaXNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5hd3MubGliLnMzQnVja2V0LlMzQnVja2V0O2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuYXdzLnMzQnVja2V0LlMzQnVja2V0O1wiLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgd2l0aG91dExpYkltcG9ydCA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyh3aXRob3V0TGliSW1wb3J0KSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7XCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBnZW4ubW9kdWxlcy5oZWxsby5tb2R1bGUuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmhlbGxvLm1vZHVsZS4qO1wiLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYW5vdGhlckNvZGUgPSBgaW1wb3J0IGdlbi5tb2R1bGVzLmhlbGxvTW9kdWxlLio7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhhbm90aGVyQ29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG9Nb2R1bGUuKjtcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUdvSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL3Byb3ZpZGVycy9zY2FsZXdheS9vYmplY3RCdWNrZXRcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9zY2FsZXdheS9vYmplY3RCdWNrZXRcImAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJwcmVjaXNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgXCJnaXRodWIuY29tL2F3cy1zYW1wbGVzL2R1bW15L2dlbi9wcm92aWRlcnMvYXdzL2xpYi9kYkluc3RhbmNlXCJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUdvSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgYGltcG9ydCBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvYXdzL2RiSW5zdGFuY2VcImAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBoZWxsb01vZHVsZSBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL21vZHVsZXMvaGVsbG9fbW9kdWxlXCJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUdvSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgLy8gVE9ETzogU2V0IHVwIGNka3RuLmlvLyBzdGF0aWMgcmVkaXJlY3Q/XG4gICAgICAgIC8vIFwiZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vZXhhbXBsZXMvZ28vZG9jdW1lbnRhdGlvbi9nZW5lcmF0ZWQvdGVycmFmb3JtLWF3cy1tb2R1bGVzL2F3cy92cGNcIlxuICAgICAgICBgaW1wb3J0IGhlbGxvTW9kdWxlIFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9oZWxsb19tb2R1bGVcImAsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,390 +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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbENvZGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcnRpYWxDb2RlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFFSCxnREFBeUQ7QUFHekQsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQ3BCLENBQUM7SUFDQyxjQUFjLEVBQUU7UUFDZCxjQUFjLEVBQUUsS0FBSztRQUNyQixnQkFBZ0IsRUFBRTtZQUNoQixHQUFHLEVBQUU7Z0JBQ0gsbUJBQW1CLEVBQUUsRUFBRTtnQkFDdkIsUUFBUSxFQUFFO29CQUNSLEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsRUFBRTt3QkFDZCxXQUFXLEVBQUUsRUFBRTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUM7aUJBQ1g7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxPQUFPLEVBQUUsQ0FBQzt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsV0FBVyxFQUFFO2dDQUNYLENBQUMsRUFBRTtvQ0FDRCxZQUFZLEVBQUUsUUFBUTtvQ0FDdEIsS0FBSyxFQUFFO3dDQUNMLFVBQVUsRUFBRTs0Q0FDVixDQUFDLEVBQUU7Z0RBQ0QsSUFBSSxFQUFFLFFBQVE7Z0RBQ2QsZ0JBQWdCLEVBQUUsT0FBTztnREFDekIsUUFBUSxFQUFFLElBQUk7Z0RBQ2QsUUFBUSxFQUFFLElBQUk7NkNBQ2Y7eUNBQ0Y7d0NBQ0QsV0FBVyxFQUFFLEVBQUU7cUNBQ2hCO2lDQUNGO2dDQUNELENBQUMsRUFBRTtvQ0FDRCxZQUFZLEVBQUUsTUFBTTtvQ0FDcEIsS0FBSyxFQUFFO3dDQUNMLFVBQVUsRUFBRTs0Q0FDVixDQUFDLEVBQUU7Z0RBQ0QsSUFBSSxFQUFFLFFBQVE7Z0RBQ2QsZ0JBQWdCLEVBQUUsT0FBTztnREFDekIsUUFBUSxFQUFFLElBQUk7Z0RBQ2QsUUFBUSxFQUFFLElBQUk7NkNBQ2Y7eUNBQ0Y7d0NBQ0QsV0FBVyxFQUFFLEVBQUU7cUNB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Q2xCLEVBQUUsRUFBRSxhQUFhO1NBQ2xCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBdUIsRUFDcEMsS0FBSyxFQUNMO1lBQ0UsQ0FBQyxFQUFFLEdBQUc7WUFDTixDQUFDLEVBQUUsR0FBRztZQUNOLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDYixDQUFDLEVBQUUsRUFBRTtTQUNOLEVBQ0QsV0FBVyxDQUNaLENBQUM7UUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxDQUFDLEVBQUUsYUFBYTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMgfSBmcm9tIFwiLi4vcGFydGlhbENvZGVcIjtcbmltcG9ydCB7IFByb2dyYW1TY29wZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCBnZXRTY29wZSA9ICgpID0+XG4gICh7XG4gICAgcHJvdmlkZXJTY2hlbWE6IHtcbiAgICAgIGZvcm1hdF92ZXJzaW9uOiBcIjAuMVwiLFxuICAgICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBkYXRhX3NvdXJjZV9zY2hlbWFzOiB7fSxcbiAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJzaW9uOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2Vfc2NoZW1hczoge1xuICAgICAgICAgICAgYXdzX2ltYWdlOiB7XG4gICAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHtcbiAgICAgICAgICAgICAgICAgIGM6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fa2luZDogXCJwbGFpblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcImxpc3RcIixcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbWluX2l0ZW1zOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRpbWVvdXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJzaW5nbGVcIixcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGI6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29uc3RydWN0czogbmV3IFNldCgpLFxuICAgIGhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb246IGZhbHNlLFxuICAgIG5vZGVJZHM6IFtdLFxuICAgIHByb3ZpZGVyR2VuZXJhdG9yOiB7fSxcbiAgICB2YXJpYWJsZXM6IHt9LFxuICAgIGltcG9ydGFibGVzOiBbXSxcblxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIG11dGF0ZWRcbiAgICB0b3BMZXZlbENvbmZpZzoge30sXG4gIH0pIGFzIFByb2dyYW1TY29wZTtcblxuZGVzY3JpYmUoXCJmaWxsV2l0aENvbmZpZ0FjY2Vzc29yc1wiLCAoKSA9PiB7XG4gIGl0KFwiYWRkcyBhIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBjOiB7XG4gICAgICAgICAgZDogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVvdXRzOiB7XG4gICAgICAgICAgcmVhZDogXCIyMG1cIixcbiAgICAgICAgfSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZy5iKS50b0VxdWFsKFwiYXdzLmltYWdlLmJcIik7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjoge1xuICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJiXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcInRpbWVvdXRzXCI6IHtcbiAgICAgICAgICBcInJlYWRcIjogXCIyMG1cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJpZ25vcmVzIG1pc3NpbmcgdW5yZXF1aXJlZCBzZXQgYmxvY2sgdHlwZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGM6IHtcbiAgICAgICAgICBkOiBcImRcIixcbiAgICAgICAgfSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7fSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIHdpdGhpbiBhIHNpbmdsZSBibG9jayB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBjOiB7fSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7XG4gICAgICBkOiBcImF3cy5pbWFnZS5jLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjoge1xuICAgICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZFwiLFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IFwiZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgYW4gZW50aXJlIHNpbmdsZSBibG9jayB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBkOiBbeyBlOiBcImVcIiB9XSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGM6IFwiYXdzLmltYWdlLmNcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImNvbXB1dGVkXCI6IGZhbHNlLFxuICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgIFwicHJvcGVydHlcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIHdpdGhpbiBhIGxpc3QgYmxvY2sgdHlwZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzogeyBkOiBcImRcIiB9LFxuICAgICAgICBkOiBbe31dLFxuICAgICAgfSxcbiAgICAgIFwiYXdzLmltYWdlXCIsXG4gICAgKTtcbiAgICBleHBlY3Qoc2NvcGUudG9wTGV2ZWxDb25maWcpLnRvRXF1YWwoe1xuICAgICAgZTogXCJhd3MuaW1hZ2UuZC5bXS5lXCIsXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiB7XG4gICAgICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZVwiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIGFuIGVudGlyZSBsaXN0IGJsb2NrIHR5cGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGM6IHsgZDogXCJkXCIgfSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJjYW4gaGFuZGxlIG11bHRpcGxlIGZpbGxzIHdpdGggdGhlIHNhbWUgbmFtZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzoge30sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7XG4gICAgICBkOiBcImF3cy5pbWFnZS5jLmRcIixcbiAgICAgIGQxOiBcImF3cy5pbWFnZS5kXCIsXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IHtcbiAgICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjoge1xuICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJkMVwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIGxpc3RzIHdpdGggbWluX2l0ZW1zID4gMFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzogeyBkOiBcImRcIiB9LFxuICAgICAgICBkOiBbXSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG59KTtcbiJdfQ==