@cdktn/provider-generator 0.25.0-pre.61 → 0.25.0-pre.64
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/build/get/__tests__/generator/module-docs-registry.test.d.ts +2 -0
- package/build/get/__tests__/generator/module-docs-registry.test.js +91 -0
- package/build/get/__tests__/registry-class-invalidation.test.d.ts +2 -0
- package/build/get/__tests__/registry-class-invalidation.test.js +120 -0
- package/build/get/__tests__/target-versions.test.js +29 -1
- package/build/get/constructs-maker.js +19 -2
- package/build/get/generator/module-generator.d.ts +3 -2
- package/build/get/generator/module-generator.js +15 -17
- package/package.json +4 -4
- package/src/get/__tests__/generator/module-docs-registry.test.ts +89 -0
- package/src/get/__tests__/registry-class-invalidation.test.ts +123 -0
- package/src/get/__tests__/target-versions.test.ts +43 -0
- package/src/get/constructs-maker.ts +43 -7
- package/src/get/generator/module-generator.ts +20 -18
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
// Copyright (c) HashiCorp, Inc
|
|
37
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const codemaker_1 = require("codemaker");
|
|
41
|
+
const commons_1 = require("@cdktn/commons");
|
|
42
|
+
const module_generator_1 = require("../../generator/module-generator");
|
|
43
|
+
const util_1 = require("../util");
|
|
44
|
+
const tmp = (0, util_1.createTmpHelper)();
|
|
45
|
+
async function docsComment(source, targetVersions) {
|
|
46
|
+
const workdir = tmp("module-docs-registry");
|
|
47
|
+
const target = commons_1.ConstructsMakerModuleTarget.from(new commons_1.TerraformModuleConstraint(source), commons_1.Language.TYPESCRIPT);
|
|
48
|
+
target.spec = { name: target.name, inputs: [], outputs: [] };
|
|
49
|
+
const code = new codemaker_1.CodeMaker();
|
|
50
|
+
new module_generator_1.ModuleGenerator(code, [target], targetVersions);
|
|
51
|
+
await code.save(workdir);
|
|
52
|
+
const emitted = fs.readFileSync(path.join(workdir, target.fileName), "utf-8");
|
|
53
|
+
const line = emitted
|
|
54
|
+
.split("\n")
|
|
55
|
+
.find((l) => l.includes("Docs at") || l.includes("Source at"));
|
|
56
|
+
return (line !== null && line !== void 0 ? line : "").trim();
|
|
57
|
+
}
|
|
58
|
+
describe("generated module docs links", () => {
|
|
59
|
+
const module = "terraform-aws-modules/vpc/aws@3.19.0";
|
|
60
|
+
const submodule = "terraform-aws-modules/vpc/aws//modules/vpc-endpoints@3.19.0";
|
|
61
|
+
it("uses the Terraform Registry when nothing is declared", async () => {
|
|
62
|
+
expect(await docsComment(module)).toContain("https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/3.19.0");
|
|
63
|
+
});
|
|
64
|
+
it("uses the OpenTofu Registry when only OpenTofu is declared", async () => {
|
|
65
|
+
const comment = await docsComment(module, { opentofu: ">=1.6.0" });
|
|
66
|
+
expect(comment).toContain("Docs at OpenTofu Registry");
|
|
67
|
+
expect(comment).toContain("https://search.opentofu.org/module/terraform-aws-modules/vpc/aws/v3.19.0");
|
|
68
|
+
});
|
|
69
|
+
it("links an OpenTofu submodule with the singular segment", async () => {
|
|
70
|
+
expect(await docsComment(submodule, { opentofu: ">=1.6.0" })).toContain("https://search.opentofu.org/module/terraform-aws-modules/vpc/aws/v3.19.0/submodule/vpc-endpoints");
|
|
71
|
+
});
|
|
72
|
+
// Registries serve submodule pages only for a direct child of `modules/`
|
|
73
|
+
// (checked against rendered pages); anything else links to the module.
|
|
74
|
+
it.each([
|
|
75
|
+
[
|
|
76
|
+
"an examples path",
|
|
77
|
+
"terraform-aws-modules/vpc/aws//examples/complete@3.19.0",
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
"a nested modules path",
|
|
81
|
+
"terraform-aws-modules/vpc/aws//modules/x/y@3.19.0",
|
|
82
|
+
],
|
|
83
|
+
])("links %s to the module page", async (_name, source) => {
|
|
84
|
+
expect(await docsComment(source)).toContain("{@link https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/3.19.0 ");
|
|
85
|
+
expect(await docsComment(source, { opentofu: ">=1.6.0" })).toContain("{@link https://search.opentofu.org/module/terraform-aws-modules/vpc/aws/v3.19.0 ");
|
|
86
|
+
});
|
|
87
|
+
it("keeps the Terraform submodule shape unchanged", async () => {
|
|
88
|
+
expect(await docsComment(submodule)).toContain("https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/3.19.0/submodules/vpc-endpoints");
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRvY3MtcmVnaXN0cnkudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZXQvX190ZXN0c19fL2dlbmVyYXRvci9tb2R1bGUtZG9jcy1yZWdpc3RyeS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHlDQUFzQztBQUN0Qyw0Q0FLd0I7QUFDeEIsdUVBQW1FO0FBQ25FLGtDQUEwQztBQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztBQUU5QixLQUFLLFVBQVUsV0FBVyxDQUN4QixNQUFjLEVBQ2QsY0FBd0M7SUFFeEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcscUNBQTJCLENBQUMsSUFBSSxDQUM3QyxJQUFJLG1DQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUNyQyxrQkFBUSxDQUFDLFVBQVUsQ0FDVyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU3RCxNQUFNLElBQUksR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztJQUM3QixJQUFJLGtDQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDcEQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLE1BQU0sSUFBSSxHQUFHLE9BQU87U0FDakIsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDakUsT0FBTyxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdCLENBQUM7QUFFRCxRQUFRLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQzNDLE1BQU0sTUFBTSxHQUFHLHNDQUFzQyxDQUFDO0lBQ3RELE1BQU0sU0FBUyxHQUNiLDZEQUE2RCxDQUFDO0lBRWhFLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRSxNQUFNLENBQUMsTUFBTSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3pDLDRFQUE0RSxDQUM3RSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekUsTUFBTSxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3ZCLDBFQUEwRSxDQUMzRSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckUsTUFBTSxDQUFDLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNyRSxrR0FBa0csQ0FDbkcsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgseUVBQXlFO0lBQ3pFLHVFQUF1RTtJQUN2RSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ047WUFDRSxrQkFBa0I7WUFDbEIseURBQXlEO1NBQzFEO1FBQ0Q7WUFDRSx1QkFBdUI7WUFDdkIsbURBQW1EO1NBQ3BEO0tBQ0YsQ0FBQyxDQUFDLDZCQUE2QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDeEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN6QyxvRkFBb0YsQ0FDckYsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDbEUsa0ZBQWtGLENBQ25GLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCxNQUFNLENBQUMsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzVDLHFHQUFxRyxDQUN0RyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gXCJjb2RlbWFrZXJcIjtcbmltcG9ydCB7XG4gIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCxcbiAgTGFuZ3VhZ2UsXG4gIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IE1vZHVsZUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9nZW5lcmF0b3IvbW9kdWxlLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgY3JlYXRlVG1wSGVscGVyIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuY29uc3QgdG1wID0gY3JlYXRlVG1wSGVscGVyKCk7XG5cbmFzeW5jIGZ1bmN0aW9uIGRvY3NDb21tZW50KFxuICBzb3VyY2U6IHN0cmluZyxcbiAgdGFyZ2V0VmVyc2lvbnM/OiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJtb2R1bGUtZG9jcy1yZWdpc3RyeVwiKTtcbiAgY29uc3QgdGFyZ2V0ID0gQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0LmZyb20oXG4gICAgbmV3IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQoc291cmNlKSxcbiAgICBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICApIGFzIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldDtcbiAgdGFyZ2V0LnNwZWMgPSB7IG5hbWU6IHRhcmdldC5uYW1lLCBpbnB1dHM6IFtdLCBvdXRwdXRzOiBbXSB9O1xuXG4gIGNvbnN0IGNvZGUgPSBuZXcgQ29kZU1ha2VyKCk7XG4gIG5ldyBNb2R1bGVHZW5lcmF0b3IoY29kZSwgW3RhcmdldF0sIHRhcmdldFZlcnNpb25zKTtcbiAgYXdhaXQgY29kZS5zYXZlKHdvcmtkaXIpO1xuXG4gIGNvbnN0IGVtaXR0ZWQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHdvcmtkaXIsIHRhcmdldC5maWxlTmFtZSksIFwidXRmLThcIik7XG4gIGNvbnN0IGxpbmUgPSBlbWl0dGVkXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLmZpbmQoKGwpID0+IGwuaW5jbHVkZXMoXCJEb2NzIGF0XCIpIHx8IGwuaW5jbHVkZXMoXCJTb3VyY2UgYXRcIikpO1xuICByZXR1cm4gKGxpbmUgPz8gXCJcIikudHJpbSgpO1xufVxuXG5kZXNjcmliZShcImdlbmVyYXRlZCBtb2R1bGUgZG9jcyBsaW5rc1wiLCAoKSA9PiB7XG4gIGNvbnN0IG1vZHVsZSA9IFwidGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3NAMy4xOS4wXCI7XG4gIGNvbnN0IHN1Ym1vZHVsZSA9XG4gICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8vbW9kdWxlcy92cGMtZW5kcG9pbnRzQDMuMTkuMFwiO1xuXG4gIGl0KFwidXNlcyB0aGUgVGVycmFmb3JtIFJlZ2lzdHJ5IHdoZW4gbm90aGluZyBpcyBkZWNsYXJlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IGRvY3NDb21tZW50KG1vZHVsZSkpLnRvQ29udGFpbihcbiAgICAgIFwiaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vbW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8zLjE5LjBcIixcbiAgICApO1xuICB9KTtcblxuICBpdChcInVzZXMgdGhlIE9wZW5Ub2Z1IFJlZ2lzdHJ5IHdoZW4gb25seSBPcGVuVG9mdSBpcyBkZWNsYXJlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29tbWVudCA9IGF3YWl0IGRvY3NDb21tZW50KG1vZHVsZSwgeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSk7XG4gICAgZXhwZWN0KGNvbW1lbnQpLnRvQ29udGFpbihcIkRvY3MgYXQgT3BlblRvZnUgUmVnaXN0cnlcIik7XG4gICAgZXhwZWN0KGNvbW1lbnQpLnRvQ29udGFpbihcbiAgICAgIFwiaHR0cHM6Ly9zZWFyY2gub3BlbnRvZnUub3JnL21vZHVsZS90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy92My4xOS4wXCIsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJsaW5rcyBhbiBPcGVuVG9mdSBzdWJtb2R1bGUgd2l0aCB0aGUgc2luZ3VsYXIgc2VnbWVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IGRvY3NDb21tZW50KHN1Ym1vZHVsZSwgeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSkpLnRvQ29udGFpbihcbiAgICAgIFwiaHR0cHM6Ly9zZWFyY2gub3BlbnRvZnUub3JnL21vZHVsZS90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy92My4xOS4wL3N1Ym1vZHVsZS92cGMtZW5kcG9pbnRzXCIsXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gUmVnaXN0cmllcyBzZXJ2ZSBzdWJtb2R1bGUgcGFnZXMgb25seSBmb3IgYSBkaXJlY3QgY2hpbGQgb2YgYG1vZHVsZXMvYFxuICAvLyAoY2hlY2tlZCBhZ2FpbnN0IHJlbmRlcmVkIHBhZ2VzKTsgYW55dGhpbmcgZWxzZSBsaW5rcyB0byB0aGUgbW9kdWxlLlxuICBpdC5lYWNoKFtcbiAgICBbXG4gICAgICBcImFuIGV4YW1wbGVzIHBhdGhcIixcbiAgICAgIFwidGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvL2V4YW1wbGVzL2NvbXBsZXRlQDMuMTkuMFwiLFxuICAgIF0sXG4gICAgW1xuICAgICAgXCJhIG5lc3RlZCBtb2R1bGVzIHBhdGhcIixcbiAgICAgIFwidGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvL21vZHVsZXMveC95QDMuMTkuMFwiLFxuICAgIF0sXG4gIF0pKFwibGlua3MgJXMgdG8gdGhlIG1vZHVsZSBwYWdlXCIsIGFzeW5jIChfbmFtZSwgc291cmNlKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IGRvY3NDb21tZW50KHNvdXJjZSkpLnRvQ29udGFpbihcbiAgICAgIFwie0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL21vZHVsZXMvdGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvMy4xOS4wIFwiLFxuICAgICk7XG4gICAgZXhwZWN0KGF3YWl0IGRvY3NDb21tZW50KHNvdXJjZSwgeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSkpLnRvQ29udGFpbihcbiAgICAgIFwie0BsaW5rIGh0dHBzOi8vc2VhcmNoLm9wZW50b2Z1Lm9yZy9tb2R1bGUvdGVycmFmb3JtLWF3cy1tb2R1bGVzL3ZwYy9hd3MvdjMuMTkuMCBcIixcbiAgICApO1xuICB9KTtcblxuICBpdChcImtlZXBzIHRoZSBUZXJyYWZvcm0gc3VibW9kdWxlIHNoYXBlIHVuY2hhbmdlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KGF3YWl0IGRvY3NDb21tZW50KHN1Ym1vZHVsZSkpLnRvQ29udGFpbihcbiAgICAgIFwiaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vbW9kdWxlcy90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvdnBjL2F3cy8zLjE5LjAvc3VibW9kdWxlcy92cGMtZW5kcG9pbnRzXCIsXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
// Copyright (c) HashiCorp, Inc
|
|
37
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
38
|
+
const fs = __importStar(require("fs-extra"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const commons_1 = require("@cdktn/commons");
|
|
41
|
+
const util_1 = require("./util");
|
|
42
|
+
const mockReadSchema = jest.fn();
|
|
43
|
+
jest.mock("@cdktn/provider-schema", () => ({
|
|
44
|
+
readSchema: (...args) => mockReadSchema(...args),
|
|
45
|
+
}));
|
|
46
|
+
// Imported after the mock so ConstructsMaker picks up the mocked readSchema.
|
|
47
|
+
const constructs_maker_1 = require("../constructs-maker");
|
|
48
|
+
const tmp = (0, util_1.createTmpHelper)();
|
|
49
|
+
// No resources, so generation stays in TypeScript emission.
|
|
50
|
+
const fakeSchema = {
|
|
51
|
+
providerSchema: {
|
|
52
|
+
format_version: "0.2",
|
|
53
|
+
provider_schemas: {
|
|
54
|
+
"registry.terraform.io/hashicorp/random": {
|
|
55
|
+
resource_schemas: null,
|
|
56
|
+
data_source_schemas: null,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
provider_versions: { "registry.terraform.io/hashicorp/random": "3.2.0" },
|
|
60
|
+
cli_name: "terraform",
|
|
61
|
+
cli_version: "1.7.5",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
describe("filterAlreadyGenerated: registry class", () => {
|
|
65
|
+
const constraint = new commons_1.TerraformProviderConstraint("hashicorp/random@=3.2.0");
|
|
66
|
+
let outdir;
|
|
67
|
+
const maker = (targetVersions) => new constructs_maker_1.ConstructsMaker({
|
|
68
|
+
codeMakerOutput: outdir,
|
|
69
|
+
targetLanguage: commons_1.Language.TYPESCRIPT,
|
|
70
|
+
targetVersions,
|
|
71
|
+
});
|
|
72
|
+
/** A real previous `cdktn get`, so constraints.json is what generation writes. */
|
|
73
|
+
const generateWith = (targetVersions) => maker(targetVersions).generate([constraint]);
|
|
74
|
+
beforeEach(() => {
|
|
75
|
+
mockReadSchema.mockReset();
|
|
76
|
+
mockReadSchema.mockResolvedValue(fakeSchema);
|
|
77
|
+
outdir = tmp("registry-class");
|
|
78
|
+
});
|
|
79
|
+
it.each([
|
|
80
|
+
["nothing changed", undefined, undefined],
|
|
81
|
+
[
|
|
82
|
+
"both products declared, the same class as nothing",
|
|
83
|
+
undefined,
|
|
84
|
+
{ terraform: ">=1.5.7", opentofu: ">=1.6.0" },
|
|
85
|
+
],
|
|
86
|
+
[
|
|
87
|
+
"a range moving within the OpenTofu class",
|
|
88
|
+
{ opentofu: ">=1.6.0" },
|
|
89
|
+
{ opentofu: ">=1.8.0" },
|
|
90
|
+
],
|
|
91
|
+
])("skips regeneration: %s", async (_name, before, after) => {
|
|
92
|
+
await generateWith(before);
|
|
93
|
+
await expect(maker(after).filterAlreadyGenerated([constraint])).resolves.toEqual([]);
|
|
94
|
+
});
|
|
95
|
+
it("regenerates when the project switches to OpenTofu-only", async () => {
|
|
96
|
+
await generateWith(undefined);
|
|
97
|
+
await expect(maker({ opentofu: ">=1.6.0" }).filterAlreadyGenerated([constraint])).resolves.toEqual([constraint]);
|
|
98
|
+
});
|
|
99
|
+
it("regenerates when the project switches away from OpenTofu-only", async () => {
|
|
100
|
+
await generateWith({ opentofu: ">=1.6.0" });
|
|
101
|
+
await expect(maker({ terraform: ">=1.5.7" }).filterAlreadyGenerated([constraint])).resolves.toEqual([constraint]);
|
|
102
|
+
});
|
|
103
|
+
// constraints.json written before targetVersions was stamped has no such field;
|
|
104
|
+
// it must read as the Terraform class, which is what it was generated for.
|
|
105
|
+
describe("constraints.json from before targetVersions was recorded", () => {
|
|
106
|
+
beforeEach(async () => {
|
|
107
|
+
await generateWith({ terraform: ">=1.5.7" });
|
|
108
|
+
const file = path.join(outdir, "constraints.json");
|
|
109
|
+
const { targetVersions: _dropped, ...older } = fs.readJsonSync(file);
|
|
110
|
+
fs.writeJsonSync(file, older);
|
|
111
|
+
});
|
|
112
|
+
it("is fresh for a Terraform project", async () => {
|
|
113
|
+
await expect(maker().filterAlreadyGenerated([constraint])).resolves.toEqual([]);
|
|
114
|
+
});
|
|
115
|
+
it("is stale for an OpenTofu-only project", async () => {
|
|
116
|
+
await expect(maker({ opentofu: ">=1.6.0" }).filterAlreadyGenerated([constraint])).resolves.toEqual([constraint]);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnktY2xhc3MtaW52YWxpZGF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L19fdGVzdHNfXy9yZWdpc3RyeS1jbGFzcy1pbnZhbGlkYXRpb24udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3Qiw0Q0FJd0I7QUFDeEIsaUNBQXlDO0FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUM1RCxDQUFDLENBQUMsQ0FBQztBQUVKLDZFQUE2RTtBQUM3RSwwREFBc0Q7QUFFdEQsTUFBTSxHQUFHLEdBQUcsSUFBQSxzQkFBZSxHQUFFLENBQUM7QUFFOUIsNERBQTREO0FBQzVELE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGNBQWMsRUFBRTtRQUNkLGNBQWMsRUFBRSxLQUFjO1FBQzlCLGdCQUFnQixFQUFFO1lBQ2hCLHdDQUF3QyxFQUFFO2dCQUN4QyxnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixtQkFBbUIsRUFBRSxJQUFJO2FBQzFCO1NBQ0Y7UUFDRCxpQkFBaUIsRUFBRSxFQUFFLHdDQUF3QyxFQUFFLE9BQU8sRUFBRTtRQUN4RSxRQUFRLEVBQUUsV0FBVztRQUNyQixXQUFXLEVBQUUsT0FBTztLQUNyQjtDQUNGLENBQUM7QUFFRixRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUkscUNBQTJCLENBQUMseUJBQXlCLENB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LENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2hELE1BQU0sTUFBTSxDQUNWLEtBQUssRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDN0MsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELE1BQU0sTUFBTSxDQUNWLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDcEUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1xuICBMYW5ndWFnZSxcbiAgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50LFxuICBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBjcmVhdGVUbXBIZWxwZXIgfSBmcm9tIFwiLi91dGlsXCI7XG5cbmNvbnN0IG1vY2tSZWFkU2NoZW1hID0gamVzdC5mbigpO1xuamVzdC5tb2NrKFwiQGNka3RuL3Byb3ZpZGVyLXNjaGVtYVwiLCAoKSA9PiAoe1xuICByZWFkU2NoZW1hOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBtb2NrUmVhZFNjaGVtYSguLi5hcmdzKSxcbn0pKTtcblxuLy8gSW1wb3J0ZWQgYWZ0ZXIgdGhlIG1vY2sgc28gQ29uc3RydWN0c01ha2VyIHBpY2tzIHVwIHRoZSBtb2NrZWQgcmVhZFNjaGVtYS5cbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlciB9IGZyb20gXCIuLi9jb25zdHJ1Y3RzLW1ha2VyXCI7XG5cbmNvbnN0IHRtcCA9IGNyZWF0ZVRtcEhlbHBlcigpO1xuXG4vLyBObyByZXNvdXJjZXMsIHNvIGdlbmVyYXRpb24gc3RheXMgaW4gVHlwZVNjcmlwdCBlbWlzc2lvbi5cbmNvbnN0IGZha2VTY2hlbWEgPSB7XG4gIHByb3ZpZGVyU2NoZW1hOiB7XG4gICAgZm9ybWF0X3ZlcnNpb246IFwiMC4yXCIgYXMgY29uc3QsXG4gICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL3JhbmRvbVwiOiB7XG4gICAgICAgIHJlc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICAgIGRhdGFfc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvdmlkZXJfdmVyc2lvbnM6IHsgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL3JhbmRvbVwiOiBcIjMuMi4wXCIgfSxcbiAgICBjbGlfbmFtZTogXCJ0ZXJyYWZvcm1cIixcbiAgICBjbGlfdmVyc2lvbjogXCIxLjcuNVwiLFxuICB9LFxufTtcblxuZGVzY3JpYmUoXCJmaWx0ZXJBbHJlYWR5R2VuZXJhdGVkOiByZWdpc3RyeSBjbGFzc1wiLCAoKSA9PiB7XG4gIGNvbnN0IGNvbnN0cmFpbnQgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50KFwiaGFzaGljb3JwL3JhbmRvbUA9My4yLjBcIik7XG4gIGxldCBvdXRkaXI6IHN0cmluZztcblxuICBjb25zdCBtYWtlciA9ICh0YXJnZXRWZXJzaW9ucz86IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zKSA9PlxuICAgIG5ldyBDb25zdHJ1Y3RzTWFrZXIoe1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiBvdXRkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICAgIHRhcmdldFZlcnNpb25zLFxuICAgIH0pO1xuXG4gIC8qKiBBIHJlYWwgcHJldmlvdXMgYGNka3RuIGdldGAsIHNvIGNvbnN0cmFpbnRzLmpzb24gaXMgd2hhdCBnZW5lcmF0aW9uIHdyaXRlcy4gKi9cbiAgY29uc3QgZ2VuZXJhdGVXaXRoID0gKHRhcmdldFZlcnNpb25zPzogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMpID0+XG4gICAgbWFrZXIodGFyZ2V0VmVyc2lvbnMpLmdlbmVyYXRlKFtjb25zdHJhaW50XSk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgbW9ja1JlYWRTY2hlbWEubW9ja1Jlc2V0KCk7XG4gICAgbW9ja1JlYWRTY2hlbWEubW9ja1Jlc29sdmVkVmFsdWUoZmFrZVNjaGVtYSk7XG4gICAgb3V0ZGlyID0gdG1wKFwicmVnaXN0cnktY2xhc3NcIik7XG4gIH0pO1xuXG4gIGl0LmVhY2g8XG4gICAgW1xuICAgICAgc3RyaW5nLFxuICAgICAgVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgfCB1bmRlZmluZWQsXG4gICAgICBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyB8IHVuZGVmaW5lZCxcbiAgICBdXG4gID4oW1xuICAgIFtcIm5vdGhpbmcgY2hhbmdlZFwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZF0sXG4gICAgW1xuICAgICAgXCJib3RoIHByb2R1Y3RzIGRlY2xhcmVkLCB0aGUgc2FtZSBjbGFzcyBhcyBub3RoaW5nXCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIsIG9wZW50b2Z1OiBcIj49MS42LjBcIiB9LFxuICAgIF0sXG4gICAgW1xuICAgICAgXCJhIHJhbmdlIG1vdmluZyB3aXRoaW4gdGhlIE9wZW5Ub2Z1IGNsYXNzXCIsXG4gICAgICB7IG9wZW50b2Z1OiBcIj49MS42LjBcIiB9LFxuICAgICAgeyBvcGVudG9mdTogXCI+PTEuOC4wXCIgfSxcbiAgICBdLFxuICBdKShcInNraXBzIHJlZ2VuZXJhdGlvbjogJXNcIiwgYXN5bmMgKF9uYW1lLCBiZWZvcmUsIGFmdGVyKSA9PiB7XG4gICAgYXdhaXQgZ2VuZXJhdGVXaXRoKGJlZm9yZSk7XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtYWtlcihhZnRlcikuZmlsdGVyQWxyZWFkeUdlbmVyYXRlZChbY29uc3RyYWludF0pLFxuICAgICkucmVzb2x2ZXMudG9FcXVhbChbXSk7XG4gIH0pO1xuXG4gIGl0KFwicmVnZW5lcmF0ZXMgd2hlbiB0aGUgcHJvamVjdCBzd2l0Y2hlcyB0byBPcGVuVG9mdS1vbmx5XCIsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBnZW5lcmF0ZVdpdGgodW5kZWZpbmVkKTtcblxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIG1ha2VyKHsgb3BlbnRvZnU6IFwiPj0xLjYuMFwiIH0pLmZpbHRlckFscmVhZHlHZW5lcmF0ZWQoW2NvbnN0cmFpbnRdKSxcbiAgICApLnJlc29sdmVzLnRvRXF1YWwoW2NvbnN0cmFpbnRdKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWdlbmVyYXRlcyB3aGVuIHRoZSBwcm9qZWN0IHN3aXRjaGVzIGF3YXkgZnJvbSBPcGVuVG9mdS1vbmx5XCIsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBnZW5lcmF0ZVdpdGgoeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSk7XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBtYWtlcih7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIgfSkuZmlsdGVyQWxyZWFkeUdlbmVyYXRlZChbY29uc3RyYWludF0pLFxuICAgICkucmVzb2x2ZXMudG9FcXVhbChbY29uc3RyYWludF0pO1xuICB9KTtcblxuICAvLyBjb25zdHJhaW50cy5qc29uIHdyaXR0ZW4gYmVmb3JlIHRhcmdldFZlcnNpb25zIHdhcyBzdGFtcGVkIGhhcyBubyBzdWNoIGZpZWxkO1xuICAvLyBpdCBtdXN0IHJlYWQgYXMgdGhlIFRlcnJhZm9ybSBjbGFzcywgd2hpY2ggaXMgd2hhdCBpdCB3YXMgZ2VuZXJhdGVkIGZvci5cbiAgZGVzY3JpYmUoXCJjb25zdHJhaW50cy5qc29uIGZyb20gYmVmb3JlIHRhcmdldFZlcnNpb25zIHdhcyByZWNvcmRlZFwiLCAoKSA9PiB7XG4gICAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBnZW5lcmF0ZVdpdGgoeyB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiIH0pO1xuICAgICAgY29uc3QgZmlsZSA9IHBhdGguam9pbihvdXRkaXIsIFwiY29uc3RyYWludHMuanNvblwiKTtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2lvbnM6IF9kcm9wcGVkLCAuLi5vbGRlciB9ID0gZnMucmVhZEpzb25TeW5jKGZpbGUpO1xuICAgICAgZnMud3JpdGVKc29uU3luYyhmaWxlLCBvbGRlcik7XG4gICAgfSk7XG5cbiAgICBpdChcImlzIGZyZXNoIGZvciBhIFRlcnJhZm9ybSBwcm9qZWN0XCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGV4cGVjdChcbiAgICAgICAgbWFrZXIoKS5maWx0ZXJBbHJlYWR5R2VuZXJhdGVkKFtjb25zdHJhaW50XSksXG4gICAgICApLnJlc29sdmVzLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJpcyBzdGFsZSBmb3IgYW4gT3BlblRvZnUtb25seSBwcm9qZWN0XCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGV4cGVjdChcbiAgICAgICAgbWFrZXIoeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSkuZmlsdGVyQWxyZWFkeUdlbmVyYXRlZChbY29uc3RyYWludF0pLFxuICAgICAgKS5yZXNvbHZlcy50b0VxdWFsKFtjb25zdHJhaW50XSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -178,4 +178,32 @@ describe("targetVersions threading through 'cdktn get'", () => {
|
|
|
178
178
|
expect(toGenerate).toEqual([]);
|
|
179
179
|
});
|
|
180
180
|
});
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb25zLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L19fdGVzdHNfXy90YXJnZXQtdmVyc2lvbnMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3Qiw0Q0FJd0I7QUFDeEIsaUNBQXlDO0FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUM1RCxDQUFDLENBQUMsQ0FBQztBQUVKLDZFQUE2RTtBQUM3RSwwREFBa0U7QUFFbEUsTUFBTSxHQUFHLEdBQUcsSUFBQSxzQkFBZSxHQUFFLENBQUM7QUFFOUIsTUFBTSxVQUFVLEdBQWtDO0lBQ2hELEdBQUcsRUFBRSxrQkFBa0I7SUFDdkIsSUFBSSxFQUFFLFFBQVE7SUFDZCxNQUFNLEVBQUUsa0JBQWtCO0lBQzFCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsc0VBQXNFO0FBQ3RFLHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsR0FBRztJQUNqQixjQUFjLEVBQUU7UUFDZCxjQUFjLEVBQUUsS0FBYztRQUM5QixnQkFBZ0IsRUFBRTtZQUNoQix3Q0FBd0MsRUFBRTtnQkFDeEMsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsbUJBQW1CLEVBQUUsSUFBSTthQUMxQjtTQUNGO1FBQ0QsaUJBQWlCLEVBQUU7WUFDakIsd0NBQXdDLEVBQUUsT0FBTztTQUNsRDtRQUNELFFBQVEsRUFBRSxXQUFX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QUFDO1FBQzVDLE1BQU0sQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25GLHVFQUF1RTtRQUN2RSxtRUFBbUU7UUFDbkUsc0VBQXNFO1FBQ3RFLHFCQUFxQjtRQUNyQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBZTtZQUMxQixlQUFlLEVBQUUsT0FBTztZQUN4QixjQUFjLEVBQUUsa0JBQVEsQ0FBQyxVQUFVO1lBQ25DLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7U0FDekMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksa0NBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sTUFBTSxHQUFHLElBQUksa0NBQWUsQ0FBQztZQUNqQyxHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO1NBQzFDLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1xuICBMYW5ndWFnZSxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGNyZWF0ZVRtcEhlbHBlciB9IGZyb20gXCIuL3V0aWxcIjtcblxuY29uc3QgbW9ja1JlYWRTY2hlbWEgPSBqZXN0LmZuKCk7XG5qZXN0Lm1vY2soXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCIsICgpID0+ICh7XG4gIHJlYWRTY2hlbWE6ICguLi5hcmdzOiB1bmtub3duW10pID0+IG1vY2tSZWFkU2NoZW1hKC4uLmFyZ3MpLFxufSkpO1xuXG4vLyBJbXBvcnRlZCBhZnRlciB0aGUgbW9jayBzbyBDb25zdHJ1Y3RzTWFrZXIgcGlja3MgdXAgdGhlIG1vY2tlZCByZWFkU2NoZW1hLlxuaW1wb3J0IHsgQ29uc3RydWN0c01ha2VyLCBHZXRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbnN0cnVjdHMtbWFrZXJcIjtcblxuY29uc3QgdG1wID0gY3JlYXRlVG1wSGVscGVyKCk7XG5cbmNvbnN0IGNvbnN0cmFpbnQ6IFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50ID0ge1xuICBmcW46IFwiaGFzaGljb3JwL3JhbmRvbVwiLFxuICBuYW1lOiBcInJhbmRvbVwiLFxuICBzb3VyY2U6IFwiaGFzaGljb3JwL3JhbmRvbVwiLFxuICB2ZXJzaW9uOiBcIjMuMS4zXCIsXG59O1xuXG4vLyBNaW5pbWFsIHNjaGVtYSAtIG5vIHJlc291cmNlcy9kYXRhIHNvdXJjZXMgLSBzbyBnZW5lcmF0aW9uIHN0YXlzIHdpdGhpblxuLy8gcHVyZSBUeXBlU2NyaXB0IGVtaXNzaW9uIChubyBqc2lpLXBhY21hayBpbnZvY2F0aW9uKSwgbWlycm9yaW5nIHRoZVxuLy8gXCJlbXB0eS1wcm92aWRlci1yZXNvdXJjZXNcIiBmaXh0dXJlIHVzZWQgZWxzZXdoZXJlIGluIHRoaXMgcGFja2FnZS5cbmNvbnN0IGZha2VTY2hlbWEgPSB7XG4gIHByb3ZpZGVyU2NoZW1hOiB7XG4gICAgZm9ybWF0X3ZlcnNpb246IFwiMC4yXCIgYXMgY29uc3QsXG4gICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL3JhbmRvbVwiOiB7XG4gICAgICAgIHJlc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICAgIGRhdGFfc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvdmlkZXJfdmVyc2lvbnM6IHtcbiAgICAgIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9yYW5kb21cIjogXCIzLjEuM1wiLFxuICAgIH0sXG4gICAgY2xpX25hbWU6IFwidGVycmFmb3JtXCIsXG4gICAgY2xpX3ZlcnNpb246IFwiMS43LjVcIixcbiAgfSxcbn07XG5cbmRlc2NyaWJlKFwidGFyZ2V0VmVyc2lvbnMgdGhyZWFkaW5nIHRocm91Z2ggJ2Nka3RuIGdldCdcIiwgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtb2NrUmVhZFNjaGVtYS5tb2NrUmVzZXQoKTtcbiAgICBtb2NrUmVhZFNjaGVtYS5tb2NrUmVzb2x2ZWRWYWx1ZShmYWtlU2NoZW1hKTtcbiAgfSk7XG5cbiAgaXQoXCJwYXNzZXMgR2V0T3B0aW9ucy50YXJnZXRWZXJzaW9ucyB0aHJvdWdoIHRvIHJlYWRTY2hlbWFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtdGhyZWFkLnRlc3RcIik7XG4gICAgY29uc3QgdGFyZ2V0VmVyc2lvbnM6IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zID0geyB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiIH07XG4gICAgY29uc3Qgb3B0aW9uczogR2V0T3B0aW9ucyA9IHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgICAgdGFyZ2V0VmVyc2lvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihvcHRpb25zLCBcIi9zb21lL2NhY2hlL3BhdGhcIik7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICBcIi9zb21lL2NhY2hlL3BhdGhcIixcbiAgICAgIHRhcmdldFZlcnNpb25zLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KFwib21pdHMgdGFyZ2V0VmVyc2lvbnMgZnJvbSB0aGUgcmVhZFNjaGVtYSBjYWxsIHdoZW4gbm90IGNvbmZpZ3VyZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtYWJzZW50LnRlc3RcIik7XG4gICAgY29uc3Qgb3B0aW9uczogR2V0T3B0aW9ucyA9IHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgIH07XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIob3B0aW9ucyk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzdGFtcHMgY29uc3RyYWludHMuanNvbiB3aXRoIHRhcmdldFZlcnNpb25zICsgY2xpIGlkZW50aXR5LCBhbmQgb2xkZXIgY29uc3RyYWludHMuanNvbiBmaWxlcyB3aXRob3V0IHRob3NlIGZpZWxkcyBhcmUgc3RpbGwgdHJlYXRlZCBhcyBmcmVzaCAobm8gZm9yY2VkIHJlZ2VuZXJhdGlvbilcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtc3RhbXAudGVzdFwiKTtcbiAgICBjb25zdCB0YXJnZXRWZXJzaW9uczogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgPSB7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIgfTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGF3YWl0IG1ha2VyLmdlbmVyYXRlKFtjb25zdHJhaW50XSk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50c0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtkaXIsIFwiY29uc3RyYWludHMuanNvblwiKSwgXCJ1dGY4XCIpLFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS50YXJnZXRWZXJzaW9ucykudG9FcXVhbCh0YXJnZXRWZXJzaW9ucyk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS5jbGkpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogXCJ0ZXJyYWZvcm1cIixcbiAgICAgIHZlcnNpb246IFwiMS43LjVcIixcbiAgICB9KTtcblxuICAgIC8vIFJld3JpdGUgY29uc3RyYWludHMuanNvbiBhcyBpdCB3b3VsZCBoYXZlIGxvb2tlZCBiZWZvcmUgdGhpcyBmZWF0dXJlXG4gICAgLy8gbGFuZGVkIChubyB0YXJnZXRWZXJzaW9ucy9jbGkgZmllbGRzKSwga2VlcGluZyB0aGUgcmVzdCBpZGVudGljYWwgLVxuICAgIC8vIHRoaXMgc2ltdWxhdGVzIHJlLXJ1bm5pbmcgYGNka3RuIGdldGAgYWdhaW5zdCBhbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAgLy8gZ2VuZXJhdGVkIGJ5IGFuIG9sZGVyIGNka3RuIHZlcnNpb24uXG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0VmVyc2lvbnM6IF90dixcbiAgICAgIGNsaTogX2NsaSxcbiAgICAgIC4uLmxlZ2FjeUNvbnN0cmFpbnRzXG4gICAgfSA9IGNvbnN0cmFpbnRzRmlsZTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgICBwYXRoLmpvaW4od29ya2RpciwgXCJjb25zdHJhaW50cy5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkobGVnYWN5Q29uc3RyYWludHMsIG51bGwsIDIpLFxuICAgICk7XG5cbiAgICBjb25zdCBtYWtlcjIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHRvR2VuZXJhdGUgPSBhd2FpdCBtYWtlcjIuZmlsdGVyQWxyZWFkeUdlbmVyYXRlZChbY29uc3RyYWludF0pO1xuICAgIGV4cGVjdCh0b0dlbmVyYXRlKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgaXQoXCJ0aHJlYWRzIGEgcGFydGlhbCB0YXJnZXRWZXJzaW9ucyAoc2luZ2xlIHByb2R1Y3QpIHRocm91Z2ggdW5jaGFuZ2VkIGFuZCBzdGFtcHMgaXQgdmVyYmF0aW1cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtcGFydGlhbC50ZXN0XCIpO1xuICAgIGNvbnN0IHRhcmdldFZlcnNpb25zOiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyA9IHsgb3BlbnRvZnU6IFwiPj0xLjExLjBcIiB9O1xuICAgIGNvbnN0IG9wdGlvbnM6IEdldE9wdGlvbnMgPSB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICAgIHRhcmdldFZlcnNpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIob3B0aW9ucyk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICApO1xuXG4gICAgLy8gVGhlIHN0YW1wIHJlY29yZHMgZXhhY3RseSB3aGF0IHRoZSBwcm9qZWN0IGRlY2xhcmVkIC0gbm8gdGVycmFmb3JtXG4gICAgLy8gZGVmYXVsdCBpcyBpbmplY3RlZCBhdCBnZXQtdGltZSAoZGVmYXVsdGluZyBmb3IgdGhlIHVuZGVjbGFyZWRcbiAgICAvLyBwcm9kdWN0IGhhcHBlbnMgb25seSBhdCBzeW50aC10aW1lLCBpbiByZXNvbHZlVGFyZ2V0VmVyc2lvbnMpLlxuICAgIGNvbnN0IGNvbnN0cmFpbnRzRmlsZSA9IEpTT04ucGFyc2UoXG4gICAgICBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4od29ya2RpciwgXCJjb25zdHJhaW50cy5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcbiAgICBleHBlY3QoY29uc3RyYWludHNGaWxlLnRhcmdldFZlcnNpb25zKS50b0VxdWFsKHsgb3BlbnRvZnU6IFwiPj0xLjExLjBcIiB9KTtcbiAgfSk7XG5cbiAgaXQoXCJvbWl0cyB0aGUgY2xpIHN0YW1wIHdoZW4gdGhlIGZldGNoZWQgc2NoZW1hIGNhcnJpZXMgbm8gQ0xJIHZlcnNpb24gbWV0YWRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtbm8tY2xpLnRlc3RcIik7XG4gICAgY29uc3Qge1xuICAgICAgY2xpX25hbWU6IF9jbGlOYW1lLFxuICAgICAgY2xpX3ZlcnNpb246IF9jbGlWZXJzaW9uLFxuICAgICAgLi4uc2NoZW1hV2l0aG91dENsaVxuICAgIH0gPSBmYWtlU2NoZW1hLnByb3ZpZGVyU2NoZW1hO1xuICAgIG1vY2tSZWFkU2NoZW1hLm1vY2tSZXNvbHZlZFZhbHVlKHsgcHJvdmlkZXJTY2hlbWE6IHNjaGVtYVdpdGhvdXRDbGkgfSk7XG5cbiAgICBjb25zdCB0YXJnZXRWZXJzaW9uczogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgPSB7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIgfTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGF3YWl0IG1ha2VyLmdlbmVyYXRlKFtjb25zdHJhaW50XSk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50c0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtkaXIsIFwiY29uc3RyYWludHMuanNvblwiKSwgXCJ1dGY4XCIpLFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS5jbGkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3QoY29uc3RyYWludHNGaWxlLnRhcmdldFZlcnNpb25zKS50b0VxdWFsKHRhcmdldFZlcnNpb25zKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBmb3JjZSByZWdlbmVyYXRpb24gd2hlbiB0YXJnZXRWZXJzaW9ucyBjaGFuZ2UgYmV0d2VlbiBydW5zXCIsIGFzeW5jICgpID0+IHtcbiAgICAvLyBUaGUgc3RhbXAgaXMgZGlhZ25vc3RpYy1vbmx5OiBwZXIgdGhlIEdldE9wdGlvbnMudGFyZ2V0VmVyc2lvbnMgZG9jLFxuICAgIC8vIHRhcmdldFZlcnNpb25zIG5ldmVyIGZpbHRlcnMgY29kZWdlbiAodGhlIGZ1bGwgc2NoZW1hIHN1cmZhY2UgaXNcbiAgICAvLyBhbHdheXMgZ2VuZXJhdGVkKSwgc28gZnJlc2huZXNzIG9ubHkgY29tcGFyZXMgdGhlIHByb3ZpZGVycyBtYXAgYW5kXG4gICAgLy8gdGhlIGNka3RmIHZlcnNpb24uXG4gICAgY29uc3Qgd29ya2RpciA9IHRtcChcInRhcmdldC12ZXJzaW9ucy1jaGFuZ2UudGVzdFwiKTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9uczogeyB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihvcHRpb25zKTtcbiAgICBhd2FpdCBtYWtlci5nZW5lcmF0ZShbY29uc3RyYWludF0pO1xuXG4gICAgY29uc3QgbWFrZXIyID0gbmV3IENvbnN0cnVjdHNNYWtlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdGFyZ2V0VmVyc2lvbnM6IHsgdGVycmFmb3JtOiBcIj49MS4xMS4wXCIgfSxcbiAgICB9KTtcbiAgICBjb25zdCB0b0dlbmVyYXRlID0gYXdhaXQgbWFrZXIyLmZpbHRlckFscmVhZHlHZW5lcmF0ZWQoW2NvbnN0cmFpbnRdKTtcbiAgICBleHBlY3QodG9HZW5lcmF0ZSkudG9FcXVhbChbXSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
181
|
+
describe("targetVersions reaching generated module bindings", () => {
|
|
182
|
+
const moduleConstraint = new commons_1.TerraformModuleConstraint("terraform-aws-modules/vpc/aws@3.19.0");
|
|
183
|
+
const emittedSources = (dir) => fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
|
|
184
|
+
const full = path.join(dir, entry.name);
|
|
185
|
+
if (entry.isDirectory())
|
|
186
|
+
return emittedSources(full);
|
|
187
|
+
return entry.name.endsWith(".ts") ? [fs.readFileSync(full, "utf8")] : [];
|
|
188
|
+
});
|
|
189
|
+
beforeEach(() => {
|
|
190
|
+
mockReadSchema.mockReset();
|
|
191
|
+
const target = commons_1.ConstructsMakerModuleTarget.from(moduleConstraint, commons_1.Language.TYPESCRIPT);
|
|
192
|
+
mockReadSchema.mockResolvedValue({
|
|
193
|
+
moduleSchema: {
|
|
194
|
+
[target.moduleKey]: { name: target.name, inputs: [], outputs: [] },
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
it("links an OpenTofu-only project's modules to the OpenTofu registry", async () => {
|
|
199
|
+
const workdir = tmp("target-versions-module.test");
|
|
200
|
+
const maker = new constructs_maker_1.ConstructsMaker({
|
|
201
|
+
codeMakerOutput: workdir,
|
|
202
|
+
targetLanguage: commons_1.Language.TYPESCRIPT,
|
|
203
|
+
targetVersions: { opentofu: ">=1.6.0" },
|
|
204
|
+
});
|
|
205
|
+
await maker.generate([moduleConstraint]);
|
|
206
|
+
expect(emittedSources(workdir).join("\n")).toContain("https://search.opentofu.org/module/terraform-aws-modules/vpc/aws/v3.19.0");
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb25zLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L19fdGVzdHNfXy90YXJnZXQtdmVyc2lvbnMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3Qiw0Q0FNd0I7QUFDeEIsaUNBQXlDO0FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUM1RCxDQUFDLENBQUMsQ0FBQztBQUVKLDZFQUE2RTtBQUM3RSwwREFBa0U7QUFFbEUsTUFBTSxHQUFHLEdBQUcsSUFBQSxzQkFBZSxHQUFFLENBQUM7QUFFOUIsTUFBTSxVQUFVLEdBQWtDO0lBQ2hELEdBQUcsRUFBRSxrQkFBa0I7SUFDdkIsSUFBSSxFQUFFLFFBQVE7SUFDZCxNQUFNLEVBQUUsa0JBQWtCO0lBQzFCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsc0VBQXNFO0FBQ3RFLHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsR0FBRztJQUNqQixjQUFjLEVBQUU7UUFDZCxjQUFjLEVBQUUsS0FBYztRQUM5QixnQkFBZ0IsRUFBRTtZQUNoQix3Q0FBd0MsRUFBRTtnQkFDeEMsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsbUJBQW1CLEVBQUUsSUFBSTthQUMxQjtTQUNGO1FBQ0QsaUJBQWlCLEVBQUU7WUFDakIsd0NBQXdDLEVBQUUsT0FBTztTQUNsRDtRQUNELFFBQVEsRUFBRSxXQUFX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QUNuQyxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1NBQ3hDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUV6QyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDbEQsMEVBQTBFLENBQzNFLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0LFxuICBMYW5ndWFnZSxcbiAgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGNyZWF0ZVRtcEhlbHBlciB9IGZyb20gXCIuL3V0aWxcIjtcblxuY29uc3QgbW9ja1JlYWRTY2hlbWEgPSBqZXN0LmZuKCk7XG5qZXN0Lm1vY2soXCJAY2RrdG4vcHJvdmlkZXItc2NoZW1hXCIsICgpID0+ICh7XG4gIHJlYWRTY2hlbWE6ICguLi5hcmdzOiB1bmtub3duW10pID0+IG1vY2tSZWFkU2NoZW1hKC4uLmFyZ3MpLFxufSkpO1xuXG4vLyBJbXBvcnRlZCBhZnRlciB0aGUgbW9jayBzbyBDb25zdHJ1Y3RzTWFrZXIgcGlja3MgdXAgdGhlIG1vY2tlZCByZWFkU2NoZW1hLlxuaW1wb3J0IHsgQ29uc3RydWN0c01ha2VyLCBHZXRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbnN0cnVjdHMtbWFrZXJcIjtcblxuY29uc3QgdG1wID0gY3JlYXRlVG1wSGVscGVyKCk7XG5cbmNvbnN0IGNvbnN0cmFpbnQ6IFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50ID0ge1xuICBmcW46IFwiaGFzaGljb3JwL3JhbmRvbVwiLFxuICBuYW1lOiBcInJhbmRvbVwiLFxuICBzb3VyY2U6IFwiaGFzaGljb3JwL3JhbmRvbVwiLFxuICB2ZXJzaW9uOiBcIjMuMS4zXCIsXG59O1xuXG4vLyBNaW5pbWFsIHNjaGVtYSAtIG5vIHJlc291cmNlcy9kYXRhIHNvdXJjZXMgLSBzbyBnZW5lcmF0aW9uIHN0YXlzIHdpdGhpblxuLy8gcHVyZSBUeXBlU2NyaXB0IGVtaXNzaW9uIChubyBqc2lpLXBhY21hayBpbnZvY2F0aW9uKSwgbWlycm9yaW5nIHRoZVxuLy8gXCJlbXB0eS1wcm92aWRlci1yZXNvdXJjZXNcIiBmaXh0dXJlIHVzZWQgZWxzZXdoZXJlIGluIHRoaXMgcGFja2FnZS5cbmNvbnN0IGZha2VTY2hlbWEgPSB7XG4gIHByb3ZpZGVyU2NoZW1hOiB7XG4gICAgZm9ybWF0X3ZlcnNpb246IFwiMC4yXCIgYXMgY29uc3QsXG4gICAgcHJvdmlkZXJfc2NoZW1hczoge1xuICAgICAgXCJyZWdpc3RyeS50ZXJyYWZvcm0uaW8vaGFzaGljb3JwL3JhbmRvbVwiOiB7XG4gICAgICAgIHJlc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICAgIGRhdGFfc291cmNlX3NjaGVtYXM6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcHJvdmlkZXJfdmVyc2lvbnM6IHtcbiAgICAgIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9yYW5kb21cIjogXCIzLjEuM1wiLFxuICAgIH0sXG4gICAgY2xpX25hbWU6IFwidGVycmFmb3JtXCIsXG4gICAgY2xpX3ZlcnNpb246IFwiMS43LjVcIixcbiAgfSxcbn07XG5cbmRlc2NyaWJlKFwidGFyZ2V0VmVyc2lvbnMgdGhyZWFkaW5nIHRocm91Z2ggJ2Nka3RuIGdldCdcIiwgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtb2NrUmVhZFNjaGVtYS5tb2NrUmVzZXQoKTtcbiAgICBtb2NrUmVhZFNjaGVtYS5tb2NrUmVzb2x2ZWRWYWx1ZShmYWtlU2NoZW1hKTtcbiAgfSk7XG5cbiAgaXQoXCJwYXNzZXMgR2V0T3B0aW9ucy50YXJnZXRWZXJzaW9ucyB0aHJvdWdoIHRvIHJlYWRTY2hlbWFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtdGhyZWFkLnRlc3RcIik7XG4gICAgY29uc3QgdGFyZ2V0VmVyc2lvbnM6IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zID0geyB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiIH07XG4gICAgY29uc3Qgb3B0aW9uczogR2V0T3B0aW9ucyA9IHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgICAgdGFyZ2V0VmVyc2lvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihvcHRpb25zLCBcIi9zb21lL2NhY2hlL3BhdGhcIik7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICBcIi9zb21lL2NhY2hlL3BhdGhcIixcbiAgICAgIHRhcmdldFZlcnNpb25zLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KFwib21pdHMgdGFyZ2V0VmVyc2lvbnMgZnJvbSB0aGUgcmVhZFNjaGVtYSBjYWxsIHdoZW4gbm90IGNvbmZpZ3VyZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtYWJzZW50LnRlc3RcIik7XG4gICAgY29uc3Qgb3B0aW9uczogR2V0T3B0aW9ucyA9IHtcbiAgICAgIGNvZGVNYWtlck91dHB1dDogd29ya2RpcixcbiAgICAgIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICAgIH07XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIob3B0aW9ucyk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoXCJzdGFtcHMgY29uc3RyYWludHMuanNvbiB3aXRoIHRhcmdldFZlcnNpb25zICsgY2xpIGlkZW50aXR5LCBhbmQgb2xkZXIgY29uc3RyYWludHMuanNvbiBmaWxlcyB3aXRob3V0IHRob3NlIGZpZWxkcyBhcmUgc3RpbGwgdHJlYXRlZCBhcyBmcmVzaCAobm8gZm9yY2VkIHJlZ2VuZXJhdGlvbilcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtc3RhbXAudGVzdFwiKTtcbiAgICBjb25zdCB0YXJnZXRWZXJzaW9uczogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgPSB7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIgfTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGF3YWl0IG1ha2VyLmdlbmVyYXRlKFtjb25zdHJhaW50XSk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50c0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtkaXIsIFwiY29uc3RyYWludHMuanNvblwiKSwgXCJ1dGY4XCIpLFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS50YXJnZXRWZXJzaW9ucykudG9FcXVhbCh0YXJnZXRWZXJzaW9ucyk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS5jbGkpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogXCJ0ZXJyYWZvcm1cIixcbiAgICAgIHZlcnNpb246IFwiMS43LjVcIixcbiAgICB9KTtcblxuICAgIC8vIFJld3JpdGUgY29uc3RyYWludHMuanNvbiBhcyBpdCB3b3VsZCBoYXZlIGxvb2tlZCBiZWZvcmUgdGhpcyBmZWF0dXJlXG4gICAgLy8gbGFuZGVkIChubyB0YXJnZXRWZXJzaW9ucy9jbGkgZmllbGRzKSwga2VlcGluZyB0aGUgcmVzdCBpZGVudGljYWwgLVxuICAgIC8vIHRoaXMgc2ltdWxhdGVzIHJlLXJ1bm5pbmcgYGNka3RuIGdldGAgYWdhaW5zdCBhbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAgLy8gZ2VuZXJhdGVkIGJ5IGFuIG9sZGVyIGNka3RuIHZlcnNpb24uXG4gICAgY29uc3Qge1xuICAgICAgdGFyZ2V0VmVyc2lvbnM6IF90dixcbiAgICAgIGNsaTogX2NsaSxcbiAgICAgIC4uLmxlZ2FjeUNvbnN0cmFpbnRzXG4gICAgfSA9IGNvbnN0cmFpbnRzRmlsZTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgICBwYXRoLmpvaW4od29ya2RpciwgXCJjb25zdHJhaW50cy5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkobGVnYWN5Q29uc3RyYWludHMsIG51bGwsIDIpLFxuICAgICk7XG5cbiAgICBjb25zdCBtYWtlcjIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHRvR2VuZXJhdGUgPSBhd2FpdCBtYWtlcjIuZmlsdGVyQWxyZWFkeUdlbmVyYXRlZChbY29uc3RyYWludF0pO1xuICAgIGV4cGVjdCh0b0dlbmVyYXRlKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgaXQoXCJ0aHJlYWRzIGEgcGFydGlhbCB0YXJnZXRWZXJzaW9ucyAoc2luZ2xlIHByb2R1Y3QpIHRocm91Z2ggdW5jaGFuZ2VkIGFuZCBzdGFtcHMgaXQgdmVyYmF0aW1cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtcGFydGlhbC50ZXN0XCIpO1xuICAgIGNvbnN0IHRhcmdldFZlcnNpb25zOiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyA9IHsgb3BlbnRvZnU6IFwiPj0xLjExLjBcIiB9O1xuICAgIGNvbnN0IG9wdGlvbnM6IEdldE9wdGlvbnMgPSB7XG4gICAgICBjb2RlTWFrZXJPdXRwdXQ6IHdvcmtkaXIsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICAgIHRhcmdldFZlcnNpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIob3B0aW9ucyk7XG4gICAgYXdhaXQgbWFrZXIuZ2VuZXJhdGUoW2NvbnN0cmFpbnRdKTtcblxuICAgIGV4cGVjdChtb2NrUmVhZFNjaGVtYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBbY29uc3RyYWludF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICApO1xuXG4gICAgLy8gVGhlIHN0YW1wIHJlY29yZHMgZXhhY3RseSB3aGF0IHRoZSBwcm9qZWN0IGRlY2xhcmVkIC0gbm8gdGVycmFmb3JtXG4gICAgLy8gZGVmYXVsdCBpcyBpbmplY3RlZCBhdCBnZXQtdGltZSAoZGVmYXVsdGluZyBmb3IgdGhlIHVuZGVjbGFyZWRcbiAgICAvLyBwcm9kdWN0IGhhcHBlbnMgb25seSBhdCBzeW50aC10aW1lLCBpbiByZXNvbHZlVGFyZ2V0VmVyc2lvbnMpLlxuICAgIGNvbnN0IGNvbnN0cmFpbnRzRmlsZSA9IEpTT04ucGFyc2UoXG4gICAgICBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4od29ya2RpciwgXCJjb25zdHJhaW50cy5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcbiAgICBleHBlY3QoY29uc3RyYWludHNGaWxlLnRhcmdldFZlcnNpb25zKS50b0VxdWFsKHsgb3BlbnRvZnU6IFwiPj0xLjExLjBcIiB9KTtcbiAgfSk7XG5cbiAgaXQoXCJvbWl0cyB0aGUgY2xpIHN0YW1wIHdoZW4gdGhlIGZldGNoZWQgc2NoZW1hIGNhcnJpZXMgbm8gQ0xJIHZlcnNpb24gbWV0YWRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdvcmtkaXIgPSB0bXAoXCJ0YXJnZXQtdmVyc2lvbnMtbm8tY2xpLnRlc3RcIik7XG4gICAgY29uc3Qge1xuICAgICAgY2xpX25hbWU6IF9jbGlOYW1lLFxuICAgICAgY2xpX3ZlcnNpb246IF9jbGlWZXJzaW9uLFxuICAgICAgLi4uc2NoZW1hV2l0aG91dENsaVxuICAgIH0gPSBmYWtlU2NoZW1hLnByb3ZpZGVyU2NoZW1hO1xuICAgIG1vY2tSZWFkU2NoZW1hLm1vY2tSZXNvbHZlZFZhbHVlKHsgcHJvdmlkZXJTY2hlbWE6IHNjaGVtYVdpdGhvdXRDbGkgfSk7XG5cbiAgICBjb25zdCB0YXJnZXRWZXJzaW9uczogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgPSB7IHRlcnJhZm9ybTogXCI+PTEuNS43XCIgfTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWFrZXIgPSBuZXcgQ29uc3RydWN0c01ha2VyKG9wdGlvbnMpO1xuICAgIGF3YWl0IG1ha2VyLmdlbmVyYXRlKFtjb25zdHJhaW50XSk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50c0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHdvcmtkaXIsIFwiY29uc3RyYWludHMuanNvblwiKSwgXCJ1dGY4XCIpLFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnN0cmFpbnRzRmlsZS5jbGkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3QoY29uc3RyYWludHNGaWxlLnRhcmdldFZlcnNpb25zKS50b0VxdWFsKHRhcmdldFZlcnNpb25zKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBmb3JjZSByZWdlbmVyYXRpb24gd2hlbiB0YXJnZXRWZXJzaW9ucyBjaGFuZ2UgYmV0d2VlbiBydW5zXCIsIGFzeW5jICgpID0+IHtcbiAgICAvLyBUaGUgc3RhbXAgaXMgZGlhZ25vc3RpYy1vbmx5OiBwZXIgdGhlIEdldE9wdGlvbnMudGFyZ2V0VmVyc2lvbnMgZG9jLFxuICAgIC8vIHRhcmdldFZlcnNpb25zIG5ldmVyIGZpbHRlcnMgY29kZWdlbiAodGhlIGZ1bGwgc2NoZW1hIHN1cmZhY2UgaXNcbiAgICAvLyBhbHdheXMgZ2VuZXJhdGVkKSwgc28gZnJlc2huZXNzIG9ubHkgY29tcGFyZXMgdGhlIHByb3ZpZGVycyBtYXAgYW5kXG4gICAgLy8gdGhlIGNka3RmIHZlcnNpb24uXG4gICAgY29uc3Qgd29ya2RpciA9IHRtcChcInRhcmdldC12ZXJzaW9ucy1jaGFuZ2UudGVzdFwiKTtcbiAgICBjb25zdCBvcHRpb25zOiBHZXRPcHRpb25zID0ge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9uczogeyB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1ha2VyID0gbmV3IENvbnN0cnVjdHNNYWtlcihvcHRpb25zKTtcbiAgICBhd2FpdCBtYWtlci5nZW5lcmF0ZShbY29uc3RyYWludF0pO1xuXG4gICAgY29uc3QgbWFrZXIyID0gbmV3IENvbnN0cnVjdHNNYWtlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdGFyZ2V0VmVyc2lvbnM6IHsgdGVycmFmb3JtOiBcIj49MS4xMS4wXCIgfSxcbiAgICB9KTtcbiAgICBjb25zdCB0b0dlbmVyYXRlID0gYXdhaXQgbWFrZXIyLmZpbHRlckFscmVhZHlHZW5lcmF0ZWQoW2NvbnN0cmFpbnRdKTtcbiAgICBleHBlY3QodG9HZW5lcmF0ZSkudG9FcXVhbChbXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwidGFyZ2V0VmVyc2lvbnMgcmVhY2hpbmcgZ2VuZXJhdGVkIG1vZHVsZSBiaW5kaW5nc1wiLCAoKSA9PiB7XG4gIGNvbnN0IG1vZHVsZUNvbnN0cmFpbnQgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChcbiAgICBcInRlcnJhZm9ybS1hd3MtbW9kdWxlcy92cGMvYXdzQDMuMTkuMFwiLFxuICApO1xuXG4gIGNvbnN0IGVtaXR0ZWRTb3VyY2VzID0gKGRpcjogc3RyaW5nKTogc3RyaW5nW10gPT5cbiAgICBmcy5yZWFkZGlyU3luYyhkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KS5mbGF0TWFwKChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHBhdGguam9pbihkaXIsIGVudHJ5Lm5hbWUpO1xuICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHJldHVybiBlbWl0dGVkU291cmNlcyhmdWxsKTtcbiAgICAgIHJldHVybiBlbnRyeS5uYW1lLmVuZHNXaXRoKFwiLnRzXCIpID8gW2ZzLnJlYWRGaWxlU3luYyhmdWxsLCBcInV0ZjhcIildIDogW107XG4gICAgfSk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgbW9ja1JlYWRTY2hlbWEubW9ja1Jlc2V0KCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0LmZyb20oXG4gICAgICBtb2R1bGVDb25zdHJhaW50LFxuICAgICAgTGFuZ3VhZ2UuVFlQRVNDUklQVCxcbiAgICApIGFzIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldDtcbiAgICBtb2NrUmVhZFNjaGVtYS5tb2NrUmVzb2x2ZWRWYWx1ZSh7XG4gICAgICBtb2R1bGVTY2hlbWE6IHtcbiAgICAgICAgW3RhcmdldC5tb2R1bGVLZXldOiB7IG5hbWU6IHRhcmdldC5uYW1lLCBpbnB1dHM6IFtdLCBvdXRwdXRzOiBbXSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJsaW5rcyBhbiBPcGVuVG9mdS1vbmx5IHByb2plY3QncyBtb2R1bGVzIHRvIHRoZSBPcGVuVG9mdSByZWdpc3RyeVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgd29ya2RpciA9IHRtcChcInRhcmdldC12ZXJzaW9ucy1tb2R1bGUudGVzdFwiKTtcbiAgICBjb25zdCBtYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIoe1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiB3b3JrZGlyLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgICB0YXJnZXRWZXJzaW9uczogeyBvcGVudG9mdTogXCI+PTEuNi4wXCIgfSxcbiAgICB9KTtcblxuICAgIGF3YWl0IG1ha2VyLmdlbmVyYXRlKFttb2R1bGVDb25zdHJhaW50XSk7XG5cbiAgICBleHBlY3QoZW1pdHRlZFNvdXJjZXMod29ya2Rpcikuam9pbihcIlxcblwiKSkudG9Db250YWluKFxuICAgICAgXCJodHRwczovL3NlYXJjaC5vcGVudG9mdS5vcmcvbW9kdWxlL3RlcnJhZm9ybS1hd3MtbW9kdWxlcy92cGMvYXdzL3YzLjE5LjBcIixcbiAgICApO1xuICB9KTtcbn0pO1xuIl19
|