@cdktn/provider-schema 0.23.0-pre.36 → 0.23.0-pre.39
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/__tests__/provider-schema.test.d.ts.map +1 -0
- package/build/__tests__/provider-schema.test.js +180 -0
- package/build/cache.d.ts.map +1 -0
- package/build/cache.js +66 -0
- package/build/index.d.ts.map +1 -0
- package/{src → build}/index.js +1 -1
- package/build/provider-schema.d.ts.map +1 -0
- package/build/provider-schema.js +225 -0
- package/build/read.d.ts.map +1 -0
- package/build/read.js +47 -0
- package/build/util.d.ts.map +1 -0
- package/build/util.js +89 -0
- package/package.json +7 -7
- package/src/__tests__/provider-schema.test.d.ts.map +0 -1
- package/src/__tests__/provider-schema.test.js +0 -180
- package/src/cache.d.ts.map +0 -1
- package/src/cache.js +0 -66
- package/src/index.d.ts.map +0 -1
- package/src/provider-schema.d.ts.map +0 -1
- package/src/provider-schema.js +0 -225
- package/src/read.d.ts.map +0 -1
- package/src/read.js +0 -47
- package/src/util.d.ts.map +0 -1
- package/src/util.js +0 -89
- /package/{src → build}/__tests__/provider-schema.test.d.ts +0 -0
- /package/{src → build}/cache.d.ts +0 -0
- /package/{src → build}/index.d.ts +0 -0
- /package/{src → build}/provider-schema.d.ts +0 -0
- /package/{src → build}/read.d.ts +0 -0
- /package/{src → build}/util.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-schema.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/provider-schema.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) HashiCorp, Inc
|
|
3
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
const path = __importStar(require("path"));
|
|
32
|
+
const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
|
|
33
|
+
const commons_1 = require("@cdktn/commons");
|
|
34
|
+
const provider_schema_1 = require("../provider-schema");
|
|
35
|
+
function sanitizeJson(value) {
|
|
36
|
+
value["format_version"] = "STUBBED VERSION";
|
|
37
|
+
return (0, json_stable_stringify_1.default)(value, {
|
|
38
|
+
space: 2,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
describe("readSchema", () => {
|
|
42
|
+
it("generates a single provider schema", async () => {
|
|
43
|
+
const provider = new commons_1.TerraformProviderConstraint("hashicorp/null@3.1.0");
|
|
44
|
+
const target = new commons_1.ConstructsMakerProviderTarget(provider, commons_1.Language.TYPESCRIPT);
|
|
45
|
+
const result = await (0, provider_schema_1.readProviderSchema)(target);
|
|
46
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
47
|
+
}, 120000);
|
|
48
|
+
it("generates a single module schema", async () => {
|
|
49
|
+
const module = new commons_1.TerraformModuleConstraint("terraform-aws-modules/iam/aws//modules/iam-account@3.12.0");
|
|
50
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
51
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
52
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
53
|
+
}, 120000);
|
|
54
|
+
it("generates a more complex schema", async () => {
|
|
55
|
+
const module = new commons_1.TerraformModuleConstraint("terraform-aws-modules/eks/aws@7.0.1");
|
|
56
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
57
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
58
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
59
|
+
}, 120000);
|
|
60
|
+
it("generates a local module", async () => {
|
|
61
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
62
|
+
name: "local_module",
|
|
63
|
+
fqn: "local_module",
|
|
64
|
+
source: path.resolve(__dirname, "fixtures", "local-module"),
|
|
65
|
+
});
|
|
66
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
67
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
68
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
69
|
+
}, 120000);
|
|
70
|
+
it("generates a local module with inline comments in type constraints", async () => {
|
|
71
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
72
|
+
name: "local_module",
|
|
73
|
+
fqn: "local_module",
|
|
74
|
+
source: path.resolve(__dirname, "fixtures", "local-module-inline-comments"),
|
|
75
|
+
});
|
|
76
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
77
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
78
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
79
|
+
}, 120000);
|
|
80
|
+
it("generates a local json module", async () => {
|
|
81
|
+
const module = new commons_1.TerraformModuleConstraint({
|
|
82
|
+
name: "local_module",
|
|
83
|
+
fqn: "local_module",
|
|
84
|
+
source: path.resolve(__dirname, "fixtures", "local-json-module"),
|
|
85
|
+
});
|
|
86
|
+
const target = new commons_1.ConstructsMakerModuleTarget(module, commons_1.Language.TYPESCRIPT);
|
|
87
|
+
const result = await (0, provider_schema_1.readModuleSchema)(target);
|
|
88
|
+
expect(sanitizeJson(result)).toMatchSnapshot();
|
|
89
|
+
}, 120000);
|
|
90
|
+
});
|
|
91
|
+
describe("sanitizeProviderSchema", () => {
|
|
92
|
+
it("sanitizes a provider schema", () => {
|
|
93
|
+
const schema = {
|
|
94
|
+
format_version: "0.1",
|
|
95
|
+
provider_versions: {
|
|
96
|
+
"registry.terraform.io/hashicorp/null": "3.1.0",
|
|
97
|
+
},
|
|
98
|
+
provider_schemas: {
|
|
99
|
+
"registry.terraform.io/hashicorp/null": {
|
|
100
|
+
provider: {
|
|
101
|
+
version: 0,
|
|
102
|
+
block: {
|
|
103
|
+
attributes: {
|
|
104
|
+
version: {
|
|
105
|
+
type: "string",
|
|
106
|
+
required: true,
|
|
107
|
+
},
|
|
108
|
+
correct: {
|
|
109
|
+
type: ["list", "string"],
|
|
110
|
+
},
|
|
111
|
+
incorrect: {
|
|
112
|
+
type: ["list", "string", "list", "string"],
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
block_types: {
|
|
116
|
+
triggers: {
|
|
117
|
+
nesting_mode: "single",
|
|
118
|
+
block: {
|
|
119
|
+
attributes: {
|
|
120
|
+
correct: {
|
|
121
|
+
type: ["list", "string"],
|
|
122
|
+
},
|
|
123
|
+
incorrect: {
|
|
124
|
+
type: ["list", "string", "list", "string"],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
block_types: {},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
resource_schemas: {
|
|
134
|
+
null_resource: {
|
|
135
|
+
version: 0,
|
|
136
|
+
block: {
|
|
137
|
+
attributes: {
|
|
138
|
+
id: {
|
|
139
|
+
type: "string",
|
|
140
|
+
computed: true,
|
|
141
|
+
},
|
|
142
|
+
correct: {
|
|
143
|
+
type: ["list", "string"],
|
|
144
|
+
},
|
|
145
|
+
incorrect: {
|
|
146
|
+
type: ["list", "string", "list", "string"],
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
block_types: {
|
|
150
|
+
triggers: {
|
|
151
|
+
nesting_mode: "single",
|
|
152
|
+
block: {
|
|
153
|
+
attributes: {
|
|
154
|
+
triggers: {
|
|
155
|
+
type: "string",
|
|
156
|
+
optional: true,
|
|
157
|
+
},
|
|
158
|
+
correct: {
|
|
159
|
+
type: ["list", "string"],
|
|
160
|
+
},
|
|
161
|
+
incorrect: {
|
|
162
|
+
type: ["list", "string", "list", "string"],
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
block_types: {},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
data_source_schemas: {},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
const result = (0, provider_schema_1.sanitizeProviderSchema)(schema);
|
|
177
|
+
expect(result).toMatchSnapshot();
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2NoZW1hLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3Byb3ZpZGVyLXNjaGVtYS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLDJDQUE2QjtBQUM3QixrRkFBb0Q7QUFDcEQsNENBT3dCO0FBQ3hCLHdEQUk0QjtBQUU1QixTQUFTLFlBQVksQ0FBQyxLQUFVO0lBQzlCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzVDLE9BQU8sSUFBQSwrQkFBZSxFQUFDLEtBQUssRUFBRTtRQUM1QixLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUMxQixFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQ0FBMkIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUksdUNBQTZCLENBQzlDLFFBQVEsRUFDUixrQkFBUSxDQUFDLFVBQVUsQ0FDcEIsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxvQ0FBa0IsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRVgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksbUNBQXlCLENBQzFDLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQ0FBMkIsQ0FBQyxNQUFN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RixJQUFJLEVBQUUsUUFBUTt3Q0FDZCxRQUFRLEVBQUUsSUFBSTtxQ0FDZjtvQ0FDRCxPQUFPLEVBQUU7d0NBQ1AsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztxQ0FDekI7b0NBQ0QsU0FBUyxFQUFFO3dDQUNULElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBUTtxQ0FDbEQ7aUNBQ0Y7Z0NBQ0QsV0FBVyxFQUFFO29DQUNYLFFBQVEsRUFBRTt3Q0FDUixZQUFZLEVBQUUsUUFBUTt3Q0FDdEIsS0FBSyxFQUFFOzRDQUNMLFVBQVUsRUFBRTtnREFDVixRQUFRLEVBQUU7b0RBQ1IsSUFBSSxFQUFFLFFBQVE7b0RBQ2QsUUFBUSxFQUFFLElBQUk7aURBQ2Y7Z0RBQ0QsT0FBTyxFQUFFO29EQUNQLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7aURBQ3pCO2dEQUNELFNBQVMsRUFBRTtvREFDVCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQVE7aURBQ2xEOzZDQUNGOzRDQUNELFdBQVcsRUFBRSxFQUFFO3lDQUNoQjtxQ0FDRjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxtQkFBbUIsRUFBRSxFQUFFO2lCQUN4QjthQUNGO1NBQ0YsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLElBQUEsd0NBQXNCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgc3RhYmxlU3RyaW5naWZ5IGZyb20gXCJqc29uLXN0YWJsZS1zdHJpbmdpZnlcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludCxcbiAgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0LFxuICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldCxcbiAgTGFuZ3VhZ2UsXG4gIFByb3ZpZGVyU2NoZW1hLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7XG4gIHJlYWRNb2R1bGVTY2hlbWEsXG4gIHJlYWRQcm92aWRlclNjaGVtYSxcbiAgc2FuaXRpemVQcm92aWRlclNjaGVtYSxcbn0gZnJvbSBcIi4uL3Byb3ZpZGVyLXNjaGVtYVwiO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZUpzb24odmFsdWU6IGFueSkge1xuICB2YWx1ZVtcImZvcm1hdF92ZXJzaW9uXCJdID0gXCJTVFVCQkVEIFZFUlNJT05cIjtcbiAgcmV0dXJuIHN0YWJsZVN0cmluZ2lmeSh2YWx1ZSwge1xuICAgIHNwYWNlOiAyLFxuICB9KTtcbn1cblxuZGVzY3JpYmUoXCJyZWFkU2NoZW1hXCIsICgpID0+IHtcbiAgaXQoXCJnZW5lcmF0ZXMgYSBzaW5nbGUgcHJvdmlkZXIgc2NoZW1hXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBUZXJyYWZvcm1Qcm92aWRlckNvbnN0cmFpbnQoXCJoYXNoaWNvcnAvbnVsbEAzLjEuMFwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyUHJvdmlkZXJUYXJnZXQoXG4gICAgICBwcm92aWRlcixcbiAgICAgIExhbmd1YWdlLlRZUEVTQ1JJUFQsXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkUHJvdmlkZXJTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgc2luZ2xlIG1vZHVsZSBzY2hlbWFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KFxuICAgICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvaWFtL2F3cy8vbW9kdWxlcy9pYW0tYWNjb3VudEAzLjEyLjBcIixcbiAgICApO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIG1vcmUgY29tcGxleCBzY2hlbWFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KFxuICAgICAgXCJ0ZXJyYWZvcm0tYXdzLW1vZHVsZXMvZWtzL2F3c0A3LjAuMVwiLFxuICAgICk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgbG9jYWwgbW9kdWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCh7XG4gICAgICBuYW1lOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgZnFuOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgc291cmNlOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcImZpeHR1cmVzXCIsIFwibG9jYWwtbW9kdWxlXCIpLFxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQobW9kdWxlLCBMYW5ndWFnZS5UWVBFU0NSSVBUKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkTW9kdWxlU2NoZW1hKHRhcmdldCk7XG4gICAgZXhwZWN0KHNhbml0aXplSnNvbihyZXN1bHQpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSwgMTIwMDAwKTtcblxuICBpdChcImdlbmVyYXRlcyBhIGxvY2FsIG1vZHVsZSB3aXRoIGlubGluZSBjb21tZW50cyBpbiB0eXBlIGNvbnN0cmFpbnRzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCh7XG4gICAgICBuYW1lOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgZnFuOiBcImxvY2FsX21vZHVsZVwiLFxuICAgICAgc291cmNlOiBwYXRoLnJlc29sdmUoXG4gICAgICAgIF9fZGlybmFtZSxcbiAgICAgICAgXCJmaXh0dXJlc1wiLFxuICAgICAgICBcImxvY2FsLW1vZHVsZS1pbmxpbmUtY29tbWVudHNcIixcbiAgICAgICksXG4gICAgfSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldChtb2R1bGUsIExhbmd1YWdlLlRZUEVTQ1JJUFQpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlYWRNb2R1bGVTY2hlbWEodGFyZ2V0KTtcbiAgICBleHBlY3Qoc2FuaXRpemVKc29uKHJlc3VsdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9LCAxMjAwMDApO1xuXG4gIGl0KFwiZ2VuZXJhdGVzIGEgbG9jYWwganNvbiBtb2R1bGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KHtcbiAgICAgIG5hbWU6IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBmcW46IFwibG9jYWxfbW9kdWxlXCIsXG4gICAgICBzb3VyY2U6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwiZml4dHVyZXNcIiwgXCJsb2NhbC1qc29uLW1vZHVsZVwiKSxcbiAgICB9KTtcbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgQ29uc3RydWN0c01ha2VyTW9kdWxlVGFyZ2V0KG1vZHVsZSwgTGFuZ3VhZ2UuVFlQRVNDUklQVCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQpO1xuICAgIGV4cGVjdChzYW5pdGl6ZUpzb24ocmVzdWx0KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0sIDEyMDAwMCk7XG59KTtcblxuZGVzY3JpYmUoXCJzYW5pdGl6ZVByb3ZpZGVyU2NoZW1hXCIsICgpID0+IHtcbiAgaXQoXCJzYW5pdGl6ZXMgYSBwcm92aWRlciBzY2hlbWFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYTogUHJvdmlkZXJTY2hlbWEgPSB7XG4gICAgICBmb3JtYXRfdmVyc2lvbjogXCIwLjFcIiBhcyBjb25zdCxcbiAgICAgIHByb3ZpZGVyX3ZlcnNpb25zOiB7XG4gICAgICAgIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9udWxsXCI6IFwiMy4xLjBcIixcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcl9zY2hlbWFzOiB7XG4gICAgICAgIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9udWxsXCI6IHtcbiAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgdmVyc2lvbjogMCxcbiAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXSBhcyBhbnksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHtcbiAgICAgICAgICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgICAgICAgICAgbmVzdGluZ19tb2RlOiBcInNpbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgYmxvY2s6IHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBpbmNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFtcImxpc3RcIiwgXCJzdHJpbmdcIiwgXCJsaXN0XCIsIFwic3RyaW5nXCJdIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlczoge30sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzb3VyY2Vfc2NoZW1hczoge1xuICAgICAgICAgICAgbnVsbF9yZXNvdXJjZToge1xuICAgICAgICAgICAgICB2ZXJzaW9uOiAwLFxuICAgICAgICAgICAgICBibG9jazoge1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpbmNvcnJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogW1wibGlzdFwiLCBcInN0cmluZ1wiLCBcImxpc3RcIiwgXCJzdHJpbmdcIl0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVzOiB7XG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgICAgICAgICAgICBuZXN0aW5nX21vZGU6IFwic2luZ2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY29ycmVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRhdGFfc291cmNlX3NjaGVtYXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gc2FuaXRpemVQcm92aWRlclNjaGVtYShzY2hlbWEpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAkB,MAAM,gBAAgB,CAAC;AAYvE,wBAAgB,YAAY,CAAC,CAAC,SAAS,qBAAqB,EAAE,CAAC,EAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CA+B1B"}
|
package/build/cache.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) HashiCorp, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.cachedAccess = void 0;
|
|
31
|
+
const commons_1 = require("@cdktn/commons");
|
|
32
|
+
const fs = __importStar(require("fs-extra"));
|
|
33
|
+
const path = __importStar(require("path"));
|
|
34
|
+
// We keep this very simple since the caching feature is experimental
|
|
35
|
+
// we might need to do housekeeping / include terraform / cdktf version in the future
|
|
36
|
+
function cacheKey(input) {
|
|
37
|
+
return `${encodeURIComponent(input.fqn)}@${encodeURIComponent(input.version || "")}`;
|
|
38
|
+
}
|
|
39
|
+
function cachedAccess(producer, cacheDir) {
|
|
40
|
+
const cacheEnabled = typeof cacheDir === "string" && cacheDir.length > 0;
|
|
41
|
+
if (cacheEnabled && !fs.lstatSync(cacheDir).isDirectory()) {
|
|
42
|
+
throw commons_1.Errors.Usage(`Provider Schema Cache directory '${cacheDir}' is not a directory`);
|
|
43
|
+
}
|
|
44
|
+
if (!cacheEnabled) {
|
|
45
|
+
commons_1.logger.debug(`Provider Schema Cache disabled`);
|
|
46
|
+
return (input) => {
|
|
47
|
+
return producer(input);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
commons_1.logger.debug(`Provider Schema Cache enabled, caching at ${cacheDir}`);
|
|
51
|
+
return async (input) => {
|
|
52
|
+
const key = cacheKey(input);
|
|
53
|
+
const cachePath = path.join(cacheDir, `${key}.json`);
|
|
54
|
+
if (fs.existsSync(cachePath)) {
|
|
55
|
+
commons_1.logger.debug(`Cache hit for ${key}`);
|
|
56
|
+
return JSON.parse(await fs.readFile(cachePath, "utf-8"));
|
|
57
|
+
}
|
|
58
|
+
commons_1.logger.debug(`Cache miss for ${key}, generating schema`);
|
|
59
|
+
const result = await producer(input);
|
|
60
|
+
await fs.writeFile(cachePath, JSON.stringify(result));
|
|
61
|
+
commons_1.logger.debug(`Write cache for ${key}`);
|
|
62
|
+
return result;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
exports.cachedAccess = cachedAccess;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw0Q0FBdUU7QUFDdkUsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUU3QixxRUFBcUU7QUFDckUscUZBQXFGO0FBQ3JGLFNBQVMsUUFBUSxDQUFDLEtBQTRCO0lBQzVDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksa0JBQWtCLENBQzNELEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUNwQixFQUFFLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUMxQixRQUFrQyxFQUNsQyxRQUF3QjtJQUV4QixNQUFNLFlBQVksR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFekUsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQWtCLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLG9DQUFvQyxRQUFRLHNCQUFzQixDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdCLGdCQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFNLENBQUM7UUFDaEUsQ0FBQztRQUNELGdCQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLENBQUM7UUFFekQsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWxDRCxvQ0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdHNNYWtlclRhcmdldCwgbG9nZ2VyLCBFcnJvcnMgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG4vLyBXZSBrZWVwIHRoaXMgdmVyeSBzaW1wbGUgc2luY2UgdGhlIGNhY2hpbmcgZmVhdHVyZSBpcyBleHBlcmltZW50YWxcbi8vIHdlIG1pZ2h0IG5lZWQgdG8gZG8gaG91c2VrZWVwaW5nIC8gaW5jbHVkZSB0ZXJyYWZvcm0gLyBjZGt0ZiB2ZXJzaW9uIGluIHRoZSBmdXR1cmVcbmZ1bmN0aW9uIGNhY2hlS2V5KGlucHV0OiBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGlucHV0LmZxbil9QCR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgIGlucHV0LnZlcnNpb24gfHwgXCJcIixcbiAgKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVkQWNjZXNzPEkgZXh0ZW5kcyBDb25zdHJ1Y3RzTWFrZXJUYXJnZXQsIE8+KFxuICBwcm9kdWNlcjogKGlucHV0OiBJKSA9PiBQcm9taXNlPE8+LFxuICBjYWNoZURpcj86IHN0cmluZyB8IG51bGwsXG4pOiAoaW5wdXQ6IEkpID0+IFByb21pc2U8Tz4ge1xuICBjb25zdCBjYWNoZUVuYWJsZWQgPSB0eXBlb2YgY2FjaGVEaXIgPT09IFwic3RyaW5nXCIgJiYgY2FjaGVEaXIubGVuZ3RoID4gMDtcblxuICBpZiAoY2FjaGVFbmFibGVkICYmICFmcy5sc3RhdFN5bmMoY2FjaGVEaXIgYXMgc3RyaW5nKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgYFByb3ZpZGVyIFNjaGVtYSBDYWNoZSBkaXJlY3RvcnkgJyR7Y2FjaGVEaXJ9JyBpcyBub3QgYSBkaXJlY3RvcnlgLFxuICAgICk7XG4gIH1cblxuICBpZiAoIWNhY2hlRW5hYmxlZCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUHJvdmlkZXIgU2NoZW1hIENhY2hlIGRpc2FibGVkYCk7XG4gICAgcmV0dXJuIChpbnB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHByb2R1Y2VyKGlucHV0KTtcbiAgICB9O1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKGBQcm92aWRlciBTY2hlbWEgQ2FjaGUgZW5hYmxlZCwgY2FjaGluZyBhdCAke2NhY2hlRGlyfWApO1xuICByZXR1cm4gYXN5bmMgKGlucHV0KSA9PiB7XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkoaW5wdXQpO1xuICAgIGNvbnN0IGNhY2hlUGF0aCA9IHBhdGguam9pbihjYWNoZURpciwgYCR7a2V5fS5qc29uYCk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FjaGVQYXRoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBDYWNoZSBoaXQgZm9yICR7a2V5fWApO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoY2FjaGVQYXRoLCBcInV0Zi04XCIpKSBhcyBPO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYENhY2hlIG1pc3MgZm9yICR7a2V5fSwgZ2VuZXJhdGluZyBzY2hlbWFgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb2R1Y2VyKGlucHV0KTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoY2FjaGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICBsb2dnZXIuZGVidWcoYFdyaXRlIGNhY2hlIGZvciAke2tleX1gKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/{src → build}/index.js
RENAMED
|
@@ -9,4 +9,4 @@ var read_1 = require("./read");
|
|
|
9
9
|
Object.defineProperty(exports, "readSchema", { enumerable: true, get: function () { return read_1.readSchema; } });
|
|
10
10
|
var provider_schema_1 = require("./provider-schema");
|
|
11
11
|
Object.defineProperty(exports, "parseFQPN", { enumerable: true, get: function () { return provider_schema_1.parseFQPN; } });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsK0JBQW9DO0FBQTNCLGtHQUFBLFVBQVUsT0FBQTtBQUNuQixxREFBa0U7QUFBbkQsNEdBQUEsU0FBUyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5leHBvcnQgeyByZWFkU2NoZW1hIH0gZnJvbSBcIi4vcmVhZFwiO1xuZXhwb3J0IHsgRlFQTiwgcGFyc2VGUVBOLCBQcm92aWRlck5hbWUgfSBmcm9tIFwiLi9wcm92aWRlci1zY2hlbWFcIjtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-schema.d.ts","sourceRoot":"","sources":["../src/provider-schema.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,2BAA2B,EAC3B,6BAA6B,EAG7B,YAAY,EACZ,cAAc,EAMf,MAAM,gBAAgB,CAAC;AAIxB;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,4BAA4B,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC;AAE/D,eAAO,MAAM,SAAS,MAAO,IAAI;cAMnB,gBAAgB;eACf,iBAAiB;UACtB,YAAY;CAErB,CAAC;AAkIF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC;IACnD,SAAS,EAAE;QACT,kBAAkB,CAAC,EAAE;YACnB,CAAC,IAAI,EAAE,MAAM,GAAG;gBAAE,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SACvD,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CACnE;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,6BAA6B,2BAuCtC;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAsC7E;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,yCAqCzE"}
|
|
@@ -0,0 +1,225 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.readModuleSchema = exports.sanitizeProviderSchema = exports.readProviderSchema = exports.parseFQPN = void 0;
|
|
27
|
+
// Copyright (c) HashiCorp, Inc
|
|
28
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
29
|
+
const fs = __importStar(require("fs-extra"));
|
|
30
|
+
const path = __importStar(require("path"));
|
|
31
|
+
const hcl2json_1 = require("@cdktn/hcl2json");
|
|
32
|
+
const commons_1 = require("@cdktn/commons");
|
|
33
|
+
const terraformBinaryName = process.env.TERRAFORM_BINARY_NAME || "terraform";
|
|
34
|
+
const parseFQPN = (f) => {
|
|
35
|
+
const [hostname, namespace, name] = f.split("/");
|
|
36
|
+
if (!name) {
|
|
37
|
+
throw new Error(`can't handle ${f}`);
|
|
38
|
+
}
|
|
39
|
+
return { hostname, namespace, name };
|
|
40
|
+
};
|
|
41
|
+
exports.parseFQPN = parseFQPN;
|
|
42
|
+
const unwrapIfArray = (item) => Array.isArray(item) ? item[0] : item;
|
|
43
|
+
const transformVariables = (variables) => {
|
|
44
|
+
const result = [];
|
|
45
|
+
if (!variables)
|
|
46
|
+
return result;
|
|
47
|
+
for (const name of Object.keys(variables)) {
|
|
48
|
+
const variable = unwrapIfArray(variables[name]);
|
|
49
|
+
let variableType;
|
|
50
|
+
if (
|
|
51
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
52
|
+
variable.hasOwnProperty("type") == false &&
|
|
53
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
54
|
+
variable.hasOwnProperty("default") == true) {
|
|
55
|
+
switch (typeof variable["default"]) {
|
|
56
|
+
case "boolean":
|
|
57
|
+
variableType = "bool";
|
|
58
|
+
break;
|
|
59
|
+
case "number":
|
|
60
|
+
variableType = "number";
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
variableType = "any";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const rawVariableType = variable["type"];
|
|
68
|
+
if (typeof rawVariableType === "string" &&
|
|
69
|
+
rawVariableType.startsWith("${") &&
|
|
70
|
+
rawVariableType.endsWith("}") &&
|
|
71
|
+
!rawVariableType.includes("\n")) {
|
|
72
|
+
variableType = rawVariableType.slice(2, -1);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
variableType = "any";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const item = {
|
|
79
|
+
name,
|
|
80
|
+
type: variableType,
|
|
81
|
+
description: variable["description"],
|
|
82
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
83
|
+
required: variable.hasOwnProperty("default") == false,
|
|
84
|
+
};
|
|
85
|
+
if (!item.required) {
|
|
86
|
+
item["default"] = variable["default"];
|
|
87
|
+
}
|
|
88
|
+
result.push(item);
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
};
|
|
92
|
+
const transformOutputs = (outputs) => {
|
|
93
|
+
const result = [];
|
|
94
|
+
if (outputs) {
|
|
95
|
+
for (const name of Object.keys(outputs)) {
|
|
96
|
+
const output = unwrapIfArray(outputs[name]);
|
|
97
|
+
const item = {
|
|
98
|
+
name,
|
|
99
|
+
description: output["description"],
|
|
100
|
+
};
|
|
101
|
+
result.push(item);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
};
|
|
106
|
+
const harvestModuleSchema = async (workingDirectory, modules) => {
|
|
107
|
+
const fileName = path.join(workingDirectory, ".terraform", "modules", "modules.json");
|
|
108
|
+
const result = {};
|
|
109
|
+
if (!fs.existsSync(fileName)) {
|
|
110
|
+
throw new Error(`Modules were not generated properly - couldn't find ${fileName}`);
|
|
111
|
+
}
|
|
112
|
+
const moduleIndex = JSON.parse(fs.readFileSync(fileName, "utf-8"));
|
|
113
|
+
for (const mod of modules) {
|
|
114
|
+
const m = moduleIndex.Modules.find((other) => mod === other.Key);
|
|
115
|
+
if (!m) {
|
|
116
|
+
throw new Error(`Couldn't find ${m}`);
|
|
117
|
+
}
|
|
118
|
+
const parsed = await (0, hcl2json_1.convertFiles)(path.join(workingDirectory, m.Dir));
|
|
119
|
+
if (!parsed) {
|
|
120
|
+
throw new Error(`Modules were not generated properly - couldn't parse ${m.Dir}`);
|
|
121
|
+
}
|
|
122
|
+
const schema = {
|
|
123
|
+
inputs: transformVariables(parsed.variable),
|
|
124
|
+
outputs: transformOutputs(parsed.output),
|
|
125
|
+
name: mod,
|
|
126
|
+
};
|
|
127
|
+
result[mod] = schema;
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
};
|
|
131
|
+
async function readProviderSchema(target) {
|
|
132
|
+
const config = {
|
|
133
|
+
provider: {},
|
|
134
|
+
terraform: {
|
|
135
|
+
required_providers: {},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
config.provider[target.name] = {};
|
|
139
|
+
config.terraform.required_providers[target.name] = {
|
|
140
|
+
version: target.version,
|
|
141
|
+
source: target.source,
|
|
142
|
+
};
|
|
143
|
+
let providerSchema = { format_version: "0.1" };
|
|
144
|
+
await (0, commons_1.withTempDir)("fetchProviderSchema", async () => {
|
|
145
|
+
const outdir = process.cwd();
|
|
146
|
+
const filePath = path.join(outdir, "main.tf.json");
|
|
147
|
+
await fs.writeFile(filePath, JSON.stringify(config));
|
|
148
|
+
await (0, commons_1.exec)(terraformBinaryName, ["init"], { cwd: outdir });
|
|
149
|
+
providerSchema = JSON.parse(await (0, commons_1.exec)(terraformBinaryName, ["providers", "schema", "-json"], {
|
|
150
|
+
cwd: outdir,
|
|
151
|
+
}));
|
|
152
|
+
const versionSchema = JSON.parse(await (0, commons_1.exec)(terraformBinaryName, ["version", "-json"], {
|
|
153
|
+
cwd: outdir,
|
|
154
|
+
}));
|
|
155
|
+
providerSchema.provider_versions = versionSchema.provider_selections;
|
|
156
|
+
});
|
|
157
|
+
return sanitizeProviderSchema(providerSchema);
|
|
158
|
+
}
|
|
159
|
+
exports.readProviderSchema = readProviderSchema;
|
|
160
|
+
// The providers have some potential bugs that we want to pro-actively
|
|
161
|
+
// fix here so that the rest of the code can assume a consistent schema.
|
|
162
|
+
function sanitizeProviderSchema(schema) {
|
|
163
|
+
// Mainly some attributes are "doubled", e.g. ["list", "string", "list", "string"]
|
|
164
|
+
// instead of ["list", "string"]
|
|
165
|
+
function attributeDoublingFix(attribute) {
|
|
166
|
+
if ((0, commons_1.isNestedTypeAttribute)(attribute) || !Array.isArray(attribute.type)) {
|
|
167
|
+
return attribute;
|
|
168
|
+
}
|
|
169
|
+
const type = attribute.type.length === 2
|
|
170
|
+
? attribute.type
|
|
171
|
+
: attribute.type.slice(0, 2); // The types tell us this can't happen, reality begs to differ
|
|
172
|
+
attribute.type = type;
|
|
173
|
+
return attribute;
|
|
174
|
+
}
|
|
175
|
+
// Mutates block with the fix
|
|
176
|
+
function sanitizeBlock(block) {
|
|
177
|
+
Object.values(block.attributes || {}).forEach(attributeDoublingFix);
|
|
178
|
+
Object.values(block.block_types || {}).forEach((blockType) => {
|
|
179
|
+
sanitizeBlock(blockType.block);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
Object.values(schema.provider_schemas || {}).forEach((provider) => {
|
|
183
|
+
const entities = [
|
|
184
|
+
provider.provider,
|
|
185
|
+
...Object.values(provider.resource_schemas || {}),
|
|
186
|
+
...Object.values(provider.data_source_schemas || {}),
|
|
187
|
+
];
|
|
188
|
+
entities.forEach((entity) => {
|
|
189
|
+
sanitizeBlock(entity.block);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
return schema;
|
|
193
|
+
}
|
|
194
|
+
exports.sanitizeProviderSchema = sanitizeProviderSchema;
|
|
195
|
+
async function readModuleSchema(target) {
|
|
196
|
+
let moduleSchema = {};
|
|
197
|
+
await (0, commons_1.withTempDir)("fetchSchema", async () => {
|
|
198
|
+
const config = {
|
|
199
|
+
terraform: {},
|
|
200
|
+
};
|
|
201
|
+
if (!config.module)
|
|
202
|
+
config.module = {};
|
|
203
|
+
let source = target.source;
|
|
204
|
+
const localSource = target.constraint
|
|
205
|
+
.localSourceAbsolutePath;
|
|
206
|
+
if (localSource) {
|
|
207
|
+
// create relative path to module in the user project
|
|
208
|
+
source = path.relative(process.cwd(), localSource);
|
|
209
|
+
}
|
|
210
|
+
config.module[target.moduleKey] = { source: source };
|
|
211
|
+
if (target.version) {
|
|
212
|
+
config.module[target.moduleKey]["version"] = target.version;
|
|
213
|
+
}
|
|
214
|
+
const outdir = process.cwd();
|
|
215
|
+
const filePath = path.join(outdir, "main.tf.json");
|
|
216
|
+
await fs.writeFile(filePath, JSON.stringify(config));
|
|
217
|
+
await (0, commons_1.exec)(terraformBinaryName, ["get"], { cwd: outdir });
|
|
218
|
+
if (config.module) {
|
|
219
|
+
moduleSchema = await harvestModuleSchema(outdir, Object.keys(config.module));
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
return moduleSchema;
|
|
223
|
+
}
|
|
224
|
+
exports.readModuleSchema = readModuleSchema;
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb3ZpZGVyLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUU3Qiw4Q0FBK0M7QUFDL0MsNENBZXdCO0FBRXhCLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7QUFXdEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFPLEVBQUUsRUFBRTtJQUNuQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFJakMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVZXLFFBQUEsU0FBUyxhQVVwQjtBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUksSUFBYSxFQUFLLEVBQUUsQ0FDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFdkMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQWMsRUFBRSxFQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUUzQixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRTlCLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENB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R0FBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVyRCxNQUFNLElBQUEsY0FBSSxFQUFDLG1CQUFtQixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixZQUFZLEdBQUcsTUFBTSxtQkFBbUIsQ0FDdEMsTUFBTSxFQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUMzQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQXJDRCw0Q0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGNvbnZlcnRGaWxlcyB9IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQXR0cmlidXRlVHlwZSxcbiAgQmxvY2ssXG4gIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCxcbiAgQ29uc3RydWN0c01ha2VyUHJvdmlkZXJUYXJnZXQsXG4gIElucHV0LFxuICBNb2R1bGVJbmRleCxcbiAgTW9kdWxlU2NoZW1hLFxuICBQcm92aWRlclNjaGVtYSxcbiAgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCxcbiAgVmVyc2lvblNjaGVtYSxcbiAgZXhlYyxcbiAgaXNOZXN0ZWRUeXBlQXR0cmlidXRlLFxuICB3aXRoVGVtcERpcixcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5cbmNvbnN0IHRlcnJhZm9ybUJpbmFyeU5hbWUgPSBwcm9jZXNzLmVudi5URVJSQUZPUk1fQklOQVJZX05BTUUgfHwgXCJ0ZXJyYWZvcm1cIjtcblxuLyoqXG4gKiBGdWxseSBRdWFsaWZpZWQgcHJvdmlkZXIgbmFtZSBpbiB0aGUgZm9ybWF0OlxuICogbGlrZSBlLmcuIHJlZ2lzdHJ5LnRlcnJhZm9ybS5pby9oYXNoaWNvcnAvYXdzXG4gKi9cbmV4cG9ydCB0eXBlIEZRUE4gPSBzdHJpbmcgJiB7IF9fdHlwZTogXCJGdWxseVF1YWxpZmllZFByb3ZpZGVyTmFtZVwiIH07XG5leHBvcnQgdHlwZSBQcm92aWRlckhvc3RuYW1lID0gc3RyaW5nICYgeyBfX3R5cGU6IFwiUHJvdmlkZXJIb3N0bmFtZVwiIH07XG5leHBvcnQgdHlwZSBQcm92aWRlck5hbWVzcGFjZSA9IHN0cmluZyAmIHsgX190eXBlOiBcIlByb3ZpZGVyTmFtZXNwYWNlXCIgfTtcbmV4cG9ydCB0eXBlIFByb3ZpZGVyTmFtZSA9IHN0cmluZyAmIHsgX190eXBlOiBcIlByb3ZpZGVyTmFtZVwiIH07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUZRUE4gPSAoZjogRlFQTikgPT4ge1xuICBjb25zdCBbaG9zdG5hbWUsIG5hbWVzcGFjZSwgbmFtZV0gPSBmLnNwbGl0KFwiL1wiKTtcbiAgaWYgKCFuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjYW4ndCBoYW5kbGUgJHtmfWApO1xuICB9XG4gIHJldHVybiB7IGhvc3RuYW1lLCBuYW1lc3BhY2UsIG5hbWUgfSBhcyB7XG4gICAgaG9zdG5hbWU6IFByb3ZpZGVySG9zdG5hbWU7XG4gICAgbmFtZXNwYWNlOiBQcm92aWRlck5hbWVzcGFjZTtcbiAgICBuYW1lOiBQcm92aWRlck5hbWU7XG4gIH07XG59O1xuXG5jb25zdCB1bndyYXBJZkFycmF5ID0gPFQ+KGl0ZW06IFQgfCBUW10pOiBUID0+XG4gIEFycmF5LmlzQXJyYXkoaXRlbSkgPyBpdGVtWzBdIDogaXRlbTtcblxuY29uc3QgdHJhbnNmb3JtVmFyaWFibGVzID0gKHZhcmlhYmxlczogYW55KSA9PiB7XG4gIGNvbnN0IHJlc3VsdDogSW5wdXRbXSA9IFtdO1xuXG4gIGlmICghdmFyaWFibGVzKSByZXR1cm4gcmVzdWx0O1xuXG4gIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyh2YXJpYWJsZXMpKSB7XG4gICAgY29uc3QgdmFyaWFibGUgPSB1bndyYXBJZkFycmF5KHZhcmlhYmxlc1tuYW1lXSk7XG4gICAgbGV0IHZhcmlhYmxlVHlwZTogc3RyaW5nO1xuXG4gICAgaWYgKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgdmFyaWFibGUuaGFzT3duUHJvcGVydHkoXCJ0eXBlXCIpID09IGZhbHNlICYmXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICB2YXJpYWJsZS5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRcIikgPT0gdHJ1ZVxuICAgICkge1xuICAgICAgc3dpdGNoICh0eXBlb2YgdmFyaWFibGVbXCJkZWZhdWx0XCJdKSB7XG4gICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgdmFyaWFibGVUeXBlID0gXCJib29sXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICB2YXJpYWJsZVR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IFwiYW55XCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJhd1ZhcmlhYmxlVHlwZSA9IHZhcmlhYmxlW1widHlwZVwiXTtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHJhd1ZhcmlhYmxlVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICByYXdWYXJpYWJsZVR5cGUuc3RhcnRzV2l0aChcIiR7XCIpICYmXG4gICAgICAgIHJhd1ZhcmlhYmxlVHlwZS5lbmRzV2l0aChcIn1cIikgJiZcbiAgICAgICAgIXJhd1ZhcmlhYmxlVHlwZS5pbmNsdWRlcyhcIlxcblwiKVxuICAgICAgKSB7XG4gICAgICAgIHZhcmlhYmxlVHlwZSA9IHJhd1ZhcmlhYmxlVHlwZS5zbGljZSgyLCAtMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXJpYWJsZVR5cGUgPSBcImFueVwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGl0ZW06IElucHV0ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHR5cGU6IHZhcmlhYmxlVHlwZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB2YXJpYWJsZVtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgcmVxdWlyZWQ6IHZhcmlhYmxlLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFwiKSA9PSBmYWxzZSxcbiAgICB9O1xuXG4gICAgaWYgKCFpdGVtLnJlcXVpcmVkKSB7XG4gICAgICBpdGVtW1wiZGVmYXVsdFwiXSA9IHZhcmlhYmxlW1wiZGVmYXVsdFwiXTtcbiAgICB9XG5cbiAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0cmFuc2Zvcm1PdXRwdXRzID0gKG91dHB1dHM6IGFueSkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICBpZiAob3V0cHV0cykge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhvdXRwdXRzKSkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gdW53cmFwSWZBcnJheShvdXRwdXRzW25hbWVdKTtcblxuICAgICAgY29uc3QgaXRlbTogYW55ID0ge1xuICAgICAgICBuYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3V0cHV0W1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9O1xuXG4gICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgaGFydmVzdE1vZHVsZVNjaGVtYSA9IGFzeW5jIChcbiAgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nLFxuICBtb2R1bGVzOiBzdHJpbmdbXSxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4gPT4ge1xuICBjb25zdCBmaWxlTmFtZSA9IHBhdGguam9pbihcbiAgICB3b3JraW5nRGlyZWN0b3J5LFxuICAgIFwiLnRlcnJhZm9ybVwiLFxuICAgIFwibW9kdWxlc1wiLFxuICAgIFwibW9kdWxlcy5qc29uXCIsXG4gICk7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTW9kdWxlcyB3ZXJlIG5vdCBnZW5lcmF0ZWQgcHJvcGVybHkgLSBjb3VsZG4ndCBmaW5kICR7ZmlsZU5hbWV9YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlSW5kZXggPSBKU09OLnBhcnNlKFxuICAgIGZzLnJlYWRGaWxlU3luYyhmaWxlTmFtZSwgXCJ1dGYtOFwiKSxcbiAgKSBhcyBNb2R1bGVJbmRleDtcblxuICBmb3IgKGNvbnN0IG1vZCBvZiBtb2R1bGVzKSB7XG4gICAgY29uc3QgbSA9IG1vZHVsZUluZGV4Lk1vZHVsZXMuZmluZCgob3RoZXIpID0+IG1vZCA9PT0gb3RoZXIuS2V5KTtcblxuICAgIGlmICghbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kICR7bX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBjb252ZXJ0RmlsZXMocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnksIG0uRGlyKSk7XG5cbiAgICBpZiAoIXBhcnNlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTW9kdWxlcyB3ZXJlIG5vdCBnZW5lcmF0ZWQgcHJvcGVybHkgLSBjb3VsZG4ndCBwYXJzZSAke20uRGlyfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYTogTW9kdWxlU2NoZW1hID0ge1xuICAgICAgaW5wdXRzOiB0cmFuc2Zvcm1WYXJpYWJsZXMocGFyc2VkLnZhcmlhYmxlKSxcbiAgICAgIG91dHB1dHM6IHRyYW5zZm9ybU91dHB1dHMocGFyc2VkLm91dHB1dCksXG4gICAgICBuYW1lOiBtb2QsXG4gICAgfTtcblxuICAgIHJlc3VsdFttb2RdID0gc2NoZW1hO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtQ29uZmlnIHtcbiAgcHJvdmlkZXI/OiB7IFtuYW1lOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG4gIHRlcnJhZm9ybToge1xuICAgIHJlcXVpcmVkX3Byb3ZpZGVycz86IHtcbiAgICAgIFtuYW1lOiBzdHJpbmddOiB7IHNvdXJjZT86IHN0cmluZzsgdmVyc2lvbj86IHN0cmluZyB9O1xuICAgIH07XG4gIH07XG4gIG1vZHVsZT86IHsgW25hbWU6IHN0cmluZ106IHsgc291cmNlOiBzdHJpbmc7IHZlcnNpb24/OiBzdHJpbmcgfSB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFByb3ZpZGVyU2NoZW1hKFxuICB0YXJnZXQ6IENvbnN0cnVjdHNNYWtlclByb3ZpZGVyVGFyZ2V0LFxuKSB7XG4gIGNvbnN0IGNvbmZpZzogVGVycmFmb3JtQ29uZmlnID0ge1xuICAgIHByb3ZpZGVyOiB7fSxcbiAgICB0ZXJyYWZvcm06IHtcbiAgICAgIHJlcXVpcmVkX3Byb3ZpZGVyczoge30sXG4gICAgfSxcbiAgfTtcblxuICBjb25maWcucHJvdmlkZXIhW3RhcmdldC5uYW1lXSA9IHt9O1xuICBjb25maWcudGVycmFmb3JtLnJlcXVpcmVkX3Byb3ZpZGVycyFbdGFyZ2V0Lm5hbWVdID0ge1xuICAgIHZlcnNpb246IHRhcmdldC52ZXJzaW9uLFxuICAgIHNvdXJjZTogdGFyZ2V0LnNvdXJjZSxcbiAgfTtcblxuICBsZXQgcHJvdmlkZXJTY2hlbWE6IFByb3ZpZGVyU2NoZW1hID0geyBmb3JtYXRfdmVyc2lvbjogXCIwLjFcIiB9O1xuXG4gIGF3YWl0IHdpdGhUZW1wRGlyKFwiZmV0Y2hQcm92aWRlclNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihvdXRkaXIsIFwibWFpbi50Zi5qc29uXCIpO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoY29uZmlnKSk7XG5cbiAgICBhd2FpdCBleGVjKHRlcnJhZm9ybUJpbmFyeU5hbWUsIFtcImluaXRcIl0sIHsgY3dkOiBvdXRkaXIgfSk7XG4gICAgcHJvdmlkZXJTY2hlbWEgPSBKU09OLnBhcnNlKFxuICAgICAgYXdhaXQgZXhlYyh0ZXJyYWZvcm1CaW5hcnlOYW1lLCBbXCJwcm92aWRlcnNcIiwgXCJzY2hlbWFcIiwgXCItanNvblwiXSwge1xuICAgICAgICBjd2Q6IG91dGRpcixcbiAgICAgIH0pLFxuICAgICkgYXMgUHJvdmlkZXJTY2hlbWE7XG5cbiAgICBjb25zdCB2ZXJzaW9uU2NoZW1hID0gSlNPTi5wYXJzZShcbiAgICAgIGF3YWl0IGV4ZWModGVycmFmb3JtQmluYXJ5TmFtZSwgW1widmVyc2lvblwiLCBcIi1qc29uXCJdLCB7XG4gICAgICAgIGN3ZDogb3V0ZGlyLFxuICAgICAgfSksXG4gICAgKSBhcyBWZXJzaW9uU2NoZW1hO1xuXG4gICAgcHJvdmlkZXJTY2hlbWEucHJvdmlkZXJfdmVyc2lvbnMgPSB2ZXJzaW9uU2NoZW1hLnByb3ZpZGVyX3NlbGVjdGlvbnM7XG4gIH0pO1xuXG4gIHJldHVybiBzYW5pdGl6ZVByb3ZpZGVyU2NoZW1hKHByb3ZpZGVyU2NoZW1hKTtcbn1cblxuLy8gVGhlIHByb3ZpZGVycyBoYXZlIHNvbWUgcG90ZW50aWFsIGJ1Z3MgdGhhdCB3ZSB3YW50IHRvIHByby1hY3RpdmVseVxuLy8gZml4IGhlcmUgc28gdGhhdCB0aGUgcmVzdCBvZiB0aGUgY29kZSBjYW4gYXNzdW1lIGEgY29uc2lzdGVudCBzY2hlbWEuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVQcm92aWRlclNjaGVtYShzY2hlbWE6IFByb3ZpZGVyU2NoZW1hKTogUHJvdmlkZXJTY2hlbWEge1xuICAvLyBNYWlubHkgc29tZSBhdHRyaWJ1dGVzIGFyZSBcImRvdWJsZWRcIiwgZS5nLiBbXCJsaXN0XCIsIFwic3RyaW5nXCIsIFwibGlzdFwiLCBcInN0cmluZ1wiXVxuICAvLyBpbnN0ZWFkIG9mIFtcImxpc3RcIiwgXCJzdHJpbmdcIl1cbiAgZnVuY3Rpb24gYXR0cmlidXRlRG91YmxpbmdGaXgoYXR0cmlidXRlOiBBdHRyaWJ1dGUpOiBBdHRyaWJ1dGUge1xuICAgIGlmIChpc05lc3RlZFR5cGVBdHRyaWJ1dGUoYXR0cmlidXRlKSB8fCAhQXJyYXkuaXNBcnJheShhdHRyaWJ1dGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZSA9XG4gICAgICBhdHRyaWJ1dGUudHlwZS5sZW5ndGggPT09IDJcbiAgICAgICAgPyBhdHRyaWJ1dGUudHlwZVxuICAgICAgICA6IChhdHRyaWJ1dGUudHlwZSBhcyBzdHJpbmdbXSkuc2xpY2UoMCwgMik7IC8vIFRoZSB0eXBlcyB0ZWxsIHVzIHRoaXMgY2FuJ3QgaGFwcGVuLCByZWFsaXR5IGJlZ3MgdG8gZGlmZmVyXG5cbiAgICBhdHRyaWJ1dGUudHlwZSA9IHR5cGUgYXMgQXR0cmlidXRlVHlwZTtcbiAgICByZXR1cm4gYXR0cmlidXRlO1xuICB9XG5cbiAgLy8gTXV0YXRlcyBibG9jayB3aXRoIHRoZSBmaXhcbiAgZnVuY3Rpb24gc2FuaXRpemVCbG9jayhibG9jazogQmxvY2spIHtcbiAgICBPYmplY3QudmFsdWVzKGJsb2NrLmF0dHJpYnV0ZXMgfHwge30pLmZvckVhY2goYXR0cmlidXRlRG91YmxpbmdGaXgpO1xuICAgIE9iamVjdC52YWx1ZXMoYmxvY2suYmxvY2tfdHlwZXMgfHwge30pLmZvckVhY2goKGJsb2NrVHlwZSkgPT4ge1xuICAgICAgc2FuaXRpemVCbG9jayhibG9ja1R5cGUuYmxvY2spO1xuICAgIH0pO1xuICB9XG5cbiAgT2JqZWN0LnZhbHVlcyhzY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSkuZm9yRWFjaCgocHJvdmlkZXIpID0+IHtcbiAgICBjb25zdCBlbnRpdGllcyA9IFtcbiAgICAgIHByb3ZpZGVyLnByb3ZpZGVyLFxuICAgICAgLi4uT2JqZWN0LnZhbHVlcyhwcm92aWRlci5yZXNvdXJjZV9zY2hlbWFzIHx8IHt9KSxcbiAgICAgIC4uLk9iamVjdC52YWx1ZXMocHJvdmlkZXIuZGF0YV9zb3VyY2Vfc2NoZW1hcyB8fCB7fSksXG4gICAgXTtcblxuICAgIGVudGl0aWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xuICAgICAgc2FuaXRpemVCbG9jayhlbnRpdHkuYmxvY2spO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZE1vZHVsZVNjaGVtYSh0YXJnZXQ6IENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldCkge1xuICBsZXQgbW9kdWxlU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVTY2hlbWE+ID0ge307XG5cbiAgYXdhaXQgd2l0aFRlbXBEaXIoXCJmZXRjaFNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnOiBUZXJyYWZvcm1Db25maWcgPSB7XG4gICAgICB0ZXJyYWZvcm06IHt9LFxuICAgIH07XG5cbiAgICBpZiAoIWNvbmZpZy5tb2R1bGUpIGNvbmZpZy5tb2R1bGUgPSB7fTtcbiAgICBsZXQgc291cmNlOiBzdHJpbmcgPSB0YXJnZXQuc291cmNlO1xuXG4gICAgY29uc3QgbG9jYWxTb3VyY2UgPSAodGFyZ2V0LmNvbnN0cmFpbnQgYXMgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludClcbiAgICAgIC5sb2NhbFNvdXJjZUFic29sdXRlUGF0aDtcbiAgICBpZiAobG9jYWxTb3VyY2UpIHtcbiAgICAgIC8vIGNyZWF0ZSByZWxhdGl2ZSBwYXRoIHRvIG1vZHVsZSBpbiB0aGUgdXNlciBwcm9qZWN0XG4gICAgICBzb3VyY2UgPSBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGxvY2FsU291cmNlKTtcbiAgICB9XG5cbiAgICBjb25maWcubW9kdWxlW3RhcmdldC5tb2R1bGVLZXldID0geyBzb3VyY2U6IHNvdXJjZSB9O1xuICAgIGlmICh0YXJnZXQudmVyc2lvbikge1xuICAgICAgY29uZmlnLm1vZHVsZVt0YXJnZXQubW9kdWxlS2V5XVtcInZlcnNpb25cIl0gPSB0YXJnZXQudmVyc2lvbjtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKG91dGRpciwgXCJtYWluLnRmLmpzb25cIik7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShjb25maWcpKTtcblxuICAgIGF3YWl0IGV4ZWModGVycmFmb3JtQmluYXJ5TmFtZSwgW1wiZ2V0XCJdLCB7IGN3ZDogb3V0ZGlyIH0pO1xuICAgIGlmIChjb25maWcubW9kdWxlKSB7XG4gICAgICBtb2R1bGVTY2hlbWEgPSBhd2FpdCBoYXJ2ZXN0TW9kdWxlU2NoZW1hKFxuICAgICAgICBvdXRkaXIsXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbmZpZy5tb2R1bGUpLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBtb2R1bGVTY2hlbWE7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,6BAA6B,EAK9B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,MAAM,MAAM,MAAM,GAAG;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAChE,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF,wBAAsB,UAAU,CAC9B,WAAW,EAAE,6BAA6B,EAAE,EAC5C,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
package/build/read.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) HashiCorp, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.readSchema = exports.isLocalModule = exports.TerraformProviderConstraint = exports.TerraformModuleConstraint = exports.isRegistryModule = void 0;
|
|
11
|
+
var commons_1 = require("@cdktn/commons");
|
|
12
|
+
Object.defineProperty(exports, "isRegistryModule", { enumerable: true, get: function () { return commons_1.isRegistryModule; } });
|
|
13
|
+
Object.defineProperty(exports, "TerraformModuleConstraint", { enumerable: true, get: function () { return commons_1.TerraformModuleConstraint; } });
|
|
14
|
+
Object.defineProperty(exports, "TerraformProviderConstraint", { enumerable: true, get: function () { return commons_1.TerraformProviderConstraint; } });
|
|
15
|
+
Object.defineProperty(exports, "isLocalModule", { enumerable: true, get: function () { return commons_1.isLocalModule; } });
|
|
16
|
+
const commons_2 = require("@cdktn/commons");
|
|
17
|
+
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
18
|
+
const provider_schema_1 = require("./provider-schema");
|
|
19
|
+
const cache_1 = require("./cache");
|
|
20
|
+
async function readSchema(constraints, cacheDir) {
|
|
21
|
+
const cachedReadProviderSchema = (0, cache_1.cachedAccess)(provider_schema_1.readProviderSchema, cacheDir);
|
|
22
|
+
const targets = constraints.map((constraint) => commons_2.ConstructsMakerProviderTarget.from(constraint, commons_2.LANGUAGES[0]));
|
|
23
|
+
throwIfTargetsConflict(targets);
|
|
24
|
+
const schemas = await Promise.all(targets.map((t) => t.isModule
|
|
25
|
+
? (0, provider_schema_1.readModuleSchema)(t).then((s) => ({ moduleSchema: s }))
|
|
26
|
+
: cachedReadProviderSchema(t).then((s) => ({ providerSchema: s }))));
|
|
27
|
+
// ensure we have a schema for each target type
|
|
28
|
+
schemas.unshift({
|
|
29
|
+
providerSchema: {
|
|
30
|
+
format_version: "0.1",
|
|
31
|
+
},
|
|
32
|
+
moduleSchema: {},
|
|
33
|
+
});
|
|
34
|
+
return deepmerge_1.default.all(schemas);
|
|
35
|
+
}
|
|
36
|
+
exports.readSchema = readSchema;
|
|
37
|
+
function throwIfTargetsConflict(targets) {
|
|
38
|
+
const modules = targets.filter((t) => t.isModule);
|
|
39
|
+
modules.forEach((moduleA) => {
|
|
40
|
+
modules.forEach((moduleB) => {
|
|
41
|
+
if (moduleA !== moduleB && moduleA.name === moduleB.name) {
|
|
42
|
+
throw commons_2.Errors.Usage(`Found two modules with the same name "${moduleA.name}" which is not supported. Please rename one of the modules in your cdktf.json config. For more information on how to set the name refer to https://cdk.tf/adding-modules`);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7Ozs7OztBQUVILDBDQUt3QjtBQUp0QiwyR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixvSEFBQSx5QkFBeUIsT0FBQTtBQUN6QixzSEFBQSwyQkFBMkIsT0FBQTtBQUMzQix3R0FBQSxhQUFhLE9BQUE7QUFFZiw0Q0FNd0I7QUFDeEIsMERBQWtDO0FBQ2xDLHVEQUF5RTtBQUN6RSxtQ0FBdUM7QUFPaEMsS0FBSyxVQUFVLFVBQVUsQ0FDOUIsV0FBNEMsRUFDNUMsUUFBaUI7SUFFakIsTUFBTSx3QkFBd0IsR0FBRyxJQUFBLG9CQUFZLEVBQUMsb0NBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQzdDLHVDQUE2QixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsbUJBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBRUYsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDaEIsQ0FBQyxDQUFDLFFBQVE7UUFDUixDQUFDLENBQUMsSUFBQSxrQ0FBZ0IsRUFBQyxDQUFRLENBQUMsQ0FBQyxJQUFJLENBQzdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFXLENBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQVEsQ0FBQyxDQUFDLElBQUksQ0FDckMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQVcsQ0FDekMsQ0FDTixDQUNGLENBQUM7SUFFRiwrQ0FBK0M7SUFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNkLGNBQWMsRUFBRTtZQUNkLGNBQWMsRUFBRSxLQUFLO1NBQ3RCO1FBQ0QsWUFBWSxFQUFFLEVBQUU7S0FDakIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxtQkFBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBaENELGdDQWdDQztBQUVELFNBQVMsc0JBQXNCLENBQzdCLE9BQXdFO0lBRXhFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQzVCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUNlLENBQUM7SUFFbkMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMxQixJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLHlDQUF5QyxPQUFPLENBQUMsSUFBSSwwS0FBMEssQ0FDaE8sQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtcbiAgaXNSZWdpc3RyeU1vZHVsZSxcbiAgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludCxcbiAgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50LFxuICBpc0xvY2FsTW9kdWxlLFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7XG4gIFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50LFxuICBMQU5HVUFHRVMsXG4gIENvbnN0cnVjdHNNYWtlclByb3ZpZGVyVGFyZ2V0LFxuICBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQsXG4gIEVycm9ycyxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgZGVlcG1lcmdlIGZyb20gXCJkZWVwbWVyZ2VcIjtcbmltcG9ydCB7IHJlYWRNb2R1bGVTY2hlbWEsIHJlYWRQcm92aWRlclNjaGVtYSB9IGZyb20gXCIuL3Byb3ZpZGVyLXNjaGVtYVwiO1xuaW1wb3J0IHsgY2FjaGVkQWNjZXNzIH0gZnJvbSBcIi4vY2FjaGVcIjtcblxuZXhwb3J0IHR5cGUgU2NoZW1hID0ge1xuICBwcm92aWRlclNjaGVtYT86IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgcmVhZFByb3ZpZGVyU2NoZW1hPj47XG4gIG1vZHVsZVNjaGVtYT86IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgcmVhZE1vZHVsZVNjaGVtYT4+O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTY2hlbWEoXG4gIGNvbnN0cmFpbnRzOiBUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludFtdLFxuICBjYWNoZURpcj86IHN0cmluZyxcbik6IFByb21pc2U8U2NoZW1hPiB7XG4gIGNvbnN0IGNhY2hlZFJlYWRQcm92aWRlclNjaGVtYSA9IGNhY2hlZEFjY2VzcyhyZWFkUHJvdmlkZXJTY2hlbWEsIGNhY2hlRGlyKTtcbiAgY29uc3QgdGFyZ2V0cyA9IGNvbnN0cmFpbnRzLm1hcCgoY29uc3RyYWludCkgPT5cbiAgICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldC5mcm9tKGNvbnN0cmFpbnQsIExBTkdVQUdFU1swXSksXG4gICk7XG5cbiAgdGhyb3dJZlRhcmdldHNDb25mbGljdCh0YXJnZXRzKTtcblxuICBjb25zdCBzY2hlbWFzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgdGFyZ2V0cy5tYXAoKHQpID0+XG4gICAgICB0LmlzTW9kdWxlXG4gICAgICAgID8gcmVhZE1vZHVsZVNjaGVtYSh0IGFzIGFueSkudGhlbihcbiAgICAgICAgICAgIChzKSA9PiAoeyBtb2R1bGVTY2hlbWE6IHMgfSkgYXMgU2NoZW1hLFxuICAgICAgICAgIClcbiAgICAgICAgOiBjYWNoZWRSZWFkUHJvdmlkZXJTY2hlbWEodCBhcyBhbnkpLnRoZW4oXG4gICAgICAgICAgICAocykgPT4gKHsgcHJvdmlkZXJTY2hlbWE6IHMgfSkgYXMgU2NoZW1hLFxuICAgICAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICAvLyBlbnN1cmUgd2UgaGF2ZSBhIHNjaGVtYSBmb3IgZWFjaCB0YXJnZXQgdHlwZVxuICBzY2hlbWFzLnVuc2hpZnQoe1xuICAgIHByb3ZpZGVyU2NoZW1hOiB7XG4gICAgICBmb3JtYXRfdmVyc2lvbjogXCIwLjFcIixcbiAgICB9LFxuICAgIG1vZHVsZVNjaGVtYToge30sXG4gIH0pO1xuXG4gIHJldHVybiBkZWVwbWVyZ2UuYWxsKHNjaGVtYXMpO1xufVxuXG5mdW5jdGlvbiB0aHJvd0lmVGFyZ2V0c0NvbmZsaWN0KFxuICB0YXJnZXRzOiAoQ29uc3RydWN0c01ha2VyUHJvdmlkZXJUYXJnZXQgfCBDb25zdHJ1Y3RzTWFrZXJNb2R1bGVUYXJnZXQpW10sXG4pIHtcbiAgY29uc3QgbW9kdWxlcyA9IHRhcmdldHMuZmlsdGVyKFxuICAgICh0KSA9PiB0LmlzTW9kdWxlLFxuICApIGFzIENvbnN0cnVjdHNNYWtlck1vZHVsZVRhcmdldFtdO1xuXG4gIG1vZHVsZXMuZm9yRWFjaCgobW9kdWxlQSkgPT4ge1xuICAgIG1vZHVsZXMuZm9yRWFjaCgobW9kdWxlQikgPT4ge1xuICAgICAgaWYgKG1vZHVsZUEgIT09IG1vZHVsZUIgJiYgbW9kdWxlQS5uYW1lID09PSBtb2R1bGVCLm5hbWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgICAgIGBGb3VuZCB0d28gbW9kdWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUgXCIke21vZHVsZUEubmFtZX1cIiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVuYW1lIG9uZSBvZiB0aGUgbW9kdWxlcyBpbiB5b3VyIGNka3RmLmpzb24gY29uZmlnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHRoZSBuYW1lIHJlZmVyIHRvIGh0dHBzOi8vY2RrLnRmL2FkZGluZy1tb2R1bGVzYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;AAEH,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAKpD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAa7B;AAED,eAAO,MAAM,IAAI,YACN,MAAM,QACT,MAAM,EAAE,WACL,YAAY,WACZ,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,WACtB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,KAAK,GAAG,KAC3C,QAAQ,MAAM,CAkChB,CAAC"}
|