@cdktn/hcl2cdk 0.23.0-pre.8 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient.d.ts +0 -1
- package/build/__tests__/coerceType.test.js +165 -0
- package/build/__tests__/expressionToTs.test.js +693 -0
- package/build/__tests__/expressions.test.js +415 -0
- package/build/__tests__/findExpressionType.test.js +105 -0
- package/build/__tests__/functions.test.js +605 -0
- package/build/__tests__/generation.test.js +45 -0
- package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/build/__tests__/partialCode.test.js +390 -0
- package/build/__tests__/terraformSchema.test.js +105 -0
- package/build/__tests__/testHelpers.js +16 -0
- package/build/coerceType.js +240 -0
- package/build/dynamic-blocks.js +44 -0
- package/build/expressions.js +633 -0
- package/build/function-bindings/functions.generated.js +1142 -0
- package/build/function-bindings/functions.js +73 -0
- package/{lib → build}/generation.js +4 -4
- package/{lib → build}/index.d.ts +2 -2
- package/build/index.js +364 -0
- package/build/iteration.js +87 -0
- package/build/jsii-rosetta-workarounds.js +126 -0
- package/build/partialCode.js +116 -0
- package/build/provider.js +40 -0
- package/build/references.js +141 -0
- package/build/schema.js +81 -0
- package/build/telemetryAllowList.json +24 -0
- package/build/terraformSchema.js +136 -0
- package/build/types.js +3 -0
- package/build/utils.js +25 -0
- package/build/variables.js +172 -0
- package/package.json +13 -14
- package/tsconfig.json +4 -2
- package/lib/__tests__/coerceType.test.js +0 -165
- package/lib/__tests__/expressionToTs.test.js +0 -693
- package/lib/__tests__/expressions.test.js +0 -415
- package/lib/__tests__/findExpressionType.test.js +0 -105
- package/lib/__tests__/functions.test.js +0 -605
- package/lib/__tests__/generation.test.js +0 -45
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
- package/lib/__tests__/partialCode.test.js +0 -390
- package/lib/__tests__/terraformSchema.test.js +0 -105
- package/lib/__tests__/testHelpers.js +0 -16
- package/lib/coerceType.js +0 -240
- package/lib/dynamic-blocks.js +0 -44
- package/lib/expressions.js +0 -634
- package/lib/function-bindings/functions.generated.js +0 -1142
- package/lib/function-bindings/functions.js +0 -73
- package/lib/index.js +0 -364
- package/lib/iteration.js +0 -87
- package/lib/jsii-rosetta-workarounds.js +0 -126
- package/lib/partialCode.js +0 -116
- package/lib/provider.js +0 -40
- package/lib/references.js +0 -141
- package/lib/schema.js +0 -81
- package/lib/terraformSchema.js +0 -136
- package/lib/types.js +0 -3
- package/lib/utils.js +0 -25
- package/lib/variables.js +0 -172
- /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
- /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
- /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
- /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
- /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
- /package/{lib → build}/coerceType.d.ts +0 -0
- /package/{lib → build}/dynamic-blocks.d.ts +0 -0
- /package/{lib → build}/expressions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
- /package/{lib → build}/generation.d.ts +0 -0
- /package/{lib → build}/iteration.d.ts +0 -0
- /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
- /package/{lib → build}/partialCode.d.ts +0 -0
- /package/{lib → build}/provider.d.ts +0 -0
- /package/{lib → build}/references.d.ts +0 -0
- /package/{lib → build}/schema.d.ts +0 -0
- /package/{lib → build}/terraformSchema.d.ts +0 -0
- /package/{lib → build}/types.d.ts +0 -0
- /package/{lib → build}/utils.d.ts +0 -0
- /package/{lib → build}/variables.d.ts +0 -0
- /package/{lib → src}/telemetryAllowList.json +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) HashiCorp, Inc
|
|
3
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.replaceGoImports = exports.replaceCsharpImports = exports.replaceJavaImports = exports.replacePythonImports = void 0;
|
|
6
|
+
function replacePythonImports(code) {
|
|
7
|
+
return code
|
|
8
|
+
.split("\n")
|
|
9
|
+
.map((line) => {
|
|
10
|
+
// Replace from-import lines with lib
|
|
11
|
+
const fromImportLibRegex = /from \.\.\.gen\.providers\.([^.]+)(?:\.lib)?\.(.*) import/;
|
|
12
|
+
if (fromImportLibRegex.test(line)) {
|
|
13
|
+
return line.replace(fromImportLibRegex, "from imports.$1.$2 import");
|
|
14
|
+
}
|
|
15
|
+
// Replace import lines with lib
|
|
16
|
+
const importLibRegex = /import \.\.\.gen\.providers\.([^.]+)(?:\.lib)?\.(.*) as (.*)/;
|
|
17
|
+
if (importLibRegex.test(line)) {
|
|
18
|
+
return line.replace(importLibRegex, "import imports.$1.$2 as $3");
|
|
19
|
+
}
|
|
20
|
+
// Replace from-import lines
|
|
21
|
+
if (line.startsWith("from ...gen.providers.")) {
|
|
22
|
+
return line.replace("from ...gen.providers.", "from imports.");
|
|
23
|
+
}
|
|
24
|
+
// Replace import lines
|
|
25
|
+
if (line.startsWith("import ...gen.providers.")) {
|
|
26
|
+
return line.replace("import ...gen.providers.", "import imports.");
|
|
27
|
+
}
|
|
28
|
+
// Replace modules
|
|
29
|
+
if (line.startsWith("import ...gen.modules.")) {
|
|
30
|
+
return line.replace("import ...gen.modules.", "import imports.");
|
|
31
|
+
}
|
|
32
|
+
return line;
|
|
33
|
+
})
|
|
34
|
+
.join("\n");
|
|
35
|
+
}
|
|
36
|
+
exports.replacePythonImports = replacePythonImports;
|
|
37
|
+
function replaceJavaImports(code) {
|
|
38
|
+
return code
|
|
39
|
+
.split("\n")
|
|
40
|
+
.map((line) => {
|
|
41
|
+
// Replace using lines with lib and precices import
|
|
42
|
+
const importWithLib = /import gen\.providers\.([^.]+)(?:\.lib)?\.([^.]+)\.(.*);/;
|
|
43
|
+
const matchWithLib = line.match(importWithLib);
|
|
44
|
+
if (matchWithLib) {
|
|
45
|
+
const [, provider, resource, className] = matchWithLib;
|
|
46
|
+
return `import imports.${provider}.${resource}.${className};`;
|
|
47
|
+
}
|
|
48
|
+
// Replace using lines
|
|
49
|
+
const importWithoutLib = /import gen\.providers\.([^.]+)\.([^.]+)\.\*;/;
|
|
50
|
+
const matchWithoutLib = line.match(importWithoutLib);
|
|
51
|
+
if (matchWithoutLib) {
|
|
52
|
+
const [, provider, resource] = matchWithoutLib;
|
|
53
|
+
return `import imports.${provider}.${resource}.*;`;
|
|
54
|
+
}
|
|
55
|
+
// Replace using lines
|
|
56
|
+
const importModules = /import gen\.modules\.(.+)\.\*;/;
|
|
57
|
+
const importModulesMatch = line.match(importModules);
|
|
58
|
+
if (importModulesMatch) {
|
|
59
|
+
const [, module] = importModulesMatch;
|
|
60
|
+
return `import imports.${module}.*;`;
|
|
61
|
+
}
|
|
62
|
+
return line;
|
|
63
|
+
})
|
|
64
|
+
.join("\n");
|
|
65
|
+
}
|
|
66
|
+
exports.replaceJavaImports = replaceJavaImports;
|
|
67
|
+
function replaceCsharpImports(code) {
|
|
68
|
+
return code
|
|
69
|
+
.split("\n")
|
|
70
|
+
.map((line) => {
|
|
71
|
+
// Replace using lines with lib
|
|
72
|
+
const fromImportLibRegex = /using Gen\.Providers\.([^.]*)(?:\.Lib)?\.(.*);/;
|
|
73
|
+
const match = line.match(fromImportLibRegex);
|
|
74
|
+
if (match) {
|
|
75
|
+
const [, provider, resource] = match;
|
|
76
|
+
return `using ${lowercaseFirstChar(provider)}.${resource};`;
|
|
77
|
+
}
|
|
78
|
+
// Replace using lines
|
|
79
|
+
if (line.startsWith("using Gen.Providers.")) {
|
|
80
|
+
const importLine = line.replace("using Gen.Providers.", "");
|
|
81
|
+
return `using ${importLine
|
|
82
|
+
.substring(0, 1)
|
|
83
|
+
.toLocaleLowerCase()}${importLine.substring(1)}`;
|
|
84
|
+
}
|
|
85
|
+
if (line.startsWith("using Gen.Modules.")) {
|
|
86
|
+
const importLine = line.replace("using Gen.Modules.", "");
|
|
87
|
+
return `using ${importLine}`;
|
|
88
|
+
}
|
|
89
|
+
return line;
|
|
90
|
+
})
|
|
91
|
+
.join("\n");
|
|
92
|
+
}
|
|
93
|
+
exports.replaceCsharpImports = replaceCsharpImports;
|
|
94
|
+
function replaceGoImports(code) {
|
|
95
|
+
return code
|
|
96
|
+
.split("\n")
|
|
97
|
+
.map((line) => {
|
|
98
|
+
// Replace using lines with lib
|
|
99
|
+
const fromImportLibRegex = /import "github.com\/aws-samples\/dummy\/gen\/providers\/([^/]*)(?:\/lib)?\/(.*)"/;
|
|
100
|
+
const matchLib = line.match(fromImportLibRegex);
|
|
101
|
+
if (matchLib) {
|
|
102
|
+
const [, provider, resource] = matchLib;
|
|
103
|
+
return `import "cdk.tf/go/stack/generated/${provider}/${resource}"`;
|
|
104
|
+
}
|
|
105
|
+
// Replace using lines
|
|
106
|
+
const fromImportRegex = /import "github.com\/aws-samples\/dummy\/gen\/providers\/([^/]+)\/(.*)"/;
|
|
107
|
+
const match = line.match(fromImportRegex);
|
|
108
|
+
if (match) {
|
|
109
|
+
const [, provider, resource] = match;
|
|
110
|
+
return `import "cdk.tf/go/stack/generated/${provider}/${resource}"`;
|
|
111
|
+
}
|
|
112
|
+
const importModulesRegex = /import (.*) "github.com\/aws-samples\/dummy\/gen\/modules\/(.*)"/;
|
|
113
|
+
const matchModules = line.match(importModulesRegex);
|
|
114
|
+
if (matchModules) {
|
|
115
|
+
const [, name, module] = matchModules;
|
|
116
|
+
return `import ${name} "cdk.tf/go/stack/generated/${module}"`;
|
|
117
|
+
}
|
|
118
|
+
return line;
|
|
119
|
+
})
|
|
120
|
+
.join("\n");
|
|
121
|
+
}
|
|
122
|
+
exports.replaceGoImports = replaceGoImports;
|
|
123
|
+
function lowercaseFirstChar(str) {
|
|
124
|
+
return str.substring(0, 1).toLocaleLowerCase() + str.substring(1);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2pzaWktcm9zZXR0YS13b3JrYXJvdW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQzs7O0FBRW5DLFNBQWdCLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsT0FBTyxJQUFJO1NBQ1IsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1oscUNBQXFDO1FBQ3JDLE1BQU0sa0JBQWtCLEdBQ3RCLDJEQUEyRCxDQUFDO1FBQzlELElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLDJCQUEyQixDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLGNBQWMsR0FDbEIsOERBQThELENBQUM7UUFDakUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsSUFB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QixNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDO1lBQ3RDLE9BQU8sVUFBVSxJQUFJLCtCQUErQixNQUFNLEdBQUcsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQWpDRCw0Q0FpQ0M7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQVc7SUFDckMsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNvZGVcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICAvLyBSZXBsYWNlIGZyb20taW1wb3J0IGxpbmVzIHdpdGggbGliXG4gICAgICBjb25zdCBmcm9tSW1wb3J0TGliUmVnZXggPVxuICAgICAgICAvZnJvbSBcXC5cXC5cXC5nZW5cXC5wcm92aWRlcnNcXC4oW14uXSspKD86XFwubGliKT9cXC4oLiopIGltcG9ydC87XG4gICAgICBpZiAoZnJvbUltcG9ydExpYlJlZ2V4LnRlc3QobGluZSkpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShmcm9tSW1wb3J0TGliUmVnZXgsIFwiZnJvbSBpbXBvcnRzLiQxLiQyIGltcG9ydFwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSBpbXBvcnQgbGluZXMgd2l0aCBsaWJcbiAgICAgIGNvbnN0IGltcG9ydExpYlJlZ2V4ID1cbiAgICAgICAgL2ltcG9ydCBcXC5cXC5cXC5nZW5cXC5wcm92aWRlcnNcXC4oW14uXSspKD86XFwubGliKT9cXC4oLiopIGFzICguKikvO1xuICAgICAgaWYgKGltcG9ydExpYlJlZ2V4LnRlc3QobGluZSkpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShpbXBvcnRMaWJSZWdleCwgXCJpbXBvcnQgaW1wb3J0cy4kMS4kMiBhcyAkM1wiKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSBmcm9tLWltcG9ydCBsaW5lc1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImZyb20gLi4uZ2VuLnByb3ZpZGVycy5cIikpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShcImZyb20gLi4uZ2VuLnByb3ZpZGVycy5cIiwgXCJmcm9tIGltcG9ydHMuXCIpO1xuICAgICAgfVxuICAgICAgLy8gUmVwbGFjZSBpbXBvcnQgbGluZXNcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJpbXBvcnQgLi4uZ2VuLnByb3ZpZGVycy5cIikpIHtcbiAgICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZShcImltcG9ydCAuLi5nZW4ucHJvdmlkZXJzLlwiLCBcImltcG9ydCBpbXBvcnRzLlwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSBtb2R1bGVzXG4gICAgICBpZiAobGluZS5zdGFydHNXaXRoKFwiaW1wb3J0IC4uLmdlbi5tb2R1bGVzLlwiKSkge1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKFwiaW1wb3J0IC4uLmdlbi5tb2R1bGVzLlwiLCBcImltcG9ydCBpbXBvcnRzLlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpbmU7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VKYXZhSW1wb3J0cyhjb2RlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNvZGVcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICAvLyBSZXBsYWNlIHVzaW5nIGxpbmVzIHdpdGggbGliIGFuZCBwcmVjaWNlcyBpbXBvcnRcbiAgICAgIGNvbnN0IGltcG9ydFdpdGhMaWIgPVxuICAgICAgICAvaW1wb3J0IGdlblxcLnByb3ZpZGVyc1xcLihbXi5dKykoPzpcXC5saWIpP1xcLihbXi5dKylcXC4oLiopOy87XG4gICAgICBjb25zdCBtYXRjaFdpdGhMaWIgPSBsaW5lLm1hdGNoKGltcG9ydFdpdGhMaWIpO1xuICAgICAgaWYgKG1hdGNoV2l0aExpYikge1xuICAgICAgICBjb25zdCBbLCBwcm92aWRlciwgcmVzb3VyY2UsIGNsYXNzTmFtZV0gPSBtYXRjaFdpdGhMaWI7XG4gICAgICAgIHJldHVybiBgaW1wb3J0IGltcG9ydHMuJHtwcm92aWRlcn0uJHtyZXNvdXJjZX0uJHtjbGFzc05hbWV9O2A7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlcGxhY2UgdXNpbmcgbGluZXNcbiAgICAgIGNvbnN0IGltcG9ydFdpdGhvdXRMaWIgPSAvaW1wb3J0IGdlblxcLnByb3ZpZGVyc1xcLihbXi5dKylcXC4oW14uXSspXFwuXFwqOy87XG4gICAgICBjb25zdCBtYXRjaFdpdGhvdXRMaWIgPSBsaW5lLm1hdGNoKGltcG9ydFdpdGhvdXRMaWIpO1xuICAgICAgaWYgKG1hdGNoV2l0aG91dExpYikge1xuICAgICAgICBjb25zdCBbLCBwcm92aWRlciwgcmVzb3VyY2VdID0gbWF0Y2hXaXRob3V0TGliO1xuICAgICAgICByZXR1cm4gYGltcG9ydCBpbXBvcnRzLiR7cHJvdmlkZXJ9LiR7cmVzb3VyY2V9Lio7YDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSB1c2luZyBsaW5lc1xuICAgICAgY29uc3QgaW1wb3J0TW9kdWxlcyA9IC9pbXBvcnQgZ2VuXFwubW9kdWxlc1xcLiguKylcXC5cXCo7LztcbiAgICAgIGNvbnN0IGltcG9ydE1vZHVsZXNNYXRjaCA9IGxpbmUubWF0Y2goaW1wb3J0TW9kdWxlcyk7XG4gICAgICBpZiAoaW1wb3J0TW9kdWxlc01hdGNoKSB7XG4gICAgICAgIGNvbnN0IFssIG1vZHVsZV0gPSBpbXBvcnRNb2R1bGVzTWF0Y2g7XG4gICAgICAgIHJldHVybiBgaW1wb3J0IGltcG9ydHMuJHttb2R1bGV9Lio7YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpbmU7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VDc2hhcnBJbXBvcnRzKGNvZGU6IHN0cmluZykge1xuICByZXR1cm4gY29kZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIC8vIFJlcGxhY2UgdXNpbmcgbGluZXMgd2l0aCBsaWJcbiAgICAgIGNvbnN0IGZyb21JbXBvcnRMaWJSZWdleCA9XG4gICAgICAgIC91c2luZyBHZW5cXC5Qcm92aWRlcnNcXC4oW14uXSopKD86XFwuTGliKT9cXC4oLiopOy87XG4gICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goZnJvbUltcG9ydExpYlJlZ2V4KTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBbLCBwcm92aWRlciwgcmVzb3VyY2VdID0gbWF0Y2g7XG4gICAgICAgIHJldHVybiBgdXNpbmcgJHtsb3dlcmNhc2VGaXJzdENoYXIocHJvdmlkZXIpfS4ke3Jlc291cmNlfTtgO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIHVzaW5nIGxpbmVzXG4gICAgICBpZiAobGluZS5zdGFydHNXaXRoKFwidXNpbmcgR2VuLlByb3ZpZGVycy5cIikpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0TGluZSA9IGxpbmUucmVwbGFjZShcInVzaW5nIEdlbi5Qcm92aWRlcnMuXCIsIFwiXCIpO1xuXG4gICAgICAgIHJldHVybiBgdXNpbmcgJHtpbXBvcnRMaW5lXG4gICAgICAgICAgLnN1YnN0cmluZygwLCAxKVxuICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpfSR7aW1wb3J0TGluZS5zdWJzdHJpbmcoMSl9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcInVzaW5nIEdlbi5Nb2R1bGVzLlwiKSkge1xuICAgICAgICBjb25zdCBpbXBvcnRMaW5lID0gbGluZS5yZXBsYWNlKFwidXNpbmcgR2VuLk1vZHVsZXMuXCIsIFwiXCIpO1xuXG4gICAgICAgIHJldHVybiBgdXNpbmcgJHtpbXBvcnRMaW5lfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsaW5lO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcXG5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlR29JbXBvcnRzKGNvZGU6IHN0cmluZykge1xuICByZXR1cm4gY29kZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIC8vIFJlcGxhY2UgdXNpbmcgbGluZXMgd2l0aCBsaWJcbiAgICAgIGNvbnN0IGZyb21JbXBvcnRMaWJSZWdleCA9XG4gICAgICAgIC9pbXBvcnQgXCJnaXRodWIuY29tXFwvYXdzLXNhbXBsZXNcXC9kdW1teVxcL2dlblxcL3Byb3ZpZGVyc1xcLyhbXi9dKikoPzpcXC9saWIpP1xcLyguKilcIi87XG4gICAgICBjb25zdCBtYXRjaExpYiA9IGxpbmUubWF0Y2goZnJvbUltcG9ydExpYlJlZ2V4KTtcbiAgICAgIGlmIChtYXRjaExpYikge1xuICAgICAgICBjb25zdCBbLCBwcm92aWRlciwgcmVzb3VyY2VdID0gbWF0Y2hMaWI7XG4gICAgICAgIHJldHVybiBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC8ke3Byb3ZpZGVyfS8ke3Jlc291cmNlfVwiYDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSB1c2luZyBsaW5lc1xuICAgICAgY29uc3QgZnJvbUltcG9ydFJlZ2V4ID1cbiAgICAgICAgL2ltcG9ydCBcImdpdGh1Yi5jb21cXC9hd3Mtc2FtcGxlc1xcL2R1bW15XFwvZ2VuXFwvcHJvdmlkZXJzXFwvKFteL10rKVxcLyguKilcIi87XG4gICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goZnJvbUltcG9ydFJlZ2V4KTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBbLCBwcm92aWRlciwgcmVzb3VyY2VdID0gbWF0Y2g7XG4gICAgICAgIHJldHVybiBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC8ke3Byb3ZpZGVyfS8ke3Jlc291cmNlfVwiYDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1wb3J0TW9kdWxlc1JlZ2V4ID1cbiAgICAgICAgL2ltcG9ydCAoLiopIFwiZ2l0aHViLmNvbVxcL2F3cy1zYW1wbGVzXFwvZHVtbXlcXC9nZW5cXC9tb2R1bGVzXFwvKC4qKVwiLztcbiAgICAgIGNvbnN0IG1hdGNoTW9kdWxlcyA9IGxpbmUubWF0Y2goaW1wb3J0TW9kdWxlc1JlZ2V4KTtcbiAgICAgIGlmIChtYXRjaE1vZHVsZXMpIHtcbiAgICAgICAgY29uc3QgWywgbmFtZSwgbW9kdWxlXSA9IG1hdGNoTW9kdWxlcztcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgJHtuYW1lfSBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvJHttb2R1bGV9XCJgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBsb3dlcmNhc2VGaXJzdENoYXIoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgMSkudG9Mb2NhbGVMb3dlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,116 @@
|
|
|
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.getRequiredAttributes = exports.fillWithConfigAccessors = void 0;
|
|
31
|
+
const terraformSchema_1 = require("./terraformSchema");
|
|
32
|
+
const t = __importStar(require("@babel/types"));
|
|
33
|
+
const utils_1 = require("./utils");
|
|
34
|
+
function getConfigFieldName(topLevelConfig, name) {
|
|
35
|
+
const sanitizedName = (0, utils_1.camelCase)(name);
|
|
36
|
+
return deduplicateName(Object.keys(topLevelConfig), sanitizedName);
|
|
37
|
+
}
|
|
38
|
+
function deduplicateName(existingNames, name) {
|
|
39
|
+
let newName = name;
|
|
40
|
+
let i = 1;
|
|
41
|
+
while (existingNames.includes(newName)) {
|
|
42
|
+
newName = `${name}${i}`;
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
return newName;
|
|
46
|
+
}
|
|
47
|
+
function fillWithConfigAccessors(scope, config, path) {
|
|
48
|
+
if (Array.isArray(config)) {
|
|
49
|
+
return config.map((c) => fillWithConfigAccessors(scope, c, `${path}.[]`));
|
|
50
|
+
}
|
|
51
|
+
if (typeof config === "object" && config !== null) {
|
|
52
|
+
const mutated = Object.entries(config).reduce((acc, [key, value]) => ({
|
|
53
|
+
...acc,
|
|
54
|
+
[key]: fillWithConfigAccessors(scope, value, `${path}.${key}`),
|
|
55
|
+
}), {});
|
|
56
|
+
// Get type of this part of the config
|
|
57
|
+
const attributeType = (0, terraformSchema_1.getTypeAtPath)(scope.providerSchema, path);
|
|
58
|
+
const requiredAttributes = getRequiredAttributes(attributeType);
|
|
59
|
+
// Add accessors for all required attributes that are missing
|
|
60
|
+
requiredAttributes.forEach((key) => {
|
|
61
|
+
const value = mutated[key];
|
|
62
|
+
const isNotDirectlyAccessible = value === undefined;
|
|
63
|
+
const isReplacedByAst = (t.isNode(mutated) && t.isExpression(mutated)) ||
|
|
64
|
+
t.isExpression(value);
|
|
65
|
+
const isEmptyArray = Array.isArray(value) && value.length === 0;
|
|
66
|
+
// If this was already replaced by an AST node, we don't need to do anything
|
|
67
|
+
// We assume all fields are filled in by the AST
|
|
68
|
+
if (isReplacedByAst) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (isNotDirectlyAccessible || isEmptyArray) {
|
|
72
|
+
const fieldName = getConfigFieldName(scope.topLevelConfig, key);
|
|
73
|
+
mutated[key] = t.memberExpression(t.identifier("config"), t.identifier(fieldName));
|
|
74
|
+
scope.topLevelConfig[fieldName] = `${path}.${key}`;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return mutated;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return config;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.fillWithConfigAccessors = fillWithConfigAccessors;
|
|
84
|
+
function getRequiredAttributes(attributeType) {
|
|
85
|
+
if (!attributeType) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
if (typeof attributeType !== "object" ||
|
|
89
|
+
Array.isArray(attributeType) ||
|
|
90
|
+
attributeType === null ||
|
|
91
|
+
attributeType === undefined ||
|
|
92
|
+
!("block" in attributeType)) {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const requiredAttributes = Object.entries(attributeType.block.attributes || {}).reduce((acc, [key, value]) => (value.required ? [...acc, key] : acc), []);
|
|
96
|
+
// Logic taken from (and should be shared with) provider generator resource parser: attributeForBlockType
|
|
97
|
+
const requiredBlockTypes = Object.entries(attributeType.block.block_types || {}).reduce((acc, [key, value]) => {
|
|
98
|
+
if (value.nesting_mode === "single" &&
|
|
99
|
+
!Object.values(value.block.attributes || {}).some((x) => !x.required)) {
|
|
100
|
+
return [...acc, key];
|
|
101
|
+
}
|
|
102
|
+
if (value.nesting_mode === "map") {
|
|
103
|
+
return acc;
|
|
104
|
+
}
|
|
105
|
+
if ((value.nesting_mode === "list" || value.nesting_mode === "set") &&
|
|
106
|
+
value.min_items === undefined
|
|
107
|
+
? false
|
|
108
|
+
: value.min_items > 0) {
|
|
109
|
+
return [...acc, key];
|
|
110
|
+
}
|
|
111
|
+
return acc;
|
|
112
|
+
}, []);
|
|
113
|
+
return [...requiredAttributes, ...requiredBlockTypes].sort();
|
|
114
|
+
}
|
|
115
|
+
exports.getRequiredAttributes = getRequiredAttributes;
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbENvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFydGlhbENvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx1REFBa0Q7QUFFbEQsZ0RBQWtDO0FBQ2xDLG1DQUFvQztBQUVwQyxTQUFTLGtCQUFrQixDQUN6QixjQUF1QyxFQUN2QyxJQUFZO0lBRVosTUFBTSxhQUFhLEdBQUcsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLGFBQXVCLEVBQUUsSUFBWTtJQUM1RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsRUFBRSxDQUFDO0lBQ04sQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FDckMsS0FBb0IsRUFDcEIsTUFBOEIsRUFDOUIsSUFBWTtJQUVaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUks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dGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IGdldFR5cGVBdFBhdGggfSBmcm9tIFwiLi90ZXJyYWZvcm1TY2hlbWFcIjtcbmltcG9ydCB7IFJlc291cmNlU2NvcGUsIFRlcnJhZm9ybVJlc291cmNlQmxvY2sgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0ICogYXMgdCBmcm9tIFwiQGJhYmVsL3R5cGVzXCI7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBnZXRDb25maWdGaWVsZE5hbWUoXG4gIHRvcExldmVsQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgbmFtZTogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHNhbml0aXplZE5hbWUgPSBjYW1lbENhc2UobmFtZSk7XG4gIHJldHVybiBkZWR1cGxpY2F0ZU5hbWUoT2JqZWN0LmtleXModG9wTGV2ZWxDb25maWcpLCBzYW5pdGl6ZWROYW1lKTtcbn1cblxuZnVuY3Rpb24gZGVkdXBsaWNhdGVOYW1lKGV4aXN0aW5nTmFtZXM6IHN0cmluZ1tdLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IG5ld05hbWUgPSBuYW1lO1xuICBsZXQgaSA9IDE7XG4gIHdoaWxlIChleGlzdGluZ05hbWVzLmluY2x1ZGVzKG5ld05hbWUpKSB7XG4gICAgbmV3TmFtZSA9IGAke25hbWV9JHtpfWA7XG4gICAgaSsrO1xuICB9XG4gIHJldHVybiBuZXdOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBjb25maWc6IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4gIHBhdGg6IHN0cmluZyxcbik6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZykpIHtcbiAgICByZXR1cm4gY29uZmlnLm1hcCgoYykgPT4gZmlsbFdpdGhDb25maWdBY2Nlc3NvcnMoc2NvcGUsIGMsIGAke3BhdGh9LltdYCkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb25maWcgPT09IFwib2JqZWN0XCIgJiYgY29uZmlnICE9PSBudWxsKSB7XG4gICAgY29uc3QgbXV0YXRlZCA9IE9iamVjdC5lbnRyaWVzKGNvbmZpZykucmVkdWNlKFxuICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtrZXldOiBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhzY29wZSwgdmFsdWUsIGAke3BhdGh9LiR7a2V5fWApLFxuICAgICAgfSksXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrPixcbiAgICApO1xuXG4gICAgLy8gR2V0IHR5cGUgb2YgdGhpcyBwYXJ0IG9mIHRoZSBjb25maWdcbiAgICBjb25zdCBhdHRyaWJ1dGVUeXBlID0gZ2V0VHlwZUF0UGF0aChzY29wZS5wcm92aWRlclNjaGVtYSwgcGF0aCk7XG4gICAgY29uc3QgcmVxdWlyZWRBdHRyaWJ1dGVzID0gZ2V0UmVxdWlyZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZVR5cGUpO1xuXG4gICAgLy8gQWRkIGFjY2Vzc29ycyBmb3IgYWxsIHJlcXVpcmVkIGF0dHJpYnV0ZXMgdGhhdCBhcmUgbWlzc2luZ1xuICAgIHJlcXVpcmVkQXR0cmlidXRlcy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbXV0YXRlZFtrZXldO1xuICAgICAgY29uc3QgaXNOb3REaXJlY3RseUFjY2Vzc2libGUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaXNSZXBsYWNlZEJ5QXN0ID1cbiAgICAgICAgKHQuaXNOb2RlKG11dGF0ZWQpICYmIHQuaXNFeHByZXNzaW9uKG11dGF0ZWQpKSB8fFxuICAgICAgICB0LmlzRXhwcmVzc2lvbih2YWx1ZSBhcyBhbnkpO1xuICAgICAgY29uc3QgaXNFbXB0eUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwO1xuXG4gICAgICAvLyBJZiB0aGlzIHdhcyBhbHJlYWR5IHJlcGxhY2VkIGJ5IGFuIEFTVCBub2RlLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgICAvLyBXZSBhc3N1bWUgYWxsIGZpZWxkcyBhcmUgZmlsbGVkIGluIGJ5IHRoZSBBU1RcbiAgICAgIGlmIChpc1JlcGxhY2VkQnlBc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3REaXJlY3RseUFjY2Vzc2libGUgfHwgaXNFbXB0eUFycmF5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldENvbmZpZ0ZpZWxkTmFtZShzY29wZS50b3BMZXZlbENvbmZpZywga2V5KTtcbiAgICAgICAgbXV0YXRlZFtrZXldID0gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgICAgIHQuaWRlbnRpZmllcihcImNvbmZpZ1wiKSxcbiAgICAgICAgICB0LmlkZW50aWZpZXIoZmllbGROYW1lKSxcbiAgICAgICAgKTtcbiAgICAgICAgc2NvcGUudG9wTGV2ZWxDb25maWdbZmllbGROYW1lXSA9IGAke3BhdGh9LiR7a2V5fWA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbXV0YXRlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbnR5cGUgS2V5ID0gc3RyaW5nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcXVpcmVkQXR0cmlidXRlcyhcbiAgYXR0cmlidXRlVHlwZTogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0VHlwZUF0UGF0aD4sXG4pOiBLZXlbXSB7XG4gIGlmICghYXR0cmlidXRlVHlwZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoXG4gICAgdHlwZW9mIGF0dHJpYnV0ZVR5cGUgIT09IFwib2JqZWN0XCIgfHxcbiAgICBBcnJheS5pc0FycmF5KGF0dHJpYnV0ZVR5cGUpIHx8XG4gICAgYXR0cmlidXRlVHlwZSA9PT0gbnVsbCB8fFxuICAgIGF0dHJpYnV0ZVR5cGUgPT09IHVuZGVmaW5lZCB8fFxuICAgICEoXCJibG9ja1wiIGluIGF0dHJpYnV0ZVR5cGUpXG4gICkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHJlcXVpcmVkQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgIGF0dHJpYnV0ZVR5cGUuYmxvY2suYXR0cmlidXRlcyB8fCB7fSxcbiAgKS5yZWR1Y2UoXG4gICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAodmFsdWUucmVxdWlyZWQgPyBbLi4uYWNjLCBrZXldIDogYWNjKSxcbiAgICBbXSBhcyBzdHJpbmdbXSxcbiAgKTtcblxuICAvLyBMb2dpYyB0YWtlbiBmcm9tIChhbmQgc2hvdWxkIGJlIHNoYXJlZCB3aXRoKSBwcm92aWRlciBnZW5lcmF0b3IgcmVzb3VyY2UgcGFyc2VyOiBhdHRyaWJ1dGVGb3JCbG9ja1R5cGVcbiAgY29uc3QgcmVxdWlyZWRCbG9ja1R5cGVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgYXR0cmlidXRlVHlwZS5ibG9jay5ibG9ja190eXBlcyB8fCB7fSxcbiAgKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUubmVzdGluZ19tb2RlID09PSBcInNpbmdsZVwiICYmXG4gICAgICAhT2JqZWN0LnZhbHVlcyh2YWx1ZS5ibG9jay5hdHRyaWJ1dGVzIHx8IHt9KS5zb21lKCh4KSA9PiAheC5yZXF1aXJlZClcbiAgICApIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBrZXldO1xuICAgIH1cbiAgICBpZiAodmFsdWUubmVzdGluZ19tb2RlID09PSBcIm1hcFwiKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICh2YWx1ZS5uZXN0aW5nX21vZGUgPT09IFwibGlzdFwiIHx8IHZhbHVlLm5lc3RpbmdfbW9kZSA9PT0gXCJzZXRcIikgJiZcbiAgICAgIHZhbHVlLm1pbl9pdGVtcyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiAodmFsdWUgYXMgYW55KS5taW5faXRlbXMgPiAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gWy4uLmFjYywga2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSBhcyBzdHJpbmdbXSk7XG4gIHJldHVybiBbLi4ucmVxdWlyZWRBdHRyaWJ1dGVzLCAuLi5yZXF1aXJlZEJsb2NrVHlwZXNdLnNvcnQoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProviderRequirements = exports.getFullProviderName = void 0;
|
|
4
|
+
function getFullProviderName(schema, providerName) {
|
|
5
|
+
return Object.keys(schema.provider_schemas || {}).find((name) => name.endsWith(providerName));
|
|
6
|
+
}
|
|
7
|
+
exports.getFullProviderName = getFullProviderName;
|
|
8
|
+
function getProviderRequirements(plan) {
|
|
9
|
+
var _a;
|
|
10
|
+
// In Terraform one can implicitly define the provider by using resources of that type
|
|
11
|
+
const explicitProviders = Object.keys(plan.provider || {});
|
|
12
|
+
const implicitProviders = Object.keys({ ...plan.resource, ...plan.data })
|
|
13
|
+
.filter((type) => type !== "terraform_remote_state")
|
|
14
|
+
.filter((type) => type !== "terraform_data")
|
|
15
|
+
.map((type) => type.split("_")[0]);
|
|
16
|
+
const providerRequirements = Array.from(new Set([...explicitProviders, ...implicitProviders])).reduce((carry, req) => ({ ...carry, [req]: "*" }), {});
|
|
17
|
+
(_a = plan.terraform) === null || _a === void 0 ? void 0 : _a.forEach(({ required_providers }) => (required_providers || []).forEach((providerBlock) => Object.entries(providerBlock).forEach(([key, value]) => {
|
|
18
|
+
let name, version;
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
name = key;
|
|
21
|
+
version = value;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
name = value.source;
|
|
25
|
+
version = value.version;
|
|
26
|
+
}
|
|
27
|
+
if (!name) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// implicitly only the last part of the path is used (e.g. docker for kreuzwerker/docker)
|
|
31
|
+
const parts = name.split("/");
|
|
32
|
+
if (parts.length > 1) {
|
|
33
|
+
delete providerRequirements[parts.pop() || ""];
|
|
34
|
+
}
|
|
35
|
+
providerRequirements[name] = version || "*";
|
|
36
|
+
})));
|
|
37
|
+
return providerRequirements;
|
|
38
|
+
}
|
|
39
|
+
exports.getProviderRequirements = getProviderRequirements;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsU0FBZ0IsbUJBQW1CLENBQ2pDLE1BQXNCLEVBQ3RCLFlBQW9CO0lBRXBCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FDNUIsQ0FBQztBQUNKLENBQUM7QUFQRCxrREFPQztBQUdELFNBQWdCLHVCQUF1QixDQUFDLElBQVU7O0lBQ2hELHNGQUFzRjtJQUN0RixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssd0JBQXdCLENBQUM7U0FDbkQsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7U0FDM0MsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNyQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQ3RELENBQUMsTUFBTSxDQUNOLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFDMUMsRUFBNEIsQ0FDN0IsQ0FBQztJQUVGLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsQ0FDakQsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUNuRCxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDckQsSUFBSSxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNYLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFDRCx5RkFBeUY7UUFDekYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxHQUFHLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDO0FBekNELDBEQXlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFByb3ZpZGVyU2NoZW1hLCBCbG9ja1R5cGUsIEF0dHJpYnV0ZSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5cbmV4cG9ydCB7IEJsb2NrVHlwZSwgQXR0cmlidXRlIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsUHJvdmlkZXJOYW1lKFxuICBzY2hlbWE6IFByb3ZpZGVyU2NoZW1hLFxuICBwcm92aWRlck5hbWU6IHN0cmluZyxcbikge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc2NoZW1hLnByb3ZpZGVyX3NjaGVtYXMgfHwge30pLmZpbmQoKG5hbWUpID0+XG4gICAgbmFtZS5lbmRzV2l0aChwcm92aWRlck5hbWUpLFxuICApO1xufVxuXG50eXBlIFBsYW4gPSB6LmluZmVyPHR5cGVvZiBzY2hlbWE+O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3ZpZGVyUmVxdWlyZW1lbnRzKHBsYW46IFBsYW4pIHtcbiAgLy8gSW4gVGVycmFmb3JtIG9uZSBjYW4gaW1wbGljaXRseSBkZWZpbmUgdGhlIHByb3ZpZGVyIGJ5IHVzaW5nIHJlc291cmNlcyBvZiB0aGF0IHR5cGVcbiAgY29uc3QgZXhwbGljaXRQcm92aWRlcnMgPSBPYmplY3Qua2V5cyhwbGFuLnByb3ZpZGVyIHx8IHt9KTtcbiAgY29uc3QgaW1wbGljaXRQcm92aWRlcnMgPSBPYmplY3Qua2V5cyh7IC4uLnBsYW4ucmVzb3VyY2UsIC4uLnBsYW4uZGF0YSB9KVxuICAgIC5maWx0ZXIoKHR5cGUpID0+IHR5cGUgIT09IFwidGVycmFmb3JtX3JlbW90ZV9zdGF0ZVwiKVxuICAgIC5maWx0ZXIoKHR5cGUpID0+IHR5cGUgIT09IFwidGVycmFmb3JtX2RhdGFcIilcbiAgICAubWFwKCh0eXBlKSA9PiB0eXBlLnNwbGl0KFwiX1wiKVswXSk7XG5cbiAgY29uc3QgcHJvdmlkZXJSZXF1aXJlbWVudHMgPSBBcnJheS5mcm9tKFxuICAgIG5ldyBTZXQoWy4uLmV4cGxpY2l0UHJvdmlkZXJzLCAuLi5pbXBsaWNpdFByb3ZpZGVyc10pLFxuICApLnJlZHVjZShcbiAgICAoY2FycnksIHJlcSkgPT4gKHsgLi4uY2FycnksIFtyZXFdOiBcIipcIiB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApO1xuXG4gIHBsYW4udGVycmFmb3JtPy5mb3JFYWNoKCh7IHJlcXVpcmVkX3Byb3ZpZGVycyB9KSA9PlxuICAgIChyZXF1aXJlZF9wcm92aWRlcnMgfHwgW10pLmZvckVhY2goKHByb3ZpZGVyQmxvY2spID0+XG4gICAgICBPYmplY3QuZW50cmllcyhwcm92aWRlckJsb2NrKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgbGV0IG5hbWUsIHZlcnNpb247XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBuYW1lID0ga2V5O1xuICAgICAgICAgIHZlcnNpb24gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuYW1lID0gdmFsdWUuc291cmNlO1xuICAgICAgICAgIHZlcnNpb24gPSB2YWx1ZS52ZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGltcGxpY2l0bHkgb25seSB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBwYXRoIGlzIHVzZWQgKGUuZy4gZG9ja2VyIGZvciBrcmV1endlcmtlci9kb2NrZXIpXG4gICAgICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZGVsZXRlIHByb3ZpZGVyUmVxdWlyZW1lbnRzW3BhcnRzLnBvcCgpIHx8IFwiXCJdO1xuICAgICAgICB9XG4gICAgICAgIHByb3ZpZGVyUmVxdWlyZW1lbnRzW25hbWVdID0gdmVyc2lvbiB8fCBcIipcIjtcbiAgICAgIH0pLFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHByb3ZpZGVyUmVxdWlyZW1lbnRzO1xufVxuIl19
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) HashiCorp, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.findUsedReferences = exports.extractReferencesFromExpression = exports.containsReference = exports.referenceToVariableName = void 0;
|
|
8
|
+
const hcl2json_1 = require("@cdktn/hcl2json");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const variables_1 = require("./variables");
|
|
11
|
+
function referenceToVariableName(scope, ref) {
|
|
12
|
+
const parts = ref.referencee.id.split(".");
|
|
13
|
+
const resource = parts[0] === "data" ? `${parts[0]}.${parts[1]}` : parts[0];
|
|
14
|
+
const name = parts[0] === "data" ? parts[2] : parts[1];
|
|
15
|
+
return (0, variables_1.variableName)(scope, resource, name);
|
|
16
|
+
}
|
|
17
|
+
exports.referenceToVariableName = referenceToVariableName;
|
|
18
|
+
function containsReference(expression) {
|
|
19
|
+
if (!hcl2json_1.TFExpressionSyntaxTree.isScopeTraversalExpression(expression)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const segments = expression.meta.traversal;
|
|
23
|
+
const rootSegment = segments[0].segment;
|
|
24
|
+
const fullAccessor = expression.meta.fullAccessor;
|
|
25
|
+
if (rootSegment === "count" || // count variable
|
|
26
|
+
rootSegment === "each" || // each variable
|
|
27
|
+
// https://www.terraform.io/docs/language/expressions/references.html#filesystem-and-workspace-info
|
|
28
|
+
fullAccessor.startsWith("path.module") ||
|
|
29
|
+
fullAccessor.startsWith("path.root") ||
|
|
30
|
+
fullAccessor.startsWith("path.cwd") ||
|
|
31
|
+
fullAccessor.startsWith("terraform.workspace") ||
|
|
32
|
+
fullAccessor.startsWith("self.") // block local value
|
|
33
|
+
) {
|
|
34
|
+
utils_1.logger.debug(`skipping ${fullAccessor}`);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
exports.containsReference = containsReference;
|
|
40
|
+
async function extractReferencesFromExpression(input, nodeIds, scopedIds = []) {
|
|
41
|
+
utils_1.logger.debug(`extractReferencesFromExpression(${input})`);
|
|
42
|
+
const possibleVariableSpots = await (0, hcl2json_1.getReferencesInExpression)("main.tf", input);
|
|
43
|
+
utils_1.logger.debug(`found possible variable spots: ${JSON.stringify(possibleVariableSpots)}`);
|
|
44
|
+
return possibleVariableSpots.reduce((carry, spot) => {
|
|
45
|
+
const { value, startPosition, endPosition } = spot;
|
|
46
|
+
// no reference
|
|
47
|
+
if (!value.includes(".") || // just a literal
|
|
48
|
+
value.startsWith(".") || // dangling property access
|
|
49
|
+
value.endsWith("...") || // spread (likely in for loop)
|
|
50
|
+
value.startsWith("count.") || // count variable
|
|
51
|
+
value.startsWith("each.") || // each variable
|
|
52
|
+
// https://www.terraform.io/docs/language/expressions/references.html#filesystem-and-workspace-info
|
|
53
|
+
value.startsWith("path.module") ||
|
|
54
|
+
value.startsWith("path.root") ||
|
|
55
|
+
value.startsWith("path.cwd") ||
|
|
56
|
+
value.startsWith("terraform.workspace") ||
|
|
57
|
+
value.startsWith("self.") // block local value
|
|
58
|
+
) {
|
|
59
|
+
utils_1.logger.debug(`skipping ${value}`);
|
|
60
|
+
return carry;
|
|
61
|
+
}
|
|
62
|
+
const referenceParts = value.split(".");
|
|
63
|
+
utils_1.logger.debug(`Searching for node id '${value}' in ${JSON.stringify(nodeIds)}`);
|
|
64
|
+
const corespondingNodeId = [...nodeIds, ...scopedIds].find((id) => {
|
|
65
|
+
const parts = id.split(".");
|
|
66
|
+
const matchesFirst = parts[0] === referenceParts[0];
|
|
67
|
+
const matchesFirstTwo = matchesFirst &&
|
|
68
|
+
(parts[1] === referenceParts[1] || referenceParts.length === 1);
|
|
69
|
+
return (matchesFirstTwo &&
|
|
70
|
+
(parts[0] === "data" ? parts[2] === referenceParts[2] : true));
|
|
71
|
+
});
|
|
72
|
+
if (!corespondingNodeId) {
|
|
73
|
+
// This is most likely a false positive, so we just ignore it
|
|
74
|
+
// We include the log below to help debugging
|
|
75
|
+
utils_1.logger.error(`Found a reference that is unknown: ${input} has reference "${value}".The id was not found in ${JSON.stringify(nodeIds)} with temporary values ${JSON.stringify(scopedIds)}.
|
|
76
|
+
${utils_1.leaveCommentText}`);
|
|
77
|
+
return carry;
|
|
78
|
+
}
|
|
79
|
+
if (scopedIds.includes(corespondingNodeId)) {
|
|
80
|
+
utils_1.logger.debug(`skipping '${value}' since it's a scoped variable`);
|
|
81
|
+
return carry;
|
|
82
|
+
}
|
|
83
|
+
utils_1.logger.debug(`Found node id '${corespondingNodeId}'`);
|
|
84
|
+
const spotParts = value.split(".");
|
|
85
|
+
let isThereANumericAccessor = false;
|
|
86
|
+
const referenceSpotParts = spotParts.filter((part) => {
|
|
87
|
+
if (!Number.isNaN(parseInt(part, 10))) {
|
|
88
|
+
isThereANumericAccessor = true;
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return !isThereANumericAccessor;
|
|
92
|
+
});
|
|
93
|
+
const fullReference = isThereANumericAccessor
|
|
94
|
+
? referenceSpotParts.slice(0, 2).join(".")
|
|
95
|
+
: value;
|
|
96
|
+
const isVariable = value.startsWith("var.");
|
|
97
|
+
const useFqn =
|
|
98
|
+
// Can not use FQN on vars
|
|
99
|
+
!isVariable &&
|
|
100
|
+
// Can not use FQN on locals
|
|
101
|
+
!value.startsWith("local.") &&
|
|
102
|
+
// If the following character is
|
|
103
|
+
(input.substr(endPosition + 1, 1) === "*" || // a * (splat) we need to use the FQN
|
|
104
|
+
input.substr(endPosition, 1) === "[" || // a property access
|
|
105
|
+
isThereANumericAccessor); // a numeric access
|
|
106
|
+
const ref = {
|
|
107
|
+
start: startPosition,
|
|
108
|
+
end: endPosition,
|
|
109
|
+
referencee: {
|
|
110
|
+
id: corespondingNodeId,
|
|
111
|
+
full: fullReference,
|
|
112
|
+
},
|
|
113
|
+
useFqn,
|
|
114
|
+
isVariable,
|
|
115
|
+
};
|
|
116
|
+
utils_1.logger.debug(`Found reference ${JSON.stringify(ref)}`);
|
|
117
|
+
return [...carry, ref];
|
|
118
|
+
}, []);
|
|
119
|
+
}
|
|
120
|
+
exports.extractReferencesFromExpression = extractReferencesFromExpression;
|
|
121
|
+
async function findUsedReferences(nodeIds, item) {
|
|
122
|
+
utils_1.logger.debug(`findUsedReferences(${nodeIds}, ${item})`);
|
|
123
|
+
if (typeof item === "string") {
|
|
124
|
+
return await extractReferencesFromExpression(item, nodeIds, []);
|
|
125
|
+
}
|
|
126
|
+
if (typeof item !== "object" || item === null || item === undefined) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
if (Array.isArray(item)) {
|
|
130
|
+
return (await Promise.all(item.map((i) => findUsedReferences(nodeIds, i)))).flat();
|
|
131
|
+
}
|
|
132
|
+
if (item && "dynamic" in item) {
|
|
133
|
+
const dyn = item["dynamic"];
|
|
134
|
+
const { for_each: _for_each, ...others } = dyn;
|
|
135
|
+
const dynamicRef = Object.keys(others)[0];
|
|
136
|
+
return await findUsedReferences([...nodeIds, dynamicRef], dyn);
|
|
137
|
+
}
|
|
138
|
+
return (await Promise.all(Object.values(item).map((i) => findUsedReferences(nodeIds, i)))).flat();
|
|
139
|
+
}
|
|
140
|
+
exports.findUsedReferences = findUsedReferences;
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWZlcmVuY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDhDQUd5QjtBQUN6QixtQ0FBbUQ7QUFFbkQsMkNBQTJDO0FBRTNDLFNBQWdCLHVCQUF1QixDQUNyQyxLQUFtQixFQUNuQixHQUFjO0lBRWQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFBLHdCQUFZLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBUkQsMERBUUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxVQUE4QjtJQUM5RCxJQUFJLENBQUMsaUNBQUcsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsVUFB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QyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLENBQ0wsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25ELGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDL0IsQ0FDRixDQUNGLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWCxDQUFDO0FBakNELGdEQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtcbiAgZ2V0UmVmZXJlbmNlc0luRXhwcmVzc2lvbixcbiAgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXgsXG59IGZyb20gXCJAY2RrdG4vaGNsMmpzb25cIjtcbmltcG9ydCB7IGxlYXZlQ29tbWVudFRleHQsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUsIFJlZmVyZW5jZSwgVGVycmFmb3JtUmVzb3VyY2VCbG9jayB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWUgfSBmcm9tIFwiLi92YXJpYWJsZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvVmFyaWFibGVOYW1lKFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICByZWY6IFJlZmVyZW5jZSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gcmVmLnJlZmVyZW5jZWUuaWQuc3BsaXQoXCIuXCIpO1xuICBjb25zdCByZXNvdXJjZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IGAke3BhcnRzWzBdfS4ke3BhcnRzWzFdfWAgOiBwYXJ0c1swXTtcbiAgY29uc3QgbmFtZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIiA/IHBhcnRzWzJdIDogcGFydHNbMV07XG4gIHJldHVybiB2YXJpYWJsZU5hbWUoc2NvcGUsIHJlc291cmNlLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zUmVmZXJlbmNlKGV4cHJlc3Npb246IHRleC5FeHByZXNzaW9uVHlwZSkge1xuICBpZiAoIXRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gZXhwcmVzc2lvbi5tZXRhLnRyYXZlcnNhbDtcbiAgY29uc3Qgcm9vdFNlZ21lbnQgPSBzZWdtZW50c1swXS5zZWdtZW50O1xuICBjb25zdCBmdWxsQWNjZXNzb3IgPSBleHByZXNzaW9uLm1ldGEuZnVsbEFjY2Vzc29yO1xuXG4gIGlmIChcbiAgICByb290U2VnbWVudCA9PT0gXCJjb3VudFwiIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgcm9vdFNlZ21lbnQgPT09IFwiZWFjaFwiIHx8IC8vIGVhY2ggdmFyaWFibGVcbiAgICAvLyBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vZG9jcy9sYW5ndWFnZS9leHByZXNzaW9ucy9yZWZlcmVuY2VzLmh0bWwjZmlsZXN5c3RlbS1hbmQtd29ya3NwYWNlLWluZm9cbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGgubW9kdWxlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICBmdWxsQWNjZXNzb3Iuc3RhcnRzV2l0aChcInBhdGguY3dkXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJ0ZXJyYWZvcm0ud29ya3NwYWNlXCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICApIHtcbiAgICBsb2dnZXIuZGVidWcoYHNraXBwaW5nICR7ZnVsbEFjY2Vzc29yfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihcbiAgaW5wdXQ6IHN0cmluZyxcbiAgbm9kZUlkczogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHNjb3BlZElkczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXSwgLy8gZHluYW1pY3MgaW50cm9kdWNlIG5ldyBzY29wZWQgdmFyaWFibGVzIHRoYXQgYXJlIG5vdCB0aGUgZ2xvYmFsbHkgYWNjZXNzaWJsZSBpZHNcbik6IFByb21pc2U8UmVmZXJlbmNlW10+IHtcbiAgbG9nZ2VyLmRlYnVnKGBleHRyYWN0UmVmZXJlbmNlc0Zyb21FeHByZXNzaW9uKCR7aW5wdXR9KWApO1xuICBjb25zdCBwb3NzaWJsZVZhcmlhYmxlU3BvdHMgPSBhd2FpdCBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uKFxuICAgIFwibWFpbi50ZlwiLFxuICAgIGlucHV0LFxuICApO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgZm91bmQgcG9zc2libGUgdmFyaWFibGUgc3BvdHM6ICR7SlNPTi5zdHJpbmdpZnkocG9zc2libGVWYXJpYWJsZVNwb3RzKX1gLFxuICApO1xuXG4gIHJldHVybiBwb3NzaWJsZVZhcmlhYmxlU3BvdHMucmVkdWNlKChjYXJyeSwgc3BvdCkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uIH0gPSBzcG90O1xuICAgIC8vIG5vIHJlZmVyZW5jZVxuICAgIGlmIChcbiAgICAgICF2YWx1ZS5pbmNsdWRlcyhcIi5cIikgfHwgLy8ganVzdCBhIGxpdGVyYWxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IC8vIGRhbmdsaW5nIHByb3BlcnR5IGFjY2Vzc1xuICAgICAgdmFsdWUuZW5kc1dpdGgoXCIuLi5cIikgfHwgLy8gc3ByZWFkIChsaWtlbHkgaW4gZm9yIGxvb3ApXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiY291bnQuXCIpIHx8IC8vIGNvdW50IHZhcmlhYmxlXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiZWFjaC5cIikgfHwgLy8gZWFjaCB2YXJpYWJsZVxuICAgICAgLy8gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvcmVmZXJlbmNlcy5odG1sI2ZpbGVzeXN0ZW0tYW5kLXdvcmtzcGFjZS1pbmZvXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5tb2R1bGVcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLnJvb3RcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJwYXRoLmN3ZFwiKSB8fFxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcInRlcnJhZm9ybS53b3Jrc3BhY2VcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJzZWxmLlwiKSAvLyBibG9jayBsb2NhbCB2YWx1ZVxuICAgICkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAke3ZhbHVlfWApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZmVyZW5jZVBhcnRzID0gdmFsdWUuc3BsaXQoXCIuXCIpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFNlYXJjaGluZyBmb3Igbm9kZSBpZCAnJHt2YWx1ZX0nIGluICR7SlNPTi5zdHJpbmdpZnkobm9kZUlkcyl9YCxcbiAgICApO1xuICAgIGNvbnN0IGNvcmVzcG9uZGluZ05vZGVJZCA9IFsuLi5ub2RlSWRzLCAuLi5zY29wZWRJZHNdLmZpbmQoKGlkKSA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGlkLnNwbGl0KFwiLlwiKTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdCA9IHBhcnRzWzBdID09PSByZWZlcmVuY2VQYXJ0c1swXTtcbiAgICAgIGNvbnN0IG1hdGNoZXNGaXJzdFR3byA9XG4gICAgICAgIG1hdGNoZXNGaXJzdCAmJlxuICAgICAgICAocGFydHNbMV0gPT09IHJlZmVyZW5jZVBhcnRzWzFdIHx8IHJlZmVyZW5jZVBhcnRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIG1hdGNoZXNGaXJzdFR3byAmJlxuICAgICAgICAocGFydHNbMF0gPT09IFwiZGF0YVwiID8gcGFydHNbMl0gPT09IHJlZmVyZW5jZVBhcnRzWzJdIDogdHJ1ZSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvcmVzcG9uZGluZ05vZGVJZCkge1xuICAgICAgLy8gVGhpcyBpcyBtb3N0IGxpa2VseSBhIGZhbHNlIHBvc2l0aXZlLCBzbyB3ZSBqdXN0IGlnbm9yZSBpdFxuICAgICAgLy8gV2UgaW5jbHVkZSB0aGUgbG9nIGJlbG93IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGb3VuZCBhIHJlZmVyZW5jZSB0aGF0IGlzIHVua25vd246ICR7aW5wdXR9IGhhcyByZWZlcmVuY2UgXCIke3ZhbHVlfVwiLlRoZSBpZCB3YXMgbm90IGZvdW5kIGluICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgbm9kZUlkcyxcbiAgICAgICAgKX0gd2l0aCB0ZW1wb3JhcnkgdmFsdWVzICR7SlNPTi5zdHJpbmdpZnkoc2NvcGVkSWRzKX0uXG4ke2xlYXZlQ29tbWVudFRleHR9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHNjb3BlZElkcy5pbmNsdWRlcyhjb3Jlc3BvbmRpbmdOb2RlSWQpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYHNraXBwaW5nICcke3ZhbHVlfScgc2luY2UgaXQncyBhIHNjb3BlZCB2YXJpYWJsZWApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYEZvdW5kIG5vZGUgaWQgJyR7Y29yZXNwb25kaW5nTm9kZUlkfSdgKTtcblxuICAgIGNvbnN0IHNwb3RQYXJ0cyA9IHZhbHVlLnNwbGl0KFwiLlwiKTtcbiAgICBsZXQgaXNUaGVyZUFOdW1lcmljQWNjZXNzb3IgPSBmYWxzZTtcbiAgICBjb25zdCByZWZlcmVuY2VTcG90UGFydHMgPSBzcG90UGFydHMuZmlsdGVyKChwYXJ0KSA9PiB7XG4gICAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZUludChwYXJ0LCAxMCkpKSB7XG4gICAgICAgIGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yO1xuICAgIH0pO1xuICAgIGNvbnN0IGZ1bGxSZWZlcmVuY2UgPSBpc1RoZXJlQU51bWVyaWNBY2Nlc3NvclxuICAgICAgPyByZWZlcmVuY2VTcG90UGFydHMuc2xpY2UoMCwgMikuam9pbihcIi5cIilcbiAgICAgIDogdmFsdWU7XG5cbiAgICBjb25zdCBpc1ZhcmlhYmxlID0gdmFsdWUuc3RhcnRzV2l0aChcInZhci5cIik7XG4gICAgY29uc3QgdXNlRnFuID1cbiAgICAgIC8vIENhbiBub3QgdXNlIEZRTiBvbiB2YXJzXG4gICAgICAhaXNWYXJpYWJsZSAmJlxuICAgICAgLy8gQ2FuIG5vdCB1c2UgRlFOIG9uIGxvY2Fsc1xuICAgICAgIXZhbHVlLnN0YXJ0c1dpdGgoXCJsb2NhbC5cIikgJiZcbiAgICAgIC8vIElmIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIGlzXG4gICAgICAoaW5wdXQuc3Vic3RyKGVuZFBvc2l0aW9uICsgMSwgMSkgPT09IFwiKlwiIHx8IC8vIGEgKiAoc3BsYXQpIHdlIG5lZWQgdG8gdXNlIHRoZSBGUU5cbiAgICAgICAgaW5wdXQuc3Vic3RyKGVuZFBvc2l0aW9uLCAxKSA9PT0gXCJbXCIgfHwgLy8gYSBwcm9wZXJ0eSBhY2Nlc3NcbiAgICAgICAgaXNUaGVyZUFOdW1lcmljQWNjZXNzb3IpOyAvLyBhIG51bWVyaWMgYWNjZXNzXG5cbiAgICBjb25zdCByZWY6IFJlZmVyZW5jZSA9IHtcbiAgICAgIHN0YXJ0OiBzdGFydFBvc2l0aW9uLFxuICAgICAgZW5kOiBlbmRQb3NpdGlvbixcbiAgICAgIHJlZmVyZW5jZWU6IHtcbiAgICAgICAgaWQ6IGNvcmVzcG9uZGluZ05vZGVJZCxcbiAgICAgICAgZnVsbDogZnVsbFJlZmVyZW5jZSxcbiAgICAgIH0sXG4gICAgICB1c2VGcW4sXG4gICAgICBpc1ZhcmlhYmxlLFxuICAgIH07XG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCByZWZlcmVuY2UgJHtKU09OLnN0cmluZ2lmeShyZWYpfWApO1xuICAgIHJldHVybiBbLi4uY2FycnksIHJlZl07XG4gIH0sIFtdIGFzIFJlZmVyZW5jZVtdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRVc2VkUmVmZXJlbmNlcyhcbiAgbm9kZUlkczogc3RyaW5nW10sXG4gIGl0ZW06IFRlcnJhZm9ybVJlc291cmNlQmxvY2ssXG4pOiBQcm9taXNlPFJlZmVyZW5jZVtdPiB7XG4gIGxvZ2dlci5kZWJ1ZyhgZmluZFVzZWRSZWZlcmVuY2VzKCR7bm9kZUlkc30sICR7aXRlbX0pYCk7XG4gIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBhd2FpdCBleHRyYWN0UmVmZXJlbmNlc0Zyb21FeHByZXNzaW9uKGl0ZW0sIG5vZGVJZHMsIFtdKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaXRlbSAhPT0gXCJvYmplY3RcIiB8fCBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGl0ZW0ubWFwKChpKSA9PiBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgaSkpKVxuICAgICkuZmxhdCgpO1xuICB9XG5cbiAgaWYgKGl0ZW0gJiYgXCJkeW5hbWljXCIgaW4gaXRlbSkge1xuICAgIGNvbnN0IGR5biA9IChpdGVtIGFzIGFueSlbXCJkeW5hbWljXCJdO1xuICAgIGNvbnN0IHsgZm9yX2VhY2g6IF9mb3JfZWFjaCwgLi4ub3RoZXJzIH0gPSBkeW47XG4gICAgY29uc3QgZHluYW1pY1JlZiA9IE9iamVjdC5rZXlzKG90aGVycylbMF07XG4gICAgcmV0dXJuIGF3YWl0IGZpbmRVc2VkUmVmZXJlbmNlcyhbLi4ubm9kZUlkcywgZHluYW1pY1JlZl0sIGR5bik7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhpdGVtIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLm1hcCgoaSkgPT5cbiAgICAgICAgZmluZFVzZWRSZWZlcmVuY2VzKG5vZGVJZHMsIGkpLFxuICAgICAgKSxcbiAgICApXG4gICkuZmxhdCgpO1xufVxuIl19
|
package/build/schema.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
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.schema = void 0;
|
|
27
|
+
// Copyright (c) HashiCorp, Inc
|
|
28
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
29
|
+
const z = __importStar(require("zod"));
|
|
30
|
+
const tfObject = (config) => z.array(z.object(config).partial());
|
|
31
|
+
const outputConfig = tfObject({
|
|
32
|
+
value: z.any(),
|
|
33
|
+
description: z.string().optional(),
|
|
34
|
+
sensitive: z.boolean().optional(),
|
|
35
|
+
depends_on: z.string().optional(),
|
|
36
|
+
});
|
|
37
|
+
const validationConfig = z.object({
|
|
38
|
+
error_message: z.string(),
|
|
39
|
+
condition: z.any(),
|
|
40
|
+
});
|
|
41
|
+
const variableConfig = tfObject({
|
|
42
|
+
type: z.string(),
|
|
43
|
+
default: z.any(),
|
|
44
|
+
description: z.string(),
|
|
45
|
+
sensitive: z.boolean(),
|
|
46
|
+
nullable: z.boolean().optional(),
|
|
47
|
+
validation: z.array(validationConfig).optional(),
|
|
48
|
+
});
|
|
49
|
+
const providerConfig = z.array(z.record(z.any()));
|
|
50
|
+
const moduleConfig = z.array(z.object({ source: z.string() }).nonstrict());
|
|
51
|
+
const resourceConfig = z.array(z.record(z.any()));
|
|
52
|
+
const importConfig = z.object({
|
|
53
|
+
to: z.string(),
|
|
54
|
+
id: z.string(),
|
|
55
|
+
provider: z.any().optional(),
|
|
56
|
+
});
|
|
57
|
+
const providerSpecification = z.union([
|
|
58
|
+
z.object({ source: z.string(), version: z.string() }).partial(),
|
|
59
|
+
z.string(),
|
|
60
|
+
]);
|
|
61
|
+
const terraformConfig = z
|
|
62
|
+
.object({
|
|
63
|
+
required_version: z.string(),
|
|
64
|
+
required_providers: z.array(z.record(providerSpecification)),
|
|
65
|
+
backend: z.record(z.array(z.record(z.any()))),
|
|
66
|
+
})
|
|
67
|
+
.partial();
|
|
68
|
+
exports.schema = z
|
|
69
|
+
.object({
|
|
70
|
+
data: z.record(z.record(resourceConfig)),
|
|
71
|
+
import: z.array(importConfig),
|
|
72
|
+
locals: z.array(z.record(z.any())),
|
|
73
|
+
module: z.record(moduleConfig),
|
|
74
|
+
output: z.record(outputConfig),
|
|
75
|
+
provider: z.record(providerConfig),
|
|
76
|
+
resource: z.record(z.record(resourceConfig)),
|
|
77
|
+
terraform: z.array(terraformConfig),
|
|
78
|
+
variable: z.record(variableConfig),
|
|
79
|
+
})
|
|
80
|
+
.partial();
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsdUNBQXlCO0FBRXpCLE1BQU0sUUFBUSxHQUFHLENBQTBCLE1BQVMsRUFBRSxFQUFFLENBQ3RELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBRXRDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUM1QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2xDLENBQUMsQ0FBQztBQUdILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN6QixTQUFTLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtDQUNuQixDQUFDLENBQUM7QUFFSCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDaEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkIsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDakQsQ0FBQyxDQUFDO0FBR0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFHbEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUczRSxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUlsRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDZCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM3QixDQUFDLENBQUM7QUFHSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQy9ELENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDWCxDQUFDLENBQUM7QUFFSCxNQUFNLGVBQWUsR0FBRyxDQUFDO0tBQ3RCLE1BQU0sQ0FBQztJQUNOLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDNUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDNUQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDOUMsQ0FBQztLQUNELE9BQU8sRUFBRSxDQUFDO0FBR0EsUUFBQSxNQUFNLEdBQUcsQ0FBQztLQUNwQixNQUFNLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUM3QixNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUM5QixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDOUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ2xDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQ25DLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUNuQyxDQUFDO0tBQ0QsT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IHRmT2JqZWN0ID0gPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihjb25maWc6IFQpID0+XG4gIHouYXJyYXkoei5vYmplY3QoY29uZmlnKS5wYXJ0aWFsKCkpO1xuXG5jb25zdCBvdXRwdXRDb25maWcgPSB0Zk9iamVjdCh7XG4gIHZhbHVlOiB6LmFueSgpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzZW5zaXRpdmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGRlcGVuZHNfb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0gei5pbmZlcjx0eXBlb2Ygb3V0cHV0Q29uZmlnPjtcblxuY29uc3QgdmFsaWRhdGlvbkNvbmZpZyA9IHoub2JqZWN0KHtcbiAgZXJyb3JfbWVzc2FnZTogei5zdHJpbmcoKSxcbiAgY29uZGl0aW9uOiB6LmFueSgpLFxufSk7XG5cbmNvbnN0IHZhcmlhYmxlQ29uZmlnID0gdGZPYmplY3Qoe1xuICB0eXBlOiB6LnN0cmluZygpLFxuICBkZWZhdWx0OiB6LmFueSgpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKSxcbiAgc2Vuc2l0aXZlOiB6LmJvb2xlYW4oKSxcbiAgbnVsbGFibGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHZhbGlkYXRpb246IHouYXJyYXkodmFsaWRhdGlvbkNvbmZpZykub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVmFyaWFibGUgPSB6LmluZmVyPHR5cGVvZiB2YXJpYWJsZUNvbmZpZz47XG5cbmNvbnN0IHByb3ZpZGVyQ29uZmlnID0gei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSk7XG5leHBvcnQgdHlwZSBQcm92aWRlciA9IHouaW5mZXI8dHlwZW9mIHByb3ZpZGVyQ29uZmlnPjtcblxuY29uc3QgbW9kdWxlQ29uZmlnID0gei5hcnJheSh6Lm9iamVjdCh7IHNvdXJjZTogei5zdHJpbmcoKSB9KS5ub25zdHJpY3QoKSk7XG5leHBvcnQgdHlwZSBNb2R1bGUgPSB6LmluZmVyPHR5cGVvZiBtb2R1bGVDb25maWc+O1xuXG5jb25zdCByZXNvdXJjZUNvbmZpZyA9IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpO1xuZXhwb3J0IHR5cGUgUmVzb3VyY2UgPSB6LmluZmVyPHR5cGVvZiByZXNvdXJjZUNvbmZpZz47XG5leHBvcnQgdHlwZSBEYXRhID0gUmVzb3VyY2U7XG5cbmNvbnN0IGltcG9ydENvbmZpZyA9IHoub2JqZWN0KHtcbiAgdG86IHouc3RyaW5nKCksXG4gIGlkOiB6LnN0cmluZygpLFxuICBwcm92aWRlcjogei5hbnkoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBJbXBvcnQgPSB6LmluZmVyPHR5cGVvZiBpbXBvcnRDb25maWc+O1xuXG5jb25zdCBwcm92aWRlclNwZWNpZmljYXRpb24gPSB6LnVuaW9uKFtcbiAgei5vYmplY3QoeyBzb3VyY2U6IHouc3RyaW5nKCksIHZlcnNpb246IHouc3RyaW5nKCkgfSkucGFydGlhbCgpLFxuICB6LnN0cmluZygpLFxuXSk7XG5cbmNvbnN0IHRlcnJhZm9ybUNvbmZpZyA9IHpcbiAgLm9iamVjdCh7XG4gICAgcmVxdWlyZWRfdmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICByZXF1aXJlZF9wcm92aWRlcnM6IHouYXJyYXkoei5yZWNvcmQocHJvdmlkZXJTcGVjaWZpY2F0aW9uKSksXG4gICAgYmFja2VuZDogei5yZWNvcmQoei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSkpLFxuICB9KVxuICAucGFydGlhbCgpO1xuZXhwb3J0IHR5cGUgVGVycmFmb3JtQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgdGVycmFmb3JtQ29uZmlnPjtcblxuZXhwb3J0IGNvbnN0IHNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZGF0YTogei5yZWNvcmQoei5yZWNvcmQocmVzb3VyY2VDb25maWcpKSxcbiAgICBpbXBvcnQ6IHouYXJyYXkoaW1wb3J0Q29uZmlnKSxcbiAgICBsb2NhbHM6IHouYXJyYXkoei5yZWNvcmQoei5hbnkoKSkpLFxuICAgIG1vZHVsZTogei5yZWNvcmQobW9kdWxlQ29uZmlnKSxcbiAgICBvdXRwdXQ6IHoucmVjb3JkKG91dHB1dENvbmZpZyksXG4gICAgcHJvdmlkZXI6IHoucmVjb3JkKHByb3ZpZGVyQ29uZmlnKSxcbiAgICByZXNvdXJjZTogei5yZWNvcmQoei5yZWNvcmQocmVzb3VyY2VDb25maWcpKSxcbiAgICB0ZXJyYWZvcm06IHouYXJyYXkodGVycmFmb3JtQ29uZmlnKSxcbiAgICB2YXJpYWJsZTogei5yZWNvcmQodmFyaWFibGVDb25maWcpLFxuICB9KVxuICAucGFydGlhbCgpO1xuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"providers": [
|
|
3
|
+
"aws",
|
|
4
|
+
"datadog",
|
|
5
|
+
"pagerduty",
|
|
6
|
+
"azurerm",
|
|
7
|
+
"google",
|
|
8
|
+
"docker",
|
|
9
|
+
"random",
|
|
10
|
+
"kubernetes",
|
|
11
|
+
"null",
|
|
12
|
+
"vault",
|
|
13
|
+
"github",
|
|
14
|
+
"azuread",
|
|
15
|
+
"archive",
|
|
16
|
+
"google-beta",
|
|
17
|
+
"kubectl",
|
|
18
|
+
"cloudflare",
|
|
19
|
+
"signalfx",
|
|
20
|
+
"openstack",
|
|
21
|
+
"external",
|
|
22
|
+
"template"
|
|
23
|
+
]
|
|
24
|
+
}
|