@cdktn/hcl2cdk 0.23.0-pre.4 → 0.23.0-pre.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient.d.ts +0 -1
- package/build/__tests__/coerceType.test.js +165 -0
- package/build/__tests__/expressionToTs.test.js +693 -0
- package/build/__tests__/expressions.test.js +415 -0
- package/build/__tests__/findExpressionType.test.js +105 -0
- package/build/__tests__/functions.test.js +605 -0
- package/build/__tests__/generation.test.js +45 -0
- package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/build/__tests__/partialCode.test.js +390 -0
- package/build/__tests__/terraformSchema.test.js +105 -0
- package/build/__tests__/testHelpers.js +16 -0
- package/build/coerceType.js +240 -0
- package/build/dynamic-blocks.js +44 -0
- package/build/expressions.js +633 -0
- package/build/function-bindings/functions.generated.js +1142 -0
- package/build/function-bindings/functions.js +73 -0
- package/build/generation.js +676 -0
- package/{lib → build}/index.d.ts +2 -2
- package/build/index.js +364 -0
- package/build/iteration.js +87 -0
- package/build/jsii-rosetta-workarounds.js +126 -0
- package/build/partialCode.js +116 -0
- package/build/provider.js +40 -0
- package/build/references.js +141 -0
- package/build/schema.js +81 -0
- package/build/telemetryAllowList.json +24 -0
- package/build/terraformSchema.js +136 -0
- package/build/types.js +3 -0
- package/build/utils.js +25 -0
- package/build/variables.js +172 -0
- package/package.json +19 -19
- package/tsconfig.json +4 -2
- package/lib/__tests__/coerceType.test.js +0 -165
- package/lib/__tests__/expressionToTs.test.js +0 -693
- package/lib/__tests__/expressions.test.js +0 -415
- package/lib/__tests__/findExpressionType.test.js +0 -105
- package/lib/__tests__/functions.test.js +0 -605
- package/lib/__tests__/generation.test.js +0 -45
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
- package/lib/__tests__/partialCode.test.js +0 -390
- package/lib/__tests__/terraformSchema.test.js +0 -105
- package/lib/__tests__/testHelpers.js +0 -16
- package/lib/coerceType.js +0 -240
- package/lib/dynamic-blocks.js +0 -44
- package/lib/expressions.js +0 -634
- package/lib/function-bindings/functions.generated.js +0 -1142
- package/lib/function-bindings/functions.js +0 -73
- package/lib/generation.js +0 -676
- package/lib/index.js +0 -364
- package/lib/iteration.js +0 -87
- package/lib/jsii-rosetta-workarounds.js +0 -126
- package/lib/partialCode.js +0 -116
- package/lib/provider.js +0 -40
- package/lib/references.js +0 -141
- package/lib/schema.js +0 -81
- package/lib/terraformSchema.js +0 -136
- package/lib/types.js +0 -3
- package/lib/utils.js +0 -25
- package/lib/variables.js +0 -172
- /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
- /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
- /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
- /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
- /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
- /package/{lib → build}/coerceType.d.ts +0 -0
- /package/{lib → build}/dynamic-blocks.d.ts +0 -0
- /package/{lib → build}/expressions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
- /package/{lib → build}/generation.d.ts +0 -0
- /package/{lib → build}/iteration.d.ts +0 -0
- /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
- /package/{lib → build}/partialCode.d.ts +0 -0
- /package/{lib → build}/provider.d.ts +0 -0
- /package/{lib → build}/references.d.ts +0 -0
- /package/{lib → build}/schema.d.ts +0 -0
- /package/{lib → build}/terraformSchema.d.ts +0 -0
- /package/{lib → build}/types.d.ts +0 -0
- /package/{lib → build}/utils.d.ts +0 -0
- /package/{lib → build}/variables.d.ts +0 -0
- /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
|