@cdktn/hcl2cdk 0.21.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/README.md +95 -0
- package/ambient.d.ts +14 -0
- package/jest.config.js +16 -0
- package/lib/__tests__/coerceType.test.d.ts +2 -0
- package/lib/__tests__/coerceType.test.js +165 -0
- package/lib/__tests__/expressionToTs.test.d.ts +6 -0
- package/lib/__tests__/expressionToTs.test.js +693 -0
- package/lib/__tests__/expressions.test.d.ts +4 -0
- package/lib/__tests__/expressions.test.js +415 -0
- package/lib/__tests__/findExpressionType.test.d.ts +6 -0
- package/lib/__tests__/findExpressionType.test.js +105 -0
- package/lib/__tests__/functions.test.d.ts +6 -0
- package/lib/__tests__/functions.test.js +605 -0
- package/lib/__tests__/generation.test.d.ts +6 -0
- package/lib/__tests__/generation.test.js +45 -0
- package/lib/__tests__/jsii-rosetta-workarounds.test.d.ts +2 -0
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/lib/__tests__/partialCode.test.d.ts +6 -0
- package/lib/__tests__/partialCode.test.js +390 -0
- package/lib/__tests__/terraformSchema.test.d.ts +6 -0
- package/lib/__tests__/terraformSchema.test.js +105 -0
- package/lib/__tests__/testHelpers.d.ts +7 -0
- package/lib/__tests__/testHelpers.js +16 -0
- package/lib/coerceType.d.ts +7 -0
- package/lib/coerceType.js +240 -0
- package/lib/dynamic-blocks.d.ts +8 -0
- package/lib/dynamic-blocks.js +44 -0
- package/lib/expressions.d.ts +9 -0
- package/lib/expressions.js +634 -0
- package/lib/function-bindings/functions.d.ts +31 -0
- package/lib/function-bindings/functions.generated.d.ts +806 -0
- package/lib/function-bindings/functions.generated.js +1142 -0
- package/lib/function-bindings/functions.js +73 -0
- package/lib/generation.d.ts +26 -0
- package/lib/generation.js +676 -0
- package/lib/index.d.ts +136 -0
- package/lib/index.js +364 -0
- package/lib/iteration.d.ts +23 -0
- package/lib/iteration.js +87 -0
- package/lib/jsii-rosetta-workarounds.d.ts +5 -0
- package/lib/jsii-rosetta-workarounds.js +126 -0
- package/lib/partialCode.d.ts +11 -0
- package/lib/partialCode.js +116 -0
- package/lib/provider.d.ts +8 -0
- package/lib/provider.js +40 -0
- package/lib/references.d.ts +11 -0
- package/lib/references.js +141 -0
- package/lib/schema.d.ts +297 -0
- package/lib/schema.js +81 -0
- package/lib/telemetryAllowList.json +24 -0
- package/lib/terraformSchema.d.ts +6 -0
- package/lib/terraformSchema.js +136 -0
- package/lib/types.d.ts +50 -0
- package/lib/types.js +3 -0
- package/lib/utils.d.ts +6 -0
- package/lib/utils.js +25 -0
- package/lib/variables.d.ts +10 -0
- package/lib/variables.js +172 -0
- package/package.json +71 -0
- package/package.sh +9 -0
- package/tsconfig.json +42 -0
|
@@ -0,0 +1,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, ...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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsOENBR3lCO0FBQ3pCLG1DQUFtRDtBQUVuRCwyQ0FBMkM7QUFFM0MsU0FBZ0IsdUJBQXVCLENBQ3JDLEtBQW1CLEVBQ25CLEdBQWM7SUFFZCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLElBQUEsd0JBQVksRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFSRCwwREFRQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLFVBQThCO0lBQzlELElBQUksQ0FBQyxpQ0FBRyxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMs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O0lBRUQsT0FBTyxDQUNMLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsTUFBTSxDQUFDLElBQTJCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuRCxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQy9CLENBQ0YsQ0FDRixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQztBQWpDRCxnREFpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGdldFJlZmVyZW5jZXNJbkV4cHJlc3Npb24sXG4gIFRGRXhwcmVzc2lvblN5bnRheFRyZWUgYXMgdGV4LFxufSBmcm9tIFwiQGNka3RuL2hjbDJqc29uXCI7XG5pbXBvcnQgeyBsZWF2ZUNvbW1lbnRUZXh0LCBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgUHJvZ3JhbVNjb3BlLCBSZWZlcmVuY2UsIFRlcnJhZm9ybVJlc291cmNlQmxvY2sgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1ZhcmlhYmxlTmFtZShcbiAgc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgcmVmOiBSZWZlcmVuY2UsXG4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHJlZi5yZWZlcmVuY2VlLmlkLnNwbGl0KFwiLlwiKTtcbiAgY29uc3QgcmVzb3VyY2UgPSBwYXJ0c1swXSA9PT0gXCJkYXRhXCIgPyBgJHtwYXJ0c1swXX0uJHtwYXJ0c1sxXX1gIDogcGFydHNbMF07XG4gIGNvbnN0IG5hbWUgPSBwYXJ0c1swXSA9PT0gXCJkYXRhXCIgPyBwYXJ0c1syXSA6IHBhcnRzWzFdO1xuICByZXR1cm4gdmFyaWFibGVOYW1lKHNjb3BlLCByZXNvdXJjZSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1JlZmVyZW5jZShleHByZXNzaW9uOiB0ZXguRXhwcmVzc2lvblR5cGUpIHtcbiAgaWYgKCF0ZXguaXNTY29wZVRyYXZlcnNhbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IGV4cHJlc3Npb24ubWV0YS50cmF2ZXJzYWw7XG4gIGNvbnN0IHJvb3RTZWdtZW50ID0gc2VnbWVudHNbMF0uc2VnbWVudDtcbiAgY29uc3QgZnVsbEFjY2Vzc29yID0gZXhwcmVzc2lvbi5tZXRhLmZ1bGxBY2Nlc3NvcjtcblxuICBpZiAoXG4gICAgcm9vdFNlZ21lbnQgPT09IFwiY291bnRcIiB8fCAvLyBjb3VudCB2YXJpYWJsZVxuICAgIHJvb3RTZWdtZW50ID09PSBcImVhY2hcIiB8fCAvLyBlYWNoIHZhcmlhYmxlXG4gICAgLy8gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvcmVmZXJlbmNlcy5odG1sI2ZpbGVzeXN0ZW0tYW5kLXdvcmtzcGFjZS1pbmZvXG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLm1vZHVsZVwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwicGF0aC5yb290XCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLmN3ZFwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwidGVycmFmb3JtLndvcmtzcGFjZVwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwic2VsZi5cIikgLy8gYmxvY2sgbG9jYWwgdmFsdWVcbiAgKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAke2Z1bGxBY2Nlc3Nvcn1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RSZWZlcmVuY2VzRnJvbUV4cHJlc3Npb24oXG4gIGlucHV0OiBzdHJpbmcsXG4gIG5vZGVJZHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBzY29wZWRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW10sIC8vIGR5bmFtaWNzIGludHJvZHVjZSBuZXcgc2NvcGVkIHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgdGhlIGdsb2JhbGx5IGFjY2Vzc2libGUgaWRzXG4pOiBQcm9taXNlPFJlZmVyZW5jZVtdPiB7XG4gIGxvZ2dlci5kZWJ1ZyhgZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbigke2lucHV0fSlgKTtcbiAgY29uc3QgcG9zc2libGVWYXJpYWJsZVNwb3RzID0gYXdhaXQgZ2V0UmVmZXJlbmNlc0luRXhwcmVzc2lvbihcbiAgICBcIm1haW4udGZcIixcbiAgICBpbnB1dCxcbiAgKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYGZvdW5kIHBvc3NpYmxlIHZhcmlhYmxlIHNwb3RzOiAke0pTT04uc3RyaW5naWZ5KHBvc3NpYmxlVmFyaWFibGVTcG90cyl9YCxcbiAgKTtcblxuICByZXR1cm4gcG9zc2libGVWYXJpYWJsZVNwb3RzLnJlZHVjZSgoY2FycnksIHNwb3QpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiB9ID0gc3BvdDtcbiAgICAvLyBubyByZWZlcmVuY2VcbiAgICBpZiAoXG4gICAgICAhdmFsdWUuaW5jbHVkZXMoXCIuXCIpIHx8IC8vIGp1c3QgYSBsaXRlcmFsXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSB8fCAvLyBkYW5nbGluZyBwcm9wZXJ0eSBhY2Nlc3NcbiAgICAgIHZhbHVlLmVuZHNXaXRoKFwiLi4uXCIpIHx8IC8vIHNwcmVhZCAobGlrZWx5IGluIGZvciBsb29wKVxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcImNvdW50LlwiKSB8fCAvLyBjb3VudCB2YXJpYWJsZVxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcImVhY2guXCIpIHx8IC8vIGVhY2ggdmFyaWFibGVcbiAgICAgIC8vIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9kb2NzL2xhbmd1YWdlL2V4cHJlc3Npb25zL3JlZmVyZW5jZXMuaHRtbCNmaWxlc3lzdGVtLWFuZC13b3Jrc3BhY2UtaW5mb1xuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcInBhdGgubW9kdWxlXCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5yb290XCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5jd2RcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJ0ZXJyYWZvcm0ud29ya3NwYWNlXCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwic2VsZi5cIikgLy8gYmxvY2sgbG9jYWwgdmFsdWVcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1Zyhgc2tpcHBpbmcgJHt2YWx1ZX1gKTtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZlcmVuY2VQYXJ0cyA9IHZhbHVlLnNwbGl0KFwiLlwiKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBTZWFyY2hpbmcgZm9yIG5vZGUgaWQgJyR7dmFsdWV9JyBpbiAke0pTT04uc3RyaW5naWZ5KG5vZGVJZHMpfWAsXG4gICAgKTtcbiAgICBjb25zdCBjb3Jlc3BvbmRpbmdOb2RlSWQgPSBbLi4ubm9kZUlkcywgLi4uc2NvcGVkSWRzXS5maW5kKChpZCkgPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBpZC5zcGxpdChcIi5cIik7XG4gICAgICBjb25zdCBtYXRjaGVzRmlyc3QgPSBwYXJ0c1swXSA9PT0gcmVmZXJlbmNlUGFydHNbMF07XG4gICAgICBjb25zdCBtYXRjaGVzRmlyc3RUd28gPVxuICAgICAgICBtYXRjaGVzRmlyc3QgJiZcbiAgICAgICAgKHBhcnRzWzFdID09PSByZWZlcmVuY2VQYXJ0c1sxXSB8fCByZWZlcmVuY2VQYXJ0cy5sZW5ndGggPT09IDEpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBtYXRjaGVzRmlyc3RUd28gJiZcbiAgICAgICAgKHBhcnRzWzBdID09PSBcImRhdGFcIiA/IHBhcnRzWzJdID09PSByZWZlcmVuY2VQYXJ0c1syXSA6IHRydWUpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKCFjb3Jlc3BvbmRpbmdOb2RlSWQpIHtcbiAgICAgIC8vIFRoaXMgaXMgbW9zdCBsaWtlbHkgYSBmYWxzZSBwb3NpdGl2ZSwgc28gd2UganVzdCBpZ25vcmUgaXRcbiAgICAgIC8vIFdlIGluY2x1ZGUgdGhlIGxvZyBiZWxvdyB0byBoZWxwIGRlYnVnZ2luZ1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgRm91bmQgYSByZWZlcmVuY2UgdGhhdCBpcyB1bmtub3duOiAke2lucHV0fSBoYXMgcmVmZXJlbmNlIFwiJHt2YWx1ZX1cIi5UaGUgaWQgd2FzIG5vdCBmb3VuZCBpbiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIG5vZGVJZHMsXG4gICAgICAgICl9IHdpdGggdGVtcG9yYXJ5IHZhbHVlcyAke0pTT04uc3RyaW5naWZ5KHNjb3BlZElkcyl9LlxuJHtsZWF2ZUNvbW1lbnRUZXh0fWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGlmIChzY29wZWRJZHMuaW5jbHVkZXMoY29yZXNwb25kaW5nTm9kZUlkKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAnJHt2YWx1ZX0nIHNpbmNlIGl0J3MgYSBzY29wZWQgdmFyaWFibGVgKTtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCBub2RlIGlkICcke2NvcmVzcG9uZGluZ05vZGVJZH0nYCk7XG5cbiAgICBjb25zdCBzcG90UGFydHMgPSB2YWx1ZS5zcGxpdChcIi5cIik7XG4gICAgbGV0IGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yID0gZmFsc2U7XG4gICAgY29uc3QgcmVmZXJlbmNlU3BvdFBhcnRzID0gc3BvdFBhcnRzLmZpbHRlcigocGFydCkgPT4ge1xuICAgICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VJbnQocGFydCwgMTApKSkge1xuICAgICAgICBpc1RoZXJlQU51bWVyaWNBY2Nlc3NvciA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1RoZXJlQU51bWVyaWNBY2Nlc3NvcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdWxsUmVmZXJlbmNlID0gaXNUaGVyZUFOdW1lcmljQWNjZXNzb3JcbiAgICAgID8gcmVmZXJlbmNlU3BvdFBhcnRzLnNsaWNlKDAsIDIpLmpvaW4oXCIuXCIpXG4gICAgICA6IHZhbHVlO1xuXG4gICAgY29uc3QgaXNWYXJpYWJsZSA9IHZhbHVlLnN0YXJ0c1dpdGgoXCJ2YXIuXCIpO1xuICAgIGNvbnN0IHVzZUZxbiA9XG4gICAgICAvLyBDYW4gbm90IHVzZSBGUU4gb24gdmFyc1xuICAgICAgIWlzVmFyaWFibGUgJiZcbiAgICAgIC8vIENhbiBub3QgdXNlIEZRTiBvbiBsb2NhbHNcbiAgICAgICF2YWx1ZS5zdGFydHNXaXRoKFwibG9jYWwuXCIpICYmXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpc1xuICAgICAgKGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiArIDEsIDEpID09PSBcIipcIiB8fCAvLyBhICogKHNwbGF0KSB3ZSBuZWVkIHRvIHVzZSB0aGUgRlFOXG4gICAgICAgIGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiwgMSkgPT09IFwiW1wiIHx8IC8vIGEgcHJvcGVydHkgYWNjZXNzXG4gICAgICAgIGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yKTsgLy8gYSBudW1lcmljIGFjY2Vzc1xuXG4gICAgY29uc3QgcmVmOiBSZWZlcmVuY2UgPSB7XG4gICAgICBzdGFydDogc3RhcnRQb3NpdGlvbixcbiAgICAgIGVuZDogZW5kUG9zaXRpb24sXG4gICAgICByZWZlcmVuY2VlOiB7XG4gICAgICAgIGlkOiBjb3Jlc3BvbmRpbmdOb2RlSWQsXG4gICAgICAgIGZ1bGw6IGZ1bGxSZWZlcmVuY2UsXG4gICAgICB9LFxuICAgICAgdXNlRnFuLFxuICAgICAgaXNWYXJpYWJsZSxcbiAgICB9O1xuICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgcmVmZXJlbmNlICR7SlNPTi5zdHJpbmdpZnkocmVmKX1gKTtcbiAgICByZXR1cm4gWy4uLmNhcnJ5LCByZWZdO1xuICB9LCBbXSBhcyBSZWZlcmVuY2VbXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXNlZFJlZmVyZW5jZXMoXG4gIG5vZGVJZHM6IHN0cmluZ1tdLFxuICBpdGVtOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLFxuKTogUHJvbWlzZTxSZWZlcmVuY2VbXT4ge1xuICBsb2dnZXIuZGVidWcoYGZpbmRVc2VkUmVmZXJlbmNlcygke25vZGVJZHN9LCAke2l0ZW19KWApO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gYXdhaXQgZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihpdGVtLCBub2RlSWRzLCBbXSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIgfHwgaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtLm1hcCgoaSkgPT4gZmluZFVzZWRSZWZlcmVuY2VzKG5vZGVJZHMsIGkpKSlcbiAgICApLmZsYXQoKTtcbiAgfVxuXG4gIGlmIChpdGVtICYmIFwiZHluYW1pY1wiIGluIGl0ZW0pIHtcbiAgICBjb25zdCBkeW4gPSAoaXRlbSBhcyBhbnkpW1wiZHluYW1pY1wiXTtcbiAgICBjb25zdCB7IGZvcl9lYWNoLCAuLi5vdGhlcnMgfSA9IGR5bjtcbiAgICBjb25zdCBkeW5hbWljUmVmID0gT2JqZWN0LmtleXMob3RoZXJzKVswXTtcbiAgICByZXR1cm4gYXdhaXQgZmluZFVzZWRSZWZlcmVuY2VzKFsuLi5ub2RlSWRzLCBkeW5hbWljUmVmXSwgZHluKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBPYmplY3QudmFsdWVzKGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKChpKSA9PlxuICAgICAgICBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgaSksXG4gICAgICApLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG4iXX0=
|
package/lib/schema.d.ts
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
declare const outputConfig: z.ZodArray<z.ZodObject<{
|
|
3
|
+
value: z.ZodOptional<z.ZodAny>;
|
|
4
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
5
|
+
sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
6
|
+
depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
value?: any;
|
|
9
|
+
description?: string | undefined;
|
|
10
|
+
sensitive?: boolean | undefined;
|
|
11
|
+
depends_on?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
value?: any;
|
|
14
|
+
description?: string | undefined;
|
|
15
|
+
sensitive?: boolean | undefined;
|
|
16
|
+
depends_on?: string | undefined;
|
|
17
|
+
}>, "many">;
|
|
18
|
+
export type Output = z.infer<typeof outputConfig>;
|
|
19
|
+
declare const variableConfig: z.ZodArray<z.ZodObject<{
|
|
20
|
+
type: z.ZodOptional<z.ZodString>;
|
|
21
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
sensitive: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
nullable: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
25
|
+
validation: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
26
|
+
error_message: z.ZodString;
|
|
27
|
+
condition: z.ZodAny;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
error_message: string;
|
|
30
|
+
condition?: any;
|
|
31
|
+
}, {
|
|
32
|
+
error_message: string;
|
|
33
|
+
condition?: any;
|
|
34
|
+
}>, "many">>>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
type?: string | undefined;
|
|
37
|
+
default?: any;
|
|
38
|
+
description?: string | undefined;
|
|
39
|
+
sensitive?: boolean | undefined;
|
|
40
|
+
nullable?: boolean | undefined;
|
|
41
|
+
validation?: {
|
|
42
|
+
error_message: string;
|
|
43
|
+
condition?: any;
|
|
44
|
+
}[] | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
type?: string | undefined;
|
|
47
|
+
default?: any;
|
|
48
|
+
description?: string | undefined;
|
|
49
|
+
sensitive?: boolean | undefined;
|
|
50
|
+
nullable?: boolean | undefined;
|
|
51
|
+
validation?: {
|
|
52
|
+
error_message: string;
|
|
53
|
+
condition?: any;
|
|
54
|
+
}[] | undefined;
|
|
55
|
+
}>, "many">;
|
|
56
|
+
export type Variable = z.infer<typeof variableConfig>;
|
|
57
|
+
declare const providerConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
58
|
+
export type Provider = z.infer<typeof providerConfig>;
|
|
59
|
+
declare const moduleConfig: z.ZodArray<z.ZodObject<{
|
|
60
|
+
source: z.ZodString;
|
|
61
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
62
|
+
source: z.ZodString;
|
|
63
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
64
|
+
source: z.ZodString;
|
|
65
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
66
|
+
export type Module = z.infer<typeof moduleConfig>;
|
|
67
|
+
declare const resourceConfig: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
68
|
+
export type Resource = z.infer<typeof resourceConfig>;
|
|
69
|
+
export type Data = Resource;
|
|
70
|
+
declare const importConfig: z.ZodObject<{
|
|
71
|
+
to: z.ZodString;
|
|
72
|
+
id: z.ZodString;
|
|
73
|
+
provider: z.ZodOptional<z.ZodAny>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
to: string;
|
|
76
|
+
id: string;
|
|
77
|
+
provider?: any;
|
|
78
|
+
}, {
|
|
79
|
+
to: string;
|
|
80
|
+
id: string;
|
|
81
|
+
provider?: any;
|
|
82
|
+
}>;
|
|
83
|
+
export type Import = z.infer<typeof importConfig>;
|
|
84
|
+
declare const terraformConfig: z.ZodObject<{
|
|
85
|
+
required_version: z.ZodOptional<z.ZodString>;
|
|
86
|
+
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
87
|
+
source: z.ZodOptional<z.ZodString>;
|
|
88
|
+
version: z.ZodOptional<z.ZodString>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
source?: string | undefined;
|
|
91
|
+
version?: string | undefined;
|
|
92
|
+
}, {
|
|
93
|
+
source?: string | undefined;
|
|
94
|
+
version?: string | undefined;
|
|
95
|
+
}>, z.ZodString]>>, "many">>;
|
|
96
|
+
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
99
|
+
required_providers?: Record<string, string | {
|
|
100
|
+
source?: string | undefined;
|
|
101
|
+
version?: string | undefined;
|
|
102
|
+
}>[] | undefined;
|
|
103
|
+
required_version?: string | undefined;
|
|
104
|
+
}, {
|
|
105
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
106
|
+
required_providers?: Record<string, string | {
|
|
107
|
+
source?: string | undefined;
|
|
108
|
+
version?: string | undefined;
|
|
109
|
+
}>[] | undefined;
|
|
110
|
+
required_version?: string | undefined;
|
|
111
|
+
}>;
|
|
112
|
+
export type TerraformConfig = z.infer<typeof terraformConfig>;
|
|
113
|
+
export declare const schema: z.ZodObject<{
|
|
114
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>>;
|
|
115
|
+
import: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
116
|
+
to: z.ZodString;
|
|
117
|
+
id: z.ZodString;
|
|
118
|
+
provider: z.ZodOptional<z.ZodAny>;
|
|
119
|
+
}, "strip", z.ZodTypeAny, {
|
|
120
|
+
to: string;
|
|
121
|
+
id: string;
|
|
122
|
+
provider?: any;
|
|
123
|
+
}, {
|
|
124
|
+
to: string;
|
|
125
|
+
id: string;
|
|
126
|
+
provider?: any;
|
|
127
|
+
}>, "many">>;
|
|
128
|
+
locals: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>;
|
|
129
|
+
module: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
130
|
+
source: z.ZodString;
|
|
131
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
132
|
+
source: z.ZodString;
|
|
133
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
134
|
+
source: z.ZodString;
|
|
135
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>>;
|
|
136
|
+
output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
137
|
+
value: z.ZodOptional<z.ZodAny>;
|
|
138
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
139
|
+
sensitive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
140
|
+
depends_on: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
141
|
+
}, "strip", z.ZodTypeAny, {
|
|
142
|
+
value?: any;
|
|
143
|
+
description?: string | undefined;
|
|
144
|
+
sensitive?: boolean | undefined;
|
|
145
|
+
depends_on?: string | undefined;
|
|
146
|
+
}, {
|
|
147
|
+
value?: any;
|
|
148
|
+
description?: string | undefined;
|
|
149
|
+
sensitive?: boolean | undefined;
|
|
150
|
+
depends_on?: string | undefined;
|
|
151
|
+
}>, "many">>>;
|
|
152
|
+
provider: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
153
|
+
resource: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>>;
|
|
154
|
+
terraform: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
155
|
+
required_version: z.ZodOptional<z.ZodString>;
|
|
156
|
+
required_providers: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
157
|
+
source: z.ZodOptional<z.ZodString>;
|
|
158
|
+
version: z.ZodOptional<z.ZodString>;
|
|
159
|
+
}, "strip", z.ZodTypeAny, {
|
|
160
|
+
source?: string | undefined;
|
|
161
|
+
version?: string | undefined;
|
|
162
|
+
}, {
|
|
163
|
+
source?: string | undefined;
|
|
164
|
+
version?: string | undefined;
|
|
165
|
+
}>, z.ZodString]>>, "many">>;
|
|
166
|
+
backend: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">>>;
|
|
167
|
+
}, "strip", z.ZodTypeAny, {
|
|
168
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
169
|
+
required_providers?: Record<string, string | {
|
|
170
|
+
source?: string | undefined;
|
|
171
|
+
version?: string | undefined;
|
|
172
|
+
}>[] | undefined;
|
|
173
|
+
required_version?: string | undefined;
|
|
174
|
+
}, {
|
|
175
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
176
|
+
required_providers?: Record<string, string | {
|
|
177
|
+
source?: string | undefined;
|
|
178
|
+
version?: string | undefined;
|
|
179
|
+
}>[] | undefined;
|
|
180
|
+
required_version?: string | undefined;
|
|
181
|
+
}>, "many">>;
|
|
182
|
+
variable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
|
|
183
|
+
type: z.ZodOptional<z.ZodString>;
|
|
184
|
+
default: z.ZodOptional<z.ZodAny>;
|
|
185
|
+
description: z.ZodOptional<z.ZodString>;
|
|
186
|
+
sensitive: z.ZodOptional<z.ZodBoolean>;
|
|
187
|
+
nullable: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
188
|
+
validation: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
189
|
+
error_message: z.ZodString;
|
|
190
|
+
condition: z.ZodAny;
|
|
191
|
+
}, "strip", z.ZodTypeAny, {
|
|
192
|
+
error_message: string;
|
|
193
|
+
condition?: any;
|
|
194
|
+
}, {
|
|
195
|
+
error_message: string;
|
|
196
|
+
condition?: any;
|
|
197
|
+
}>, "many">>>;
|
|
198
|
+
}, "strip", z.ZodTypeAny, {
|
|
199
|
+
type?: string | undefined;
|
|
200
|
+
default?: any;
|
|
201
|
+
description?: string | undefined;
|
|
202
|
+
sensitive?: boolean | undefined;
|
|
203
|
+
nullable?: boolean | undefined;
|
|
204
|
+
validation?: {
|
|
205
|
+
error_message: string;
|
|
206
|
+
condition?: any;
|
|
207
|
+
}[] | undefined;
|
|
208
|
+
}, {
|
|
209
|
+
type?: string | undefined;
|
|
210
|
+
default?: any;
|
|
211
|
+
description?: string | undefined;
|
|
212
|
+
sensitive?: boolean | undefined;
|
|
213
|
+
nullable?: boolean | undefined;
|
|
214
|
+
validation?: {
|
|
215
|
+
error_message: string;
|
|
216
|
+
condition?: any;
|
|
217
|
+
}[] | undefined;
|
|
218
|
+
}>, "many">>>;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
terraform?: {
|
|
221
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
222
|
+
required_providers?: Record<string, string | {
|
|
223
|
+
source?: string | undefined;
|
|
224
|
+
version?: string | undefined;
|
|
225
|
+
}>[] | undefined;
|
|
226
|
+
required_version?: string | undefined;
|
|
227
|
+
}[] | undefined;
|
|
228
|
+
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
229
|
+
module?: Record<string, z.objectOutputType<{
|
|
230
|
+
source: z.ZodString;
|
|
231
|
+
}, z.ZodTypeAny, "passthrough">[]> | undefined;
|
|
232
|
+
resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
233
|
+
data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
234
|
+
output?: Record<string, {
|
|
235
|
+
value?: any;
|
|
236
|
+
description?: string | undefined;
|
|
237
|
+
sensitive?: boolean | undefined;
|
|
238
|
+
depends_on?: string | undefined;
|
|
239
|
+
}[]> | undefined;
|
|
240
|
+
variable?: Record<string, {
|
|
241
|
+
type?: string | undefined;
|
|
242
|
+
default?: any;
|
|
243
|
+
description?: string | undefined;
|
|
244
|
+
sensitive?: boolean | undefined;
|
|
245
|
+
nullable?: boolean | undefined;
|
|
246
|
+
validation?: {
|
|
247
|
+
error_message: string;
|
|
248
|
+
condition?: any;
|
|
249
|
+
}[] | undefined;
|
|
250
|
+
}[]> | undefined;
|
|
251
|
+
import?: {
|
|
252
|
+
to: string;
|
|
253
|
+
id: string;
|
|
254
|
+
provider?: any;
|
|
255
|
+
}[] | undefined;
|
|
256
|
+
locals?: Record<string, any>[] | undefined;
|
|
257
|
+
}, {
|
|
258
|
+
terraform?: {
|
|
259
|
+
backend?: Record<string, Record<string, any>[]> | undefined;
|
|
260
|
+
required_providers?: Record<string, string | {
|
|
261
|
+
source?: string | undefined;
|
|
262
|
+
version?: string | undefined;
|
|
263
|
+
}>[] | undefined;
|
|
264
|
+
required_version?: string | undefined;
|
|
265
|
+
}[] | undefined;
|
|
266
|
+
provider?: Record<string, Record<string, any>[]> | undefined;
|
|
267
|
+
module?: Record<string, z.objectInputType<{
|
|
268
|
+
source: z.ZodString;
|
|
269
|
+
}, z.ZodTypeAny, "passthrough">[]> | undefined;
|
|
270
|
+
resource?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
271
|
+
data?: Record<string, Record<string, Record<string, any>[]>> | undefined;
|
|
272
|
+
output?: Record<string, {
|
|
273
|
+
value?: any;
|
|
274
|
+
description?: string | undefined;
|
|
275
|
+
sensitive?: boolean | undefined;
|
|
276
|
+
depends_on?: string | undefined;
|
|
277
|
+
}[]> | undefined;
|
|
278
|
+
variable?: Record<string, {
|
|
279
|
+
type?: string | undefined;
|
|
280
|
+
default?: any;
|
|
281
|
+
description?: string | undefined;
|
|
282
|
+
sensitive?: boolean | undefined;
|
|
283
|
+
nullable?: boolean | undefined;
|
|
284
|
+
validation?: {
|
|
285
|
+
error_message: string;
|
|
286
|
+
condition?: any;
|
|
287
|
+
}[] | undefined;
|
|
288
|
+
}[]> | undefined;
|
|
289
|
+
import?: {
|
|
290
|
+
to: string;
|
|
291
|
+
id: string;
|
|
292
|
+
provider?: any;
|
|
293
|
+
}[] | undefined;
|
|
294
|
+
locals?: Record<string, any>[] | undefined;
|
|
295
|
+
}>;
|
|
296
|
+
export {};
|
|
297
|
+
//# sourceMappingURL=schema.d.ts.map
|
package/lib/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFFekIsTUFBTSxRQUFRLEdBQUcsQ0FBMEIsTUFBUyxFQUFFLEVBQUUsQ0FDdEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFFdEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFO0lBQ2QsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEMsQ0FBQyxDQUFDO0FBR0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hDLGFBQWEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3pCLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFO0NBQ25CLENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUM5QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUNoQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUNqRCxDQUFDLENBQUM7QUFHSCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUdsRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRzNFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBSWxELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDZCxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNkLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQztBQUdILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDL0QsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNYLENBQUMsQ0FBQztBQUVILE1BQU0sZUFBZSxHQUFHLENBQUM7S0FDdEIsTUFBTSxDQUFDO0lBQ04sZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM1QixrQkFBa0IsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM1RCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM5QyxDQUFDO0tBQ0QsT0FBTyxFQUFFLENBQUM7QUFHQSxRQUFBLE1BQU0sR0FBRyxDQUFDO0tBQ3BCLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUM5QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDbEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFDbkMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO0NBQ25DLENBQUM7S0FDRCxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcblxuY29uc3QgdGZPYmplY3QgPSA8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KGNvbmZpZzogVCkgPT5cbiAgei5hcnJheSh6Lm9iamVjdChjb25maWcpLnBhcnRpYWwoKSk7XG5cbmNvbnN0IG91dHB1dENvbmZpZyA9IHRmT2JqZWN0KHtcbiAgdmFsdWU6IHouYW55KCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNlbnNpdGl2ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGVwZW5kc19vbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBPdXRwdXQgPSB6LmluZmVyPHR5cGVvZiBvdXRwdXRDb25maWc+O1xuXG5jb25zdCB2YWxpZGF0aW9uQ29uZmlnID0gei5vYmplY3Qoe1xuICBlcnJvcl9tZXNzYWdlOiB6LnN0cmluZygpLFxuICBjb25kaXRpb246IHouYW55KCksXG59KTtcblxuY29uc3QgdmFyaWFibGVDb25maWcgPSB0Zk9iamVjdCh7XG4gIHR5cGU6IHouc3RyaW5nKCksXG4gIGRlZmF1bHQ6IHouYW55KCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLFxuICBzZW5zaXRpdmU6IHouYm9vbGVhbigpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdmFsaWRhdGlvbjogei5hcnJheSh2YWxpZGF0aW9uQ29uZmlnKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBWYXJpYWJsZSA9IHouaW5mZXI8dHlwZW9mIHZhcmlhYmxlQ29uZmlnPjtcblxuY29uc3QgcHJvdmlkZXJDb25maWcgPSB6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKTtcbmV4cG9ydCB0eXBlIFByb3ZpZGVyID0gei5pbmZlcjx0eXBlb2YgcHJvdmlkZXJDb25maWc+O1xuXG5jb25zdCBtb2R1bGVDb25maWcgPSB6LmFycmF5KHoub2JqZWN0KHsgc291cmNlOiB6LnN0cmluZygpIH0pLm5vbnN0cmljdCgpKTtcbmV4cG9ydCB0eXBlIE1vZHVsZSA9IHouaW5mZXI8dHlwZW9mIG1vZHVsZUNvbmZpZz47XG5cbmNvbnN0IHJlc291cmNlQ29uZmlnID0gei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSk7XG5leHBvcnQgdHlwZSBSZXNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIHJlc291cmNlQ29uZmlnPjtcbmV4cG9ydCB0eXBlIERhdGEgPSBSZXNvdXJjZTtcblxuY29uc3QgaW1wb3J0Q29uZmlnID0gei5vYmplY3Qoe1xuICB0bzogei5zdHJpbmcoKSxcbiAgaWQ6IHouc3RyaW5nKCksXG4gIHByb3ZpZGVyOiB6LmFueSgpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEltcG9ydCA9IHouaW5mZXI8dHlwZW9mIGltcG9ydENvbmZpZz47XG5cbmNvbnN0IHByb3ZpZGVyU3BlY2lmaWNhdGlvbiA9IHoudW5pb24oW1xuICB6Lm9iamVjdCh7IHNvdXJjZTogei5zdHJpbmcoKSwgdmVyc2lvbjogei5zdHJpbmcoKSB9KS5wYXJ0aWFsKCksXG4gIHouc3RyaW5nKCksXG5dKTtcblxuY29uc3QgdGVycmFmb3JtQ29uZmlnID0gelxuICAub2JqZWN0KHtcbiAgICByZXF1aXJlZF92ZXJzaW9uOiB6LnN0cmluZygpLFxuICAgIHJlcXVpcmVkX3Byb3ZpZGVyczogei5hcnJheSh6LnJlY29yZChwcm92aWRlclNwZWNpZmljYXRpb24pKSxcbiAgICBiYWNrZW5kOiB6LnJlY29yZCh6LmFycmF5KHoucmVjb3JkKHouYW55KCkpKSksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG5leHBvcnQgdHlwZSBUZXJyYWZvcm1Db25maWcgPSB6LmluZmVyPHR5cGVvZiB0ZXJyYWZvcm1Db25maWc+O1xuXG5leHBvcnQgY29uc3Qgc2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBkYXRhOiB6LnJlY29yZCh6LnJlY29yZChyZXNvdXJjZUNvbmZpZykpLFxuICAgIGltcG9ydDogei5hcnJheShpbXBvcnRDb25maWcpLFxuICAgIGxvY2Fsczogei5hcnJheSh6LnJlY29yZCh6LmFueSgpKSksXG4gICAgbW9kdWxlOiB6LnJlY29yZChtb2R1bGVDb25maWcpLFxuICAgIG91dHB1dDogei5yZWNvcmQob3V0cHV0Q29uZmlnKSxcbiAgICBwcm92aWRlcjogei5yZWNvcmQocHJvdmlkZXJDb25maWcpLFxuICAgIHJlc291cmNlOiB6LnJlY29yZCh6LnJlY29yZChyZXNvdXJjZUNvbmZpZykpLFxuICAgIHRlcnJhZm9ybTogei5hcnJheSh0ZXJyYWZvcm1Db25maWcpLFxuICAgIHZhcmlhYmxlOiB6LnJlY29yZCh2YXJpYWJsZUNvbmZpZyksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG4iXX0=
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ProviderSchema, BlockType, AttributeType, Schema } from "@cdktn/commons";
|
|
2
|
+
import { ProgramScope } from "./types";
|
|
3
|
+
export declare function getTypeAtPath(schema: ProviderSchema, path: string): Schema | BlockType | AttributeType | null;
|
|
4
|
+
export declare const isMapAttribute: (attribute: Schema | AttributeType | BlockType | null) => boolean;
|
|
5
|
+
export declare function getDesiredType(scope: ProgramScope, path: string): AttributeType;
|
|
6
|
+
//# sourceMappingURL=terraformSchema.d.ts.map
|