@cdktn/hcl2cdk 0.22.0-pre.2
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/README.md +95 -0
- package/ambient.d.ts +14 -0
- package/jest.config.js +16 -0
- package/lib/__tests__/coerceType.test.d.ts +2 -0
- package/lib/__tests__/coerceType.test.js +165 -0
- package/lib/__tests__/expressionToTs.test.d.ts +6 -0
- package/lib/__tests__/expressionToTs.test.js +693 -0
- package/lib/__tests__/expressions.test.d.ts +4 -0
- package/lib/__tests__/expressions.test.js +415 -0
- package/lib/__tests__/findExpressionType.test.d.ts +6 -0
- package/lib/__tests__/findExpressionType.test.js +105 -0
- package/lib/__tests__/functions.test.d.ts +6 -0
- package/lib/__tests__/functions.test.js +605 -0
- package/lib/__tests__/generation.test.d.ts +6 -0
- package/lib/__tests__/generation.test.js +45 -0
- package/lib/__tests__/jsii-rosetta-workarounds.test.d.ts +2 -0
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/lib/__tests__/partialCode.test.d.ts +6 -0
- package/lib/__tests__/partialCode.test.js +390 -0
- package/lib/__tests__/terraformSchema.test.d.ts +6 -0
- package/lib/__tests__/terraformSchema.test.js +105 -0
- package/lib/__tests__/testHelpers.d.ts +7 -0
- package/lib/__tests__/testHelpers.js +16 -0
- package/lib/coerceType.d.ts +7 -0
- package/lib/coerceType.js +240 -0
- package/lib/dynamic-blocks.d.ts +8 -0
- package/lib/dynamic-blocks.js +44 -0
- package/lib/expressions.d.ts +9 -0
- package/lib/expressions.js +634 -0
- package/lib/function-bindings/functions.d.ts +31 -0
- package/lib/function-bindings/functions.generated.d.ts +806 -0
- package/lib/function-bindings/functions.generated.js +1142 -0
- package/lib/function-bindings/functions.js +73 -0
- package/lib/generation.d.ts +26 -0
- package/lib/generation.js +676 -0
- package/lib/index.d.ts +136 -0
- package/lib/index.js +364 -0
- package/lib/iteration.d.ts +23 -0
- package/lib/iteration.js +87 -0
- package/lib/jsii-rosetta-workarounds.d.ts +5 -0
- package/lib/jsii-rosetta-workarounds.js +126 -0
- package/lib/partialCode.d.ts +11 -0
- package/lib/partialCode.js +116 -0
- package/lib/provider.d.ts +8 -0
- package/lib/provider.js +40 -0
- package/lib/references.d.ts +11 -0
- package/lib/references.js +141 -0
- package/lib/schema.d.ts +297 -0
- package/lib/schema.js +81 -0
- package/lib/telemetryAllowList.json +24 -0
- package/lib/terraformSchema.d.ts +6 -0
- package/lib/terraformSchema.js +136 -0
- package/lib/types.d.ts +50 -0
- package/lib/types.js +3 -0
- package/lib/utils.d.ts +6 -0
- package/lib/utils.js +25 -0
- package/lib/variables.d.ts +10 -0
- package/lib/variables.js +172 -0
- package/package.json +71 -0
- package/package.sh +9 -0
- package/tsconfig.json +42 -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJhdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBRUgsOENBQWtEO0FBRWxELCtDQUEwQztBQUUxQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLEtBQUssVUFBVSxHQUFHLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUEsdUJBQVMsRUFDZCxNQUFNLElBQUEsOEJBQWlCLEVBQ3JCO1lBQ0UsV0FBVyxFQUFFLEVBQUU7U0FDVyxFQUM1QixJQUFJLENBQ0wsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDbEQsdUJBQXVCLENBQ3hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLENBQ0osTUFBTSxHQUFHLENBQ1AsaUZBQWlGLENBQ2xGLENBQ0YsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7S0FLdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUMsTUFBTSxDQUNKLE1BQU0sR0FBRyxDQUNQLDRIQUE0SCxDQUM3SCxDQUNGLENBQUMscUJBQXFCLENBQUM7Ozs7OztLQU12QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6QyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN2RCx5Q0FBeUMsQ0FDMUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJCQUEyQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQ3ZELHlDQUF5QyxDQUMxQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FDdkUsbUZBQW1GLENBQ3BGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyB2YXJpYWJsZVR5cGVUb0FzdCB9IGZyb20gXCIuLi9nZW5lcmF0aW9uXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGFzdFRvQ29kZSB9IGZyb20gXCIuL3Rlc3RIZWxwZXJzXCI7XG5cbmRlc2NyaWJlKFwidmFyaWFibGVUeXBlVG9Bc3RcIiwgKCkgPT4ge1xuICBhc3luYyBmdW5jdGlvbiBydW4odHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGFzdFRvQ29kZShcbiAgICAgIGF3YWl0IHZhcmlhYmxlVHlwZVRvQXN0KFxuICAgICAgICB7XG4gICAgICAgICAgaW1wb3J0YWJsZXM6IFtdLFxuICAgICAgICB9IGFzIHVua25vd24gYXMgUHJvZ3JhbVNjb3BlLFxuICAgICAgICB0eXBlLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHNpbXBsZSB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHtzdHJpbmd9XCIpKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCJWYXJpYWJsZVR5cGUuU1RSSU5HXCJgLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgYSBvYmplY3QgdHlwZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgYXdhaXQgcnVuKFxuICAgICAgICBcIiR7b2JqZWN0KHtcXG4gICAgICAgICAgbmFtZSAgICA9IHN0cmluZ1xcbiAgICAgICAgICBhZGRyZXNzID0gc3RyaW5nXFxuICAgICAgICB9KX1cIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAgXCJWYXJpYWJsZVR5cGUub2JqZWN0KHtcbiAgICAgICAgXCJhZGRyZXNzXCI6IFZhcmlhYmxlVHlwZS5TVFJJTkcsXG4gICAgICAgIFwibmFtZVwiOiBWYXJpYWJsZVR5cGUuU1RSSU5HXG4gICAgICB9KVwiXG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgYSBsaXN0IHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGF3YWl0IHJ1bihcbiAgICAgICAgXCIke2xpc3Qob2JqZWN0KHtcXG4gICAgICAgICAgICBpbnRlcm5hbCA9IG51bWJlclxcbiAgICAgICAgICAgIGV4dGVybmFsID0gbnVtYmVyXFxuICAgICAgICAgICAgcHJvdG9jb2wgPSBzdHJpbmdcXG4gICAgICAgIH0pKX1cIixcbiAgICAgICksXG4gICAgKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAgXCJWYXJpYWJsZVR5cGUubGlzdChWYXJpYWJsZVR5cGUub2JqZWN0KHtcbiAgICAgICAgXCJleHRlcm5hbFwiOiBWYXJpYWJsZVR5cGUuTlVNQkVSLFxuICAgICAgICBcImludGVybmFsXCI6IFZhcmlhYmxlVHlwZS5OVU1CRVIsXG4gICAgICAgIFwicHJvdG9jb2xcIjogVmFyaWFibGVUeXBlLlNUUklOR1xuICAgICAgfSkpXCJcbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHNldCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHtzZXQoc3RyaW5nKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS5zZXQoVmFyaWFibGVUeXBlLlNUUklORylcImAsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIG1hcCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QoYXdhaXQgcnVuKFwiJHttYXAoc3RyaW5nKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS5tYXAoVmFyaWFibGVUeXBlLlNUUklORylcImAsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBhIHR1cGxlIHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGV4cGVjdChhd2FpdCBydW4oXCIke3R1cGxlKHN0cmluZywgbnVtYmVyLCBib29sKX1cIikpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIlZhcmlhYmxlVHlwZS50dXBsZShWYXJpYWJsZVR5cGUuU1RSSU5HLCBWYXJpYWJsZVR5cGUuTlVNQkVSLCBWYXJpYWJsZVR5cGUuQk9PTClcImAsXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQzs7QUFFbkMsMEVBS3FDO0FBRXJDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxHQUFHOzs7Ozs7Ozs7OztVQVdULENBQUM7WUFFTCxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDeEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHFDQUFxQyxDQUFDLENBQy9ELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsNERBQTRELENBQUM7WUFFMUUsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3hDLCtDQUErQyxDQUNoRCxDQUFDO1lBRUYsTUFBTSxjQUFjLEdBQUcsbUVBQW1FLENBQUM7WUFDM0YsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2xELDBEQUEwRCxDQUMzRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxHQUFHLDBEQUEwRCxDQUFDO1lBRXhFLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4Qyw2Q0FBNkMsQ0FDOUMsQ0FB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LHdFQUF3RSxDQUFDO1lBRXRGLE1BQU0sQ0FBQyxJQUFBLDJDQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNwQyxtREFBbUQsQ0FDcEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUM5QixNQUFNLElBQUksR0FBRyw0RUFBNEUsQ0FBQztZQUUxRixNQUFNLENBQUMsSUFBQSwyQ0FBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDcEMsMENBQTBDO1lBQzFDLDZHQUE2RztZQUM3Ryw2REFBNkQsQ0FDOUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmltcG9ydCB7XG4gIHJlcGxhY2VDc2hhcnBJbXBvcnRzLFxuICByZXBsYWNlR29JbXBvcnRzLFxuICByZXBsYWNlSmF2YUltcG9ydHMsXG4gIHJlcGxhY2VQeXRob25JbXBvcnRzLFxufSBmcm9tIFwiLi4vanNpaS1yb3NldHRhLXdvcmthcm91bmRzXCI7XG5cbmRlc2NyaWJlKFwianNpaS1yb3NldHRhLXdvcmthcm91bmRzXCIsICgpID0+IHtcbiAgZGVzY3JpYmUoXCJyZXBsYWNlUHl0aG9uSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYFxuaW1wb3J0IGNvbnN0cnVjdHMgYXMgY29uc3RydWN0c1xuIyBQcm92aWRlciBiaW5kaW5ncyBhcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgY2RrdG4gZ2V0LlxuIyBTZWUgaHR0cHM6Ly9jZGsudGYvcHJvdmlkZXItZ2VuZXJhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlxuaW1wb3J0IC4uLmdlbi5wcm92aWRlcnMuc2NhbGV3YXkgYXMgc2NhbGV3YXlcbmNsYXNzIE15Q29udmVydGVkQ29kZShjb25zdHJ1Y3RzLkNvbnN0cnVjdCk6XG4gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNjb3BlLCBuYW1lKTpcbiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhzY29wZSwgbmFtZSlcbiAgICAgICAgc2NhbGV3YXkucHJvdmlkZXIuU2NhbGV3YXlQcm92aWRlcihzZWxmLCBcInNjYWxld2F5XCIsXG4gICAgICAgICAgICByZWdpb249XCJmci1wYXJcIixcbiAgICAgICAgICAgIHpvbmU9XCJmci1wYXItMVwiXG4gICAgICAgIClgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKFwiaW1wb3J0IGltcG9ydHMuc2NhbGV3YXkgYXMgc2NhbGV3YXlcIiksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJncmFudWxhciBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgZnJvbSAuLi5nZW4ucHJvdmlkZXJzLmF3cy5saWIucmRzQ2x1c3RlciBpbXBvcnQgUmRzQ2x1c3RlcmA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJmcm9tIGltcG9ydHMuYXdzLnJkc0NsdXN0ZXIgaW1wb3J0IFJkc0NsdXN0ZXJcIixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpdGhvdXRMaWJDb2RlID0gYGZyb20gLi4uZ2VuLnByb3ZpZGVycy5henVyZXJtLnJlc291cmNlX2dyb3VwIGltcG9ydCBSZXNvdXJjZUdyb3VwYDtcbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyh3aXRob3V0TGliQ29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiZnJvbSBpbXBvcnRzLmF6dXJlcm0ucmVzb3VyY2VfZ3JvdXAgaW1wb3J0IFJlc291cmNlR3JvdXBcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInJlc291cmNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgLi4uZ2VuLnByb3ZpZGVycy5hd3MubGliLnJkc0NsdXN0ZXIgYXMgUmRzQ2x1c3RlcmA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MucmRzQ2x1c3RlciBhcyBSZHNDbHVzdGVyXCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCAuLi5nZW4ubW9kdWxlcy5oZWxsb19tb2R1bGUgYXMgSGVsbG9Nb2R1bGVgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG9fbW9kdWxlIGFzIEhlbGxvTW9kdWxlXCIsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcInJlcGxhY2VDc2hhcnBJbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgdXNpbmcgR2VuLlByb3ZpZGVycy5Bd3MuTGliLlJkc0NsdXN0ZXI7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFwidXNpbmcgYXdzLlJkc0NsdXN0ZXI7XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYHVzaW5nIEdlbi5Nb2R1bGVzLkhlbGxvTW9kdWxlYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFwidXNpbmcgSGVsbG9Nb2R1bGVcIik7XG5cbiAgICAgIGNvbnN0IGFub3RoZXJDb2RlID0gYHVzaW5nIEdlbi5Nb2R1bGVzLkhlbGxvLk1vZHVsZWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlQ3NoYXJwSW1wb3J0cyhhbm90aGVyQ29kZSkpLnRvRXF1YWwoXCJ1c2luZyBIZWxsby5Nb2R1bGVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUphdmFJbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGdlbi5wcm92aWRlcnMuc2NhbGV3YXkub2JqZWN0UmVzb3VyY2UuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLnNjYWxld2F5Lm9iamVjdFJlc291cmNlLio7XCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJwcmVjaXNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5hd3MubGliLnMzQnVja2V0LlMzQnVja2V0O2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuYXdzLnMzQnVja2V0LlMzQnVja2V0O1wiLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgd2l0aG91dExpYkltcG9ydCA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyh3aXRob3V0TGliSW1wb3J0KSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7XCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBnZW4ubW9kdWxlcy5oZWxsby5tb2R1bGUuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmhlbGxvLm1vZHVsZS4qO1wiLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYW5vdGhlckNvZGUgPSBgaW1wb3J0IGdlbi5tb2R1bGVzLmhlbGxvTW9kdWxlLio7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhhbm90aGVyQ29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG9Nb2R1bGUuKjtcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUdvSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL3Byb3ZpZGVycy9zY2FsZXdheS9vYmplY3RCdWNrZXRcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9zY2FsZXdheS9vYmplY3RCdWNrZXRcImAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJwcmVjaXNlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgXCJnaXRodWIuY29tL2F3cy1zYW1wbGVzL2R1bW15L2dlbi9wcm92aWRlcnMvYXdzL2xpYi9kYkluc3RhbmNlXCJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUdvSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgYGltcG9ydCBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvYXdzL2RiSW5zdGFuY2VcImAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmaXhlcyBtb2R1bGUgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBoZWxsb01vZHVsZSBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL21vZHVsZXMvaGVsbG9fbW9kdWxlXCJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUdvSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgLy8gVE9ETzogU2V0IHVwIGNka3RuLmlvLyBzdGF0aWMgcmVkaXJlY3Q/XG4gICAgICAgIC8vIFwiZ2l0aHViLmNvbS9vcGVuLWNvbnN0cnVjdHMvY2RrLXRlcnJhaW4vZXhhbXBsZXMvZ28vZG9jdW1lbnRhdGlvbi9nZW5lcmF0ZWQvdGVycmFmb3JtLWF3cy1tb2R1bGVzL2F3cy92cGNcIlxuICAgICAgICBgaW1wb3J0IGhlbGxvTW9kdWxlIFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9oZWxsb19tb2R1bGVcImAsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbENvZGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhcnRpYWxDb2RlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFFSCxnREFBeUQ7QUFHekQsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQ3BCLENBQUM7SUFDQyxjQUFjLEVBQUU7UUFDZCxjQUFjLEVBQUUsS0FBSztRQUNyQixnQkFBZ0IsRUFBRTtZQUNoQixHQUFHLEVBQUU7Z0JBQ0gsbUJBQW1CLEVBQUUsRUFBRTtnQkFDdkIsUUFBUSxFQUFFO29CQUNSLEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsRUFBRTt3QkFDZCxXQUFXLEVBQUUsRUFBRTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUM7aUJBQ1g7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxPQUFPLEVBQUUsQ0FBQzt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsV0FBVyxFQUFFO2dDQUNYLENBQUMsRUFBRTtvQ0FDRCxZQUFZLEVBQUUsUUFBUTtvQ0FDdEIsS0FBSyxFQUFFO3dDQUNMLFVBQVUsRUFBRTs0Q0FDVixDQUFDLEVBQUU7Z0RBQ0QsSUFBSSxFQUFFLFFBQVE7Z0RBQ2QsZ0JBQWdCLEVBQUUsT0FBTztnREFDekIsUUFBUSxFQUFFLElBQUk7Z0RBQ2QsUUFBUSxFQUFFLElBQUk7NkNBQ2Y7eUNBQ0Y7d0NBQ0QsV0FBVyxFQUFFLEVBQUU7cUNBQ2hCO2lDQUNGO2dDQUNELENBQUMsRUFBRTtvQ0FDRCxZQUFZLEVBQUUsTUFBTTtvQ0FDcEIsS0FBSyxFQUFFO3dDQUNMLFVBQVUsRUFBRTs0Q0FDVixDQUFDLEVBQUU7Z0RBQ0QsSUFBSSxFQUFFLFFBQVE7Z0RBQ2QsZ0JBQWdCLEVBQUUsT0FBTztnREFDekIsUUFBUSxFQUFFLElBQUk7Z0RBQ2QsUUFBUSxFQUFFLElBQUk7NkNBQ2Y7eUNBQ0Y7d0NBQ0QsV0FBVyxFQUFFLEVBQUU7cUNB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Q2xCLEVBQUUsRUFBRSxhQUFhO1NBQ2xCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBdUIsRUFDcEMsS0FBSyxFQUNMO1lBQ0UsQ0FBQyxFQUFFLEdBQUc7WUFDTixDQUFDLEVBQUUsR0FBRztZQUNOLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDYixDQUFDLEVBQUUsRUFBRTtTQUNOLEVBQ0QsV0FBVyxDQUNaLENBQUM7UUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuQyxDQUFDLEVBQUUsYUFBYTtTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMgfSBmcm9tIFwiLi4vcGFydGlhbENvZGVcIjtcbmltcG9ydCB7IFByb2dyYW1TY29wZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5jb25zdCBnZXRTY29wZSA9ICgpID0+XG4gICh7XG4gICAgcHJvdmlkZXJTY2hlbWE6IHtcbiAgICAgIGZvcm1hdF92ZXJzaW9uOiBcIjAuMVwiLFxuICAgICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBkYXRhX3NvdXJjZV9zY2hlbWFzOiB7fSxcbiAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJzaW9uOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2Vfc2NoZW1hczoge1xuICAgICAgICAgICAgYXdzX2ltYWdlOiB7XG4gICAgICAgICAgICAgIHZlcnNpb246IDAsXG4gICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHtcbiAgICAgICAgICAgICAgICAgIGM6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25fa2luZDogXCJwbGFpblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcImxpc3RcIixcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbWluX2l0ZW1zOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRpbWVvdXRzOiB7XG4gICAgICAgICAgICAgICAgICAgIG5lc3RpbmdfbW9kZTogXCJzaW5nbGVcIixcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uX2tpbmQ6IFwicGxhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGI6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29uc3RydWN0czogbmV3IFNldCgpLFxuICAgIGhhc1Rva2VuQmFzZWRUeXBlQ29lcmNpb246IGZhbHNlLFxuICAgIG5vZGVJZHM6IFtdLFxuICAgIHByb3ZpZGVyR2VuZXJhdG9yOiB7fSxcbiAgICB2YXJpYWJsZXM6IHt9LFxuICAgIGltcG9ydGFibGVzOiBbXSxcblxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIG11dGF0ZWRcbiAgICB0b3BMZXZlbENvbmZpZzoge30sXG4gIH0pIGFzIFByb2dyYW1TY29wZTtcblxuZGVzY3JpYmUoXCJmaWxsV2l0aENvbmZpZ0FjY2Vzc29yc1wiLCAoKSA9PiB7XG4gIGl0KFwiYWRkcyBhIG1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBjOiB7XG4gICAgICAgICAgZDogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVvdXRzOiB7XG4gICAgICAgICAgcmVhZDogXCIyMG1cIixcbiAgICAgICAgfSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZy5iKS50b0VxdWFsKFwiYXdzLmltYWdlLmJcIik7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjoge1xuICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJiXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInR5cGVcIjogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcInRpbWVvdXRzXCI6IHtcbiAgICAgICAgICBcInJlYWRcIjogXCIyMG1cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJpZ25vcmVzIG1pc3NpbmcgdW5yZXF1aXJlZCBzZXQgYmxvY2sgdHlwZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGM6IHtcbiAgICAgICAgICBkOiBcImRcIixcbiAgICAgICAgfSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7fSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIHdpdGhpbiBhIHNpbmdsZSBibG9jayB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBjOiB7fSxcbiAgICAgICAgZDogW3sgZTogXCJlXCIgfV0sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7XG4gICAgICBkOiBcImF3cy5pbWFnZS5jLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjoge1xuICAgICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZFwiLFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJlXCI6IFwiZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgYCk7XG4gIH0pO1xuXG4gIGl0KFwiZmlsbHMgYW4gZW50aXJlIHNpbmdsZSBibG9jayB0eXBlXCIsICgpID0+IHtcbiAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gICAgICBzY29wZSxcbiAgICAgIHtcbiAgICAgICAgYTogXCJhXCIsXG4gICAgICAgIGI6IFwiYlwiLFxuICAgICAgICBkOiBbeyBlOiBcImVcIiB9XSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGM6IFwiYXdzLmltYWdlLmNcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImNvbXB1dGVkXCI6IGZhbHNlLFxuICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgIFwicHJvcGVydHlcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY1wiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiBcImVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIHdpdGhpbiBhIGxpc3QgYmxvY2sgdHlwZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzogeyBkOiBcImRcIiB9LFxuICAgICAgICBkOiBbe31dLFxuICAgICAgfSxcbiAgICAgIFwiYXdzLmltYWdlXCIsXG4gICAgKTtcbiAgICBleHBlY3Qoc2NvcGUudG9wTGV2ZWxDb25maWcpLnRvRXF1YWwoe1xuICAgICAgZTogXCJhd3MuaW1hZ2UuZC5bXS5lXCIsXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IFwiZFwiLFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZVwiOiB7XG4gICAgICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZVwiLFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIGFuIGVudGlyZSBsaXN0IGJsb2NrIHR5cGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgICAgIHNjb3BlLFxuICAgICAge1xuICAgICAgICBhOiBcImFcIixcbiAgICAgICAgYjogXCJiXCIsXG4gICAgICAgIGM6IHsgZDogXCJkXCIgfSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG5cbiAgaXQoXCJjYW4gaGFuZGxlIG11bHRpcGxlIGZpbGxzIHdpdGggdGhlIHNhbWUgbmFtZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzoge30sXG4gICAgICB9LFxuICAgICAgXCJhd3MuaW1hZ2VcIixcbiAgICApO1xuICAgIGV4cGVjdChzY29wZS50b3BMZXZlbENvbmZpZykudG9FcXVhbCh7XG4gICAgICBkOiBcImF3cy5pbWFnZS5jLmRcIixcbiAgICAgIGQxOiBcImF3cy5pbWFnZS5kXCIsXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgIHtcbiAgICAgICAgXCJhXCI6IFwiYVwiLFxuICAgICAgICBcImJcIjogXCJiXCIsXG4gICAgICAgIFwiY1wiOiB7XG4gICAgICAgICAgXCJkXCI6IHtcbiAgICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImNvbmZpZ1wiLFxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJvcHRpb25hbFwiOiBudWxsLFxuICAgICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBcImRcIjoge1xuICAgICAgICAgIFwiY29tcHV0ZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiY29uZmlnXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wdGlvbmFsXCI6IG51bGwsXG4gICAgICAgICAgXCJwcm9wZXJ0eVwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJkMVwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiSWRlbnRpZmllclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiTWVtYmVyRXhwcmVzc2lvblwiLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIGApO1xuICB9KTtcblxuICBpdChcImZpbGxzIGxpc3RzIHdpdGggbWluX2l0ZW1zID4gMFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGUgPSBnZXRTY29wZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKFxuICAgICAgc2NvcGUsXG4gICAgICB7XG4gICAgICAgIGE6IFwiYVwiLFxuICAgICAgICBiOiBcImJcIixcbiAgICAgICAgYzogeyBkOiBcImRcIiB9LFxuICAgICAgICBkOiBbXSxcbiAgICAgIH0sXG4gICAgICBcImF3cy5pbWFnZVwiLFxuICAgICk7XG4gICAgZXhwZWN0KHNjb3BlLnRvcExldmVsQ29uZmlnKS50b0VxdWFsKHtcbiAgICAgIGQ6IFwiYXdzLmltYWdlLmRcIixcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0KS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAge1xuICAgICAgICBcImFcIjogXCJhXCIsXG4gICAgICAgIFwiYlwiOiBcImJcIixcbiAgICAgICAgXCJjXCI6IHtcbiAgICAgICAgICBcImRcIjogXCJkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIFwiZFwiOiB7XG4gICAgICAgICAgXCJjb21wdXRlZFwiOiBmYWxzZSxcbiAgICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJjb25maWdcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3B0aW9uYWxcIjogbnVsbCxcbiAgICAgICAgICBcInByb3BlcnR5XCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImRcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIklkZW50aWZpZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidHlwZVwiOiBcIk1lbWJlckV4cHJlc3Npb25cIixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICBgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|