@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.
Files changed (61) hide show
  1. package/README.md +95 -0
  2. package/ambient.d.ts +14 -0
  3. package/jest.config.js +16 -0
  4. package/lib/__tests__/coerceType.test.d.ts +2 -0
  5. package/lib/__tests__/coerceType.test.js +165 -0
  6. package/lib/__tests__/expressionToTs.test.d.ts +6 -0
  7. package/lib/__tests__/expressionToTs.test.js +693 -0
  8. package/lib/__tests__/expressions.test.d.ts +4 -0
  9. package/lib/__tests__/expressions.test.js +415 -0
  10. package/lib/__tests__/findExpressionType.test.d.ts +6 -0
  11. package/lib/__tests__/findExpressionType.test.js +105 -0
  12. package/lib/__tests__/functions.test.d.ts +6 -0
  13. package/lib/__tests__/functions.test.js +605 -0
  14. package/lib/__tests__/generation.test.d.ts +6 -0
  15. package/lib/__tests__/generation.test.js +45 -0
  16. package/lib/__tests__/jsii-rosetta-workarounds.test.d.ts +2 -0
  17. package/lib/__tests__/jsii-rosetta-workarounds.test.js +86 -0
  18. package/lib/__tests__/partialCode.test.d.ts +6 -0
  19. package/lib/__tests__/partialCode.test.js +390 -0
  20. package/lib/__tests__/terraformSchema.test.d.ts +6 -0
  21. package/lib/__tests__/terraformSchema.test.js +105 -0
  22. package/lib/__tests__/testHelpers.d.ts +7 -0
  23. package/lib/__tests__/testHelpers.js +16 -0
  24. package/lib/coerceType.d.ts +7 -0
  25. package/lib/coerceType.js +240 -0
  26. package/lib/dynamic-blocks.d.ts +8 -0
  27. package/lib/dynamic-blocks.js +44 -0
  28. package/lib/expressions.d.ts +9 -0
  29. package/lib/expressions.js +634 -0
  30. package/lib/function-bindings/functions.d.ts +31 -0
  31. package/lib/function-bindings/functions.generated.d.ts +806 -0
  32. package/lib/function-bindings/functions.generated.js +1142 -0
  33. package/lib/function-bindings/functions.js +73 -0
  34. package/lib/generation.d.ts +26 -0
  35. package/lib/generation.js +676 -0
  36. package/lib/index.d.ts +136 -0
  37. package/lib/index.js +364 -0
  38. package/lib/iteration.d.ts +23 -0
  39. package/lib/iteration.js +87 -0
  40. package/lib/jsii-rosetta-workarounds.d.ts +5 -0
  41. package/lib/jsii-rosetta-workarounds.js +126 -0
  42. package/lib/partialCode.d.ts +11 -0
  43. package/lib/partialCode.js +116 -0
  44. package/lib/provider.d.ts +8 -0
  45. package/lib/provider.js +40 -0
  46. package/lib/references.d.ts +11 -0
  47. package/lib/references.js +141 -0
  48. package/lib/schema.d.ts +297 -0
  49. package/lib/schema.js +81 -0
  50. package/lib/telemetryAllowList.json +24 -0
  51. package/lib/terraformSchema.d.ts +6 -0
  52. package/lib/terraformSchema.js +136 -0
  53. package/lib/types.d.ts +50 -0
  54. package/lib/types.js +3 -0
  55. package/lib/utils.d.ts +6 -0
  56. package/lib/utils.js +25 -0
  57. package/lib/variables.d.ts +10 -0
  58. package/lib/variables.js +172 -0
  59. package/package.json +71 -0
  60. package/package.sh +9 -0
  61. package/tsconfig.json +42 -0
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDesiredType = exports.isMapAttribute = exports.getTypeAtPath = void 0;
4
+ const provider_1 = require("./provider");
5
+ function getResourceAtPath(schema, path) {
6
+ var _a;
7
+ const parts = path.split(".");
8
+ if (parts.length < 2) {
9
+ // Too short to be a valid path
10
+ return null;
11
+ }
12
+ const isDataSource = parts[0] === "data";
13
+ if (isDataSource) {
14
+ parts.shift();
15
+ }
16
+ const providerName = parts.shift();
17
+ const resourceName = parts.shift();
18
+ const fullProviderName = (0, provider_1.getFullProviderName)(schema, providerName);
19
+ // Hack: In the case of 'external', the name of the data source 'external' doesn't have a prefix
20
+ // so we repeat the name as both provider prefix and the data source name
21
+ const fullResourceName = providerName === resourceName
22
+ ? providerName
23
+ : `${providerName}_${resourceName}`;
24
+ if (!fullProviderName) {
25
+ // No provider found with that name
26
+ return null;
27
+ }
28
+ const provider = (_a = schema.provider_schemas) === null || _a === void 0 ? void 0 : _a[fullProviderName];
29
+ if (!provider) {
30
+ // Could not find provider
31
+ return null;
32
+ }
33
+ if (resourceName.endsWith("Provider")) {
34
+ // This is a provider
35
+ return { resource: provider.provider, parts };
36
+ }
37
+ const resources = isDataSource
38
+ ? provider.data_source_schemas
39
+ : provider.resource_schemas;
40
+ const resource = resources[fullResourceName];
41
+ if (!resource) {
42
+ // Could not find resource
43
+ return null;
44
+ }
45
+ return { resource, parts };
46
+ }
47
+ function findType(item, parts) {
48
+ if (!parts.length) {
49
+ return item;
50
+ }
51
+ const [currentPart, ...otherParts] = parts;
52
+ // Promitive attributes can be returned directly
53
+ if (typeof item === "string") {
54
+ return item;
55
+ }
56
+ // Complex attributes
57
+ if (Array.isArray(item)) {
58
+ if (item[0] === "set" || item[0] === "list") {
59
+ if (currentPart === "[]") {
60
+ return findType(item[1], otherParts);
61
+ }
62
+ // Trying to access a property on a list
63
+ return null;
64
+ }
65
+ if (item[0] === "object") {
66
+ if (currentPart === "[]") {
67
+ // Trying to access a property on a list
68
+ return null;
69
+ }
70
+ return findType(item[1][currentPart], otherParts);
71
+ }
72
+ if (item[0] === "map") {
73
+ // We don't care what the key is
74
+ return findType(item[1], otherParts);
75
+ }
76
+ // Unknown type
77
+ return null;
78
+ }
79
+ // If we are not in an attribute, we can ignore the [] (since max_item=1 parts don't have [], so we just ignore it)
80
+ if (currentPart === "[]") {
81
+ return findType(item, otherParts);
82
+ }
83
+ // Block
84
+ if (item.block) {
85
+ // Find block type in block
86
+ if (item.block.block_types) {
87
+ const blockType = item.block.block_types[currentPart];
88
+ if (blockType) {
89
+ return findType(blockType, otherParts);
90
+ }
91
+ }
92
+ // Find attribute in block
93
+ if (item.block.attributes) {
94
+ const attribute = item.block.attributes[currentPart];
95
+ if (attribute && attribute.type) {
96
+ return findType(attribute.type, otherParts);
97
+ }
98
+ }
99
+ }
100
+ // Could not find the type
101
+ return null;
102
+ }
103
+ function getTypeAtPath(schema, path) {
104
+ const resourceSchema = getResourceAtPath(schema, path);
105
+ if (!resourceSchema) {
106
+ return null;
107
+ }
108
+ const { resource, parts } = resourceSchema;
109
+ return findType(resource, parts);
110
+ }
111
+ exports.getTypeAtPath = getTypeAtPath;
112
+ const isMapAttribute = (attribute) => (Array.isArray(attribute) ? attribute[0] === "map" : false);
113
+ exports.isMapAttribute = isMapAttribute;
114
+ function getDesiredType(scope, path) {
115
+ const attributeOrBlockType = getTypeAtPath(scope.providerSchema, path);
116
+ // Attribute type is not defined
117
+ if (!attributeOrBlockType) {
118
+ return "dynamic";
119
+ }
120
+ // Primitive attribute type
121
+ if (typeof attributeOrBlockType === "string") {
122
+ return attributeOrBlockType;
123
+ }
124
+ // Complex attribute type
125
+ if (Array.isArray(attributeOrBlockType)) {
126
+ return attributeOrBlockType;
127
+ }
128
+ // Schema
129
+ if ("version" in attributeOrBlockType) {
130
+ return "dynamic";
131
+ }
132
+ // Block type
133
+ return "dynamic";
134
+ }
135
+ exports.getDesiredType = getDesiredType;
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLHlDQUFpRDtBQUdqRCxTQUFTLGlCQUFpQixDQUFDLE1BQXNCLEVBQUUsSUFBWTs7SUFDN0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckIsK0JBQStCO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7SUFDekMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQVksQ0FBQztJQUM3QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFZLENBQUM7SUFFN0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFtQixFQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRSxnR0FBZ0c7SUFDaEcseUVBQXlFO0lBQ3pFLE1BQU0sZ0JBQWdCLEdBQ3BCLFlBQVksS0FBSyxZQUFZO1FBQzNCLENBQUMsQ0FBQyxZQUFZO1FBQ2QsQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXhDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RCLG1DQUFtQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsMENBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUU3RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFD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LDJCQUEyQjtJQUMzQixJQUFJLE9BQU8sb0JBQW9CLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0MsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUztJQUNULElBQUksU0FBUyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDdEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWE7SUFDYixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBNUJELHdDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQge1xuICBQcm92aWRlclNjaGVtYSxcbiAgQmxvY2tUeXBlLFxuICBBdHRyaWJ1dGVUeXBlLFxuICBTY2hlbWEsXG59IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgZ2V0RnVsbFByb3ZpZGVyTmFtZSB9IGZyb20gXCIuL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5mdW5jdGlvbiBnZXRSZXNvdXJjZUF0UGF0aChzY2hlbWE6IFByb3ZpZGVyU2NoZW1hLCBwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcblxuICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgIC8vIFRvbyBzaG9ydCB0byBiZSBhIHZhbGlkIHBhdGhcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGlzRGF0YVNvdXJjZSA9IHBhcnRzWzBdID09PSBcImRhdGFcIjtcbiAgaWYgKGlzRGF0YVNvdXJjZSkge1xuICAgIHBhcnRzLnNoaWZ0KCk7XG4gIH1cblxuICBjb25zdCBwcm92aWRlck5hbWUgPSBwYXJ0cy5zaGlmdCgpIGFzIHN0cmluZztcbiAgY29uc3QgcmVzb3VyY2VOYW1lID0gcGFydHMuc2hpZnQoKSBhcyBzdHJpbmc7XG5cbiAgY29uc3QgZnVsbFByb3ZpZGVyTmFtZSA9IGdldEZ1bGxQcm92aWRlck5hbWUoc2NoZW1hLCBwcm92aWRlck5hbWUpO1xuICAvLyBIYWNrOiBJbiB0aGUgY2FzZSBvZiAnZXh0ZXJuYWwnLCB0aGUgbmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgJ2V4dGVybmFsJyBkb2Vzbid0IGhhdmUgYSBwcmVmaXhcbiAgLy8gc28gd2UgcmVwZWF0IHRoZSBuYW1lIGFzIGJvdGggcHJvdmlkZXIgcHJlZml4IGFuZCB0aGUgZGF0YSBzb3VyY2UgbmFtZVxuICBjb25zdCBmdWxsUmVzb3VyY2VOYW1lID1cbiAgICBwcm92aWRlck5hbWUgPT09IHJlc291cmNlTmFtZVxuICAgICAgPyBwcm92aWRlck5hbWVcbiAgICAgIDogYCR7cHJvdmlkZXJOYW1lfV8ke3Jlc291cmNlTmFtZX1gO1xuXG4gIGlmICghZnVsbFByb3ZpZGVyTmFtZSkge1xuICAgIC8vIE5vIHByb3ZpZGVyIGZvdW5kIHdpdGggdGhhdCBuYW1lXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBwcm92aWRlciA9IHNjaGVtYS5wcm92aWRlcl9zY2hlbWFzPy5bZnVsbFByb3ZpZGVyTmFtZV07XG5cbiAgaWYgKCFwcm92aWRlcikge1xuICAgIC8vIENvdWxkIG5vdCBmaW5kIHByb3ZpZGVyXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAocmVzb3VyY2VOYW1lLmVuZHNXaXRoKFwiUHJvdmlkZXJcIikpIHtcbiAgICAvLyBUaGlzIGlzIGEgcHJvdmlkZXJcbiAgICByZXR1cm4geyByZXNvdXJjZTogcHJvdmlkZXIucHJvdmlkZXIsIHBhcnRzIH07XG4gIH1cblxuICBjb25zdCByZXNvdXJjZXMgPSBpc0RhdGFTb3VyY2VcbiAgICA/IHByb3ZpZGVyLmRhdGFfc291cmNlX3NjaGVtYXNcbiAgICA6IHByb3ZpZGVyLnJlc291cmNlX3NjaGVtYXM7XG5cbiAgY29uc3QgcmVzb3VyY2UgPSByZXNvdXJjZXNbZnVsbFJlc291cmNlTmFtZV07XG4gIGlmICghcmVzb3VyY2UpIHtcbiAgICAvLyBDb3VsZCBub3QgZmluZCByZXNvdXJjZVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHsgcmVzb3VyY2UsIHBhcnRzIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlKFxuICBpdGVtOiBTY2hlbWEgfCBCbG9ja1R5cGUgfCBBdHRyaWJ1dGVUeXBlLFxuICBwYXJ0czogc3RyaW5nW10sXG4pOiBTY2hlbWEgfCBCbG9ja1R5cGUgfCBBdHRyaWJ1dGVUeXBlIHwgbnVsbCB7XG4gIGlmICghcGFydHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICBjb25zdCBbY3VycmVudFBhcnQsIC4uLm90aGVyUGFydHNdID0gcGFydHM7XG5cbiAgLy8gUHJvbWl0aXZlIGF0dHJpYnV0ZXMgY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5XG4gIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gQ29tcGxleCBhdHRyaWJ1dGVzXG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgaWYgKGl0ZW1bMF0gPT09IFwic2V0XCIgfHwgaXRlbVswXSA9PT0gXCJsaXN0XCIpIHtcbiAgICAgIGlmIChjdXJyZW50UGFydCA9PT0gXCJbXVwiKSB7XG4gICAgICAgIHJldHVybiBmaW5kVHlwZShpdGVtWzFdLCBvdGhlclBhcnRzKTtcbiAgICAgIH1cbiAgICAgIC8vIFRyeWluZyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSBvbiBhIGxpc3RcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChpdGVtWzBdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBpZiAoY3VycmVudFBhcnQgPT09IFwiW11cIikge1xuICAgICAgICAvLyBUcnlpbmcgdG8gYWNjZXNzIGEgcHJvcGVydHkgb24gYSBsaXN0XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmluZFR5cGUoaXRlbVsxXVtjdXJyZW50UGFydF0sIG90aGVyUGFydHMpO1xuICAgIH1cblxuICAgIGlmIChpdGVtWzBdID09PSBcIm1hcFwiKSB7XG4gICAgICAvLyBXZSBkb24ndCBjYXJlIHdoYXQgdGhlIGtleSBpc1xuICAgICAgcmV0dXJuIGZpbmRUeXBlKGl0ZW1bMV0sIG90aGVyUGFydHMpO1xuICAgIH1cblxuICAgIC8vIFVua25vd24gdHlwZVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgd2UgYXJlIG5vdCBpbiBhbiBhdHRyaWJ1dGUsIHdlIGNhbiBpZ25vcmUgdGhlIFtdIChzaW5jZSBtYXhfaXRlbT0xIHBhcnRzIGRvbid0IGhhdmUgW10sIHNvIHdlIGp1c3QgaWdub3JlIGl0KVxuICBpZiAoY3VycmVudFBhcnQgPT09IFwiW11cIikge1xuICAgIHJldHVybiBmaW5kVHlwZShpdGVtLCBvdGhlclBhcnRzKTtcbiAgfVxuXG4gIC8vIEJsb2NrXG4gIGlmIChpdGVtLmJsb2NrKSB7XG4gICAgLy8gRmluZCBibG9jayB0eXBlIGluIGJsb2NrXG4gICAgaWYgKGl0ZW0uYmxvY2suYmxvY2tfdHlwZXMpIHtcbiAgICAgIGNvbnN0IGJsb2NrVHlwZSA9IGl0ZW0uYmxvY2suYmxvY2tfdHlwZXNbY3VycmVudFBhcnRdO1xuICAgICAgaWYgKGJsb2NrVHlwZSkge1xuICAgICAgICByZXR1cm4gZmluZFR5cGUoYmxvY2tUeXBlLCBvdGhlclBhcnRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5kIGF0dHJpYnV0ZSBpbiBibG9ja1xuICAgIGlmIChpdGVtLmJsb2NrLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGl0ZW0uYmxvY2suYXR0cmlidXRlc1tjdXJyZW50UGFydF07XG4gICAgICBpZiAoYXR0cmlidXRlICYmIGF0dHJpYnV0ZS50eXBlKSB7XG4gICAgICAgIHJldHVybiBmaW5kVHlwZShhdHRyaWJ1dGUudHlwZSwgb3RoZXJQYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ291bGQgbm90IGZpbmQgdGhlIHR5cGVcbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlQXRQYXRoKFxuICBzY2hlbWE6IFByb3ZpZGVyU2NoZW1hLFxuICBwYXRoOiBzdHJpbmcsXG4pOiBTY2hlbWEgfCBCbG9ja1R5cGUgfCBBdHRyaWJ1dGVUeXBlIHwgbnVsbCB7XG4gIGNvbnN0IHJlc291cmNlU2NoZW1hID0gZ2V0UmVzb3VyY2VBdFBhdGgoc2NoZW1hLCBwYXRoKTtcblxuICBpZiAoIXJlc291cmNlU2NoZW1hKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgeyByZXNvdXJjZSwgcGFydHMgfSA9IHJlc291cmNlU2NoZW1hO1xuICByZXR1cm4gZmluZFR5cGUocmVzb3VyY2UsIHBhcnRzKTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTWFwQXR0cmlidXRlID0gKFxuICBhdHRyaWJ1dGU6IFNjaGVtYSB8IEF0dHJpYnV0ZVR5cGUgfCBCbG9ja1R5cGUgfCBudWxsLFxuKSA9PiAoQXJyYXkuaXNBcnJheShhdHRyaWJ1dGUpID8gYXR0cmlidXRlWzBdID09PSBcIm1hcFwiIDogZmFsc2UpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzaXJlZFR5cGUoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIHBhdGg6IHN0cmluZyxcbik6IEF0dHJpYnV0ZVR5cGUge1xuICBjb25zdCBhdHRyaWJ1dGVPckJsb2NrVHlwZSA9IGdldFR5cGVBdFBhdGgoc2NvcGUucHJvdmlkZXJTY2hlbWEsIHBhdGgpO1xuXG4gIC8vIEF0dHJpYnV0ZSB0eXBlIGlzIG5vdCBkZWZpbmVkXG4gIGlmICghYXR0cmlidXRlT3JCbG9ja1R5cGUpIHtcbiAgICByZXR1cm4gXCJkeW5hbWljXCI7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgYXR0cmlidXRlIHR5cGVcbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVPckJsb2NrVHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBhdHRyaWJ1dGVPckJsb2NrVHlwZTtcbiAgfVxuXG4gIC8vIENvbXBsZXggYXR0cmlidXRlIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0cmlidXRlT3JCbG9ja1R5cGUpKSB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZU9yQmxvY2tUeXBlO1xuICB9XG5cbiAgLy8gU2NoZW1hXG4gIGlmIChcInZlcnNpb25cIiBpbiBhdHRyaWJ1dGVPckJsb2NrVHlwZSkge1xuICAgIHJldHVybiBcImR5bmFtaWNcIjtcbiAgfVxuXG4gIC8vIEJsb2NrIHR5cGVcbiAgcmV0dXJuIFwiZHluYW1pY1wiO1xufVxuIl19
package/lib/types.d.ts ADDED
@@ -0,0 +1,50 @@
1
+ import { TerraformProviderGenerator } from "@cdktn/provider-generator";
2
+ import { ProviderSchema } from "@cdktn/commons";
3
+ export type TerraformResourceBlock = unknown;
4
+ export type AttributePath = string;
5
+ export type ProgramScope = {
6
+ providerSchema: ProviderSchema;
7
+ providerGenerator: Record<string, TerraformProviderGenerator>;
8
+ constructs: Set<string>;
9
+ variables: Record<string, {
10
+ resource: string;
11
+ variableName: string;
12
+ }>;
13
+ hasTokenBasedTypeCoercion: boolean;
14
+ nodeIds: string[];
15
+ importables: ImportableConstruct[];
16
+ topLevelConfig: Record<string, AttributePath>;
17
+ };
18
+ export type ResourceScope = ProgramScope & {
19
+ forEachIteratorName?: string;
20
+ countIteratorName?: string;
21
+ withinOverrideExpression?: boolean;
22
+ scopedVariables?: Record<string, string>;
23
+ };
24
+ export type Reference = {
25
+ start: number;
26
+ end: number;
27
+ referencee: {
28
+ id: string;
29
+ full: string;
30
+ };
31
+ useFqn?: boolean;
32
+ isVariable?: boolean;
33
+ };
34
+ export type DynamicBlock = {
35
+ path: string;
36
+ for_each: string;
37
+ content: TerraformResourceBlock;
38
+ scopedVar: string;
39
+ };
40
+ export type IteratorVariableReference = {
41
+ start: number;
42
+ end: number;
43
+ value: string;
44
+ };
45
+ export type ImportableConstruct = {
46
+ provider: string;
47
+ constructName: string;
48
+ namespace?: string;
49
+ };
50
+ //# sourceMappingURL=types.d.ts.map
package/lib/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyR2VuZXJhdG9yIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IFByb3ZpZGVyU2NoZW1hIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5cbmV4cG9ydCB0eXBlIFRlcnJhZm9ybVJlc291cmNlQmxvY2sgPSB1bmtub3duO1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlUGF0aCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFByb2dyYW1TY29wZSA9IHtcbiAgcHJvdmlkZXJTY2hlbWE6IFByb3ZpZGVyU2NoZW1hO1xuICBwcm92aWRlckdlbmVyYXRvcjogUmVjb3JkPHN0cmluZywgVGVycmFmb3JtUHJvdmlkZXJHZW5lcmF0b3I+O1xuICBjb25zdHJ1Y3RzOiBTZXQ8c3RyaW5nPjtcbiAgdmFyaWFibGVzOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgICB2YXJpYWJsZU5hbWU6IHN0cmluZztcbiAgICB9XG4gID47XG4gIC8vIFRlbXBvcmFyeSBmbGFnIHRvIGluZGljYXRlIGlmIHdlIG5lZWQgdG8gaW1wb3J0IHRoZSBjZGt0ZiBsaWJyYXJ5IHRvIGFjY2VzcyB0aGUgdG9rZW4gY2xhc3NcbiAgaGFzVG9rZW5CYXNlZFR5cGVDb2VyY2lvbjogYm9vbGVhbjtcbiAgbm9kZUlkczogc3RyaW5nW107IC8vIHRlbXBvcmFyaWx5IGFkZGVkIHVudGlsIHJlcGxhY2VkXG4gIGltcG9ydGFibGVzOiBJbXBvcnRhYmxlQ29uc3RydWN0W107IC8vIHJlY29yZHMgYWxsIGltcG9ydHMgZm9yIHRoZSBjb252ZXJzaW9uXG4gIHRvcExldmVsQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVQYXRoPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlU2NvcGUgPSBQcm9ncmFtU2NvcGUgJiB7XG4gIGZvckVhY2hJdGVyYXRvck5hbWU/OiBzdHJpbmc7IC8vIHNldCBpZiBhIGZvcl9lYWNoIGlzIHVzZWQgaW4gdGhpcyByZXNvdXJjZVxuICBjb3VudEl0ZXJhdG9yTmFtZT86IHN0cmluZzsgLy8gc2V0IGlmIGEgY291bnQgaXMgdXNlZCBpbiB0aGlzIHJlc291cmNlXG4gIHdpdGhpbk92ZXJyaWRlRXhwcmVzc2lvbj86IGJvb2xlYW47IC8vIHNldCBpZiB3ZSBhcmUgY3VycmVudGx5IHdpdGhpbiBhbiBvdmVycmlkZSBleHByZXNzaW9uXG4gIHNjb3BlZFZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IC8vIHNldCBpZiB3ZSBhcmUgY3VycmVudGx5IHdpdGhpbiBhbiBkeW5hbWljIGJsb2NrIGV4cHJlc3Npb25cbn07XG5cbmV4cG9ydCB0eXBlIFJlZmVyZW5jZSA9IHtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG4gIHJlZmVyZW5jZWU6IHsgaWQ6IHN0cmluZzsgZnVsbDogc3RyaW5nIH07IC8vIGlkZW50aWZpZXIgZm9yIHJlc291cmNlXG4gIHVzZUZxbj86IGJvb2xlYW47XG4gIGlzVmFyaWFibGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRHluYW1pY0Jsb2NrID0ge1xuICBwYXRoOiBzdHJpbmc7XG4gIGZvcl9lYWNoOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IFRlcnJhZm9ybVJlc291cmNlQmxvY2s7XG4gIHNjb3BlZFZhcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgSXRlcmF0b3JWYXJpYWJsZVJlZmVyZW5jZSA9IHtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBJbXBvcnRhYmxlQ29uc3RydWN0ID0ge1xuICBwcm92aWRlcjogc3RyaW5nO1xuICBjb25zdHJ1Y3ROYW1lOiBzdHJpbmc7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbn07XG4iXX0=
package/lib/utils.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { logger } from "@cdktn/commons";
2
+ export declare const leaveCommentText = "Please leave a comment at https://cdk.tf/bugs/convert-expressions if you run into this issue.";
3
+ export declare const camelCase: (str: string) => string;
4
+ export declare const pascalCase: (str: string) => string;
5
+ export declare function uniqueId(set: Set<string>, key: string): string;
6
+ //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.uniqueId = exports.pascalCase = exports.camelCase = exports.leaveCommentText = exports.logger = void 0;
7
+ // Copyright (c) HashiCorp, Inc
8
+ // SPDX-License-Identifier: MPL-2.0
9
+ const camelcase_1 = __importDefault(require("camelcase"));
10
+ var commons_1 = require("@cdktn/commons");
11
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return commons_1.logger; } });
12
+ exports.leaveCommentText = `Please leave a comment at https://cdk.tf/bugs/convert-expressions if you run into this issue.`;
13
+ const camelCase = (str) => (0, camelcase_1.default)(str.replace(/[-/]/g, "_"));
14
+ exports.camelCase = camelCase;
15
+ const pascalCase = (str) => (0, camelcase_1.default)(str.replace(/[-/]/g, "_"), { pascalCase: true });
16
+ exports.pascalCase = pascalCase;
17
+ function uniqueId(set, key) {
18
+ if (set.has(key)) {
19
+ return uniqueId(set, `${key}_${set.size}`);
20
+ }
21
+ set.add(key);
22
+ return key;
23
+ }
24
+ exports.uniqueId = uniqueId;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDBEQUFrQztBQUVsQywwQ0FBd0M7QUFBL0IsaUdBQUEsTUFBTSxPQUFBO0FBRUYsUUFBQSxnQkFBZ0IsR0FBRywrRkFBK0YsQ0FBQztBQUV6SCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsSUFBQSxtQkFBUyxFQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFBbEUsUUFBQSxTQUFTLGFBQXlEO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDeEMsSUFBQSxtQkFBUyxFQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFEaEQsUUFBQSxVQUFVLGNBQ3NDO0FBRTdELFNBQWdCLFFBQVEsQ0FBQyxHQUFnQixFQUFFLEdBQVc7SUFDcEQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsNEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IGNhbWVsY2FzZSBmcm9tIFwiY2FtZWxjYXNlXCI7XG5cbmV4cG9ydCB7IGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuXG5leHBvcnQgY29uc3QgbGVhdmVDb21tZW50VGV4dCA9IGBQbGVhc2UgbGVhdmUgYSBjb21tZW50IGF0IGh0dHBzOi8vY2RrLnRmL2J1Z3MvY29udmVydC1leHByZXNzaW9ucyBpZiB5b3UgcnVuIGludG8gdGhpcyBpc3N1ZS5gO1xuXG5leHBvcnQgY29uc3QgY2FtZWxDYXNlID0gKHN0cjogc3RyaW5nKSA9PiBjYW1lbGNhc2Uoc3RyLnJlcGxhY2UoL1stL10vZywgXCJfXCIpKTtcbmV4cG9ydCBjb25zdCBwYXNjYWxDYXNlID0gKHN0cjogc3RyaW5nKSA9PlxuICBjYW1lbGNhc2Uoc3RyLnJlcGxhY2UoL1stL10vZywgXCJfXCIpLCB7IHBhc2NhbENhc2U6IHRydWUgfSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVJZChzZXQ6IFNldDxzdHJpbmc+LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzZXQuaGFzKGtleSkpIHtcbiAgICByZXR1cm4gdW5pcXVlSWQoc2V0LCBgJHtrZXl9XyR7c2V0LnNpemV9YCk7XG4gIH1cbiAgc2V0LmFkZChrZXkpO1xuICByZXR1cm4ga2V5O1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import * as t from "@babel/types";
6
+ import { ProgramScope, Reference } from "./types";
7
+ export declare function referenceToVariableName(scope: ProgramScope, ref: Reference): string;
8
+ export declare function constructAst(scope: ProgramScope, type: string, isModuleImport: boolean): t.MemberExpression | t.Identifier;
9
+ export declare function variableName(scope: ProgramScope, resource: string, name: string): string;
10
+ //# sourceMappingURL=variables.d.ts.map
@@ -0,0 +1,172 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.variableName = exports.constructAst = exports.referenceToVariableName = void 0;
34
+ const t = __importStar(require("@babel/types"));
35
+ const utils_1 = require("./utils");
36
+ const provider_generator_1 = require("@cdktn/provider-generator");
37
+ const provider_1 = require("./provider");
38
+ const reserved_words_1 = __importDefault(require("reserved-words"));
39
+ function referenceToVariableName(scope, ref) {
40
+ const parts = ref.referencee.id.split(".");
41
+ const resource = parts[0] === "data" ? `${parts[0]}.${parts[1]}` : parts[0];
42
+ const name = parts[0] === "data" ? parts[2] : parts[1];
43
+ return variableName(scope, resource, name);
44
+ }
45
+ exports.referenceToVariableName = referenceToVariableName;
46
+ function validVarName(name) {
47
+ if (reserved_words_1.default.check(name)) {
48
+ return `${name}Var`;
49
+ }
50
+ if (!Number.isNaN(parseInt(name[0], 10))) {
51
+ return `d${name}`;
52
+ }
53
+ return name;
54
+ }
55
+ function getUniqueName(scope, provider, type) {
56
+ var _a;
57
+ // early abort on cdktf
58
+ if (provider === "cdktf") {
59
+ return (0, utils_1.pascalCase)(type.replace("cdktf_", ""));
60
+ }
61
+ // early abort on cdktn
62
+ if (provider === "cdktn") {
63
+ return (0, utils_1.pascalCase)(type.replace("cdktn_", ""));
64
+ }
65
+ if (provider === "NullProvider") {
66
+ return (0, utils_1.pascalCase)(type.replace("NullProvider_", ""));
67
+ }
68
+ // Special handling for provider blocks, e.g. aws_AwsProvider
69
+ if (type === `${(0, utils_1.pascalCase)(provider)}Provider`) {
70
+ return (0, provider_generator_1.sanitizeClassOrNamespaceName)(type, true);
71
+ }
72
+ const fullProviderName = (0, provider_1.getFullProviderName)(scope.providerSchema, provider);
73
+ if (fullProviderName && scope.providerGenerator[fullProviderName]) {
74
+ return (_a = scope.providerGenerator[fullProviderName]) === null || _a === void 0 ? void 0 : _a.getClassNameForResource(type);
75
+ }
76
+ else {
77
+ // If we can not find the class name for a resource the caller needs to find a sensible default
78
+ return null;
79
+ }
80
+ }
81
+ function getResourceNamespace(scope, provider, resource, isDataSource, type) {
82
+ var _a;
83
+ // happens e.g. for references to cdktn.TerraformStack (and similar) in generated code
84
+ if (provider === "cdktn") {
85
+ return undefined;
86
+ }
87
+ // e.g. awsProvider -> provider
88
+ if (resource === (0, utils_1.pascalCase)(`${provider}_provider`) ||
89
+ (provider === "NullProvider" && resource === "NullProvider")) {
90
+ return "provider";
91
+ }
92
+ const fullProviderName = (0, provider_1.getFullProviderName)(scope.providerSchema, provider);
93
+ if (fullProviderName && scope.providerGenerator[fullProviderName]) {
94
+ return (0, utils_1.camelCase)((_a = scope.providerGenerator[fullProviderName]) === null || _a === void 0 ? void 0 : _a.getNamespaceNameForResource(type.replace(/\./g, "_")));
95
+ }
96
+ if (isDataSource) {
97
+ return (0, utils_1.camelCase)((0, provider_generator_1.sanitizeClassOrNamespaceName)(`data_${provider}_${resource}`));
98
+ }
99
+ return (0, utils_1.camelCase)((0, provider_generator_1.sanitizeClassOrNamespaceName)(resource));
100
+ }
101
+ function constructAst(scope, type, isModuleImport) {
102
+ if (isModuleImport) {
103
+ return t.memberExpression(t.identifier(type), t.identifier(type));
104
+ }
105
+ if (type.startsWith("var.")) {
106
+ scope.importables.push({
107
+ provider: "cdktn",
108
+ constructName: "TerraformVariable",
109
+ });
110
+ return t.identifier("TerraformVariable");
111
+ }
112
+ if (type === "terraform.data") {
113
+ scope.importables.push({
114
+ constructName: "DataResource",
115
+ provider: "cdktn",
116
+ });
117
+ return t.identifier("DataResource");
118
+ }
119
+ // resources or data sources
120
+ if (!type.includes("./") && type.includes(".")) {
121
+ const parts = type.split(".");
122
+ if (parts[0] === "data") {
123
+ const [, provider, resource] = parts;
124
+ const namespace = getResourceNamespace(scope, provider, resource, true, type);
125
+ const resourceName = getUniqueName(scope, provider, parts.join("_")) ||
126
+ (0, utils_1.pascalCase)((0, provider_generator_1.sanitizeClassOrNamespaceName)(`data_${provider}_${resource}`));
127
+ scope.importables.push({
128
+ provider: provider,
129
+ constructName: resourceName,
130
+ namespace,
131
+ });
132
+ if (namespace) {
133
+ return t.identifier(resourceName); // e.g. DataAwsInstance
134
+ }
135
+ return t.identifier(resourceName); // e.g. DataAwsNatGateway
136
+ }
137
+ const [provider, resource] = parts;
138
+ const namespace = getResourceNamespace(scope, provider, resource, false, type);
139
+ const resourceName = getUniqueName(scope, provider, parts.join("_")) ||
140
+ (0, utils_1.pascalCase)((0, provider_generator_1.sanitizeClassOrNamespaceName)(resource));
141
+ scope.importables.push({
142
+ provider: provider,
143
+ constructName: resourceName,
144
+ namespace,
145
+ });
146
+ if (namespace) {
147
+ return t.identifier(resourceName); // e.g. Instance
148
+ }
149
+ return t.identifier(resourceName); // e.g. BigQueryTable
150
+ }
151
+ return t.identifier((0, utils_1.pascalCase)(type));
152
+ }
153
+ exports.constructAst = constructAst;
154
+ function variableName(scope, resource, name) {
155
+ const consistentResourceName = resource.replace(/\./g, "_");
156
+ // name collision, we need to prefix the name
157
+ if (scope.variables[name]) {
158
+ if (consistentResourceName === scope.variables[name].resource) {
159
+ return scope.variables[name].variableName;
160
+ }
161
+ // we only cache one per name
162
+ return validVarName((0, utils_1.camelCase)([resource, name].join("_")));
163
+ }
164
+ const variableName = validVarName((0, utils_1.camelCase)(name));
165
+ scope.variables[name] = {
166
+ variableName,
167
+ resource: consistentResourceName,
168
+ };
169
+ return variableName;
170
+ }
171
+ exports.variableName = variableName;
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsZ0RBQWtDO0FBRWxDLG1DQUFnRDtBQUNoRCxrRUFBeUU7QUFDekUseUNBQWlEO0FBQ2pELG9FQUEyQztBQUUzQyxTQUFnQix1QkFBdUIsQ0FDckMsS0FBbUIsRUFDbkIsR0FBYztJQUVkLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQVJELDBEQVFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxJQUFJLHdCQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FB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QUMsZ0JBQWdCO1FBQ3JELENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDMUQsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBcEZELG9DQW9GQztBQUVELFNBQWdCLFlBQVksQ0FDMUIsS0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsSUFBWTtJQUVaLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsNkNBQTZDO0lBQzdDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUksc0JBQXNCLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzVDLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsT0FBTyxZQUFZLENBQUMsSUFBQSxpQkFBUyxFQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVuRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHO1FBQ3RCLFlBQVk7UUFDWixRQUFRLEVBQUUsc0JBQXNCO0tBQ2pDLENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBeEJELG9DQXdCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0ICogYXMgdCBmcm9tIFwiQGJhYmVsL3R5cGVzXCI7XG5pbXBvcnQgeyBQcm9ncmFtU2NvcGUsIFJlZmVyZW5jZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBjYW1lbENhc2UsIHBhc2NhbENhc2UgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgc2FuaXRpemVDbGFzc09yTmFtZXNwYWNlTmFtZSB9IGZyb20gXCJAY2RrdG4vcHJvdmlkZXItZ2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBnZXRGdWxsUHJvdmlkZXJOYW1lIH0gZnJvbSBcIi4vcHJvdmlkZXJcIjtcbmltcG9ydCByZXNlcnZlZFdvcmRzIGZyb20gXCJyZXNlcnZlZC13b3Jkc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlVG9WYXJpYWJsZU5hbWUoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIHJlZjogUmVmZXJlbmNlLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSByZWYucmVmZXJlbmNlZS5pZC5zcGxpdChcIi5cIik7XG4gIGNvbnN0IHJlc291cmNlID0gcGFydHNbMF0gPT09IFwiZGF0YVwiID8gYCR7cGFydHNbMF19LiR7cGFydHNbMV19YCA6IHBhcnRzWzBdO1xuICBjb25zdCBuYW1lID0gcGFydHNbMF0gPT09IFwiZGF0YVwiID8gcGFydHNbMl0gOiBwYXJ0c1sxXTtcbiAgcmV0dXJuIHZhcmlhYmxlTmFtZShzY29wZSwgcmVzb3VyY2UsIG5hbWUpO1xufVxuXG5mdW5jdGlvbiB2YWxpZFZhck5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChyZXNlcnZlZFdvcmRzLmNoZWNrKG5hbWUpKSB7XG4gICAgcmV0dXJuIGAke25hbWV9VmFyYDtcbiAgfVxuXG4gIGlmICghTnVtYmVyLmlzTmFOKHBhcnNlSW50KG5hbWVbMF0sIDEwKSkpIHtcbiAgICByZXR1cm4gYGQke25hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBuYW1lO1xufVxuXG5mdW5jdGlvbiBnZXRVbmlxdWVOYW1lKHNjb3BlOiBQcm9ncmFtU2NvcGUsIHByb3ZpZGVyOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAvLyBlYXJseSBhYm9ydCBvbiBjZGt0ZlxuICBpZiAocHJvdmlkZXIgPT09IFwiY2RrdGZcIikge1xuICAgIHJldHVybiBwYXNjYWxDYXNlKHR5cGUucmVwbGFjZShcImNka3RmX1wiLCBcIlwiKSk7XG4gIH1cbiAgLy8gZWFybHkgYWJvcnQgb24gY2RrdG5cbiAgaWYgKHByb3ZpZGVyID09PSBcImNka3RuXCIpIHtcbiAgICByZXR1cm4gcGFzY2FsQ2FzZSh0eXBlLnJlcGxhY2UoXCJjZGt0bl9cIiwgXCJcIikpO1xuICB9XG5cbiAgaWYgKHByb3ZpZGVyID09PSBcIk51bGxQcm92aWRlclwiKSB7XG4gICAgcmV0dXJuIHBhc2NhbENhc2UodHlwZS5yZXBsYWNlKFwiTnVsbFByb3ZpZGVyX1wiLCBcIlwiKSk7XG4gIH1cblxuICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBwcm92aWRlciBibG9ja3MsIGUuZy4gYXdzX0F3c1Byb3ZpZGVyXG4gIGlmICh0eXBlID09PSBgJHtwYXNjYWxDYXNlKHByb3ZpZGVyKX1Qcm92aWRlcmApIHtcbiAgICByZXR1cm4gc2FuaXRpemVDbGFzc09yTmFtZXNwYWNlTmFtZSh0eXBlLCB0cnVlKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bGxQcm92aWRlck5hbWUgPSBnZXRGdWxsUHJvdmlkZXJOYW1lKHNjb3BlLnByb3ZpZGVyU2NoZW1hLCBwcm92aWRlcik7XG4gIGlmIChmdWxsUHJvdmlkZXJOYW1lICYmIHNjb3BlLnByb3ZpZGVyR2VuZXJhdG9yW2Z1bGxQcm92aWRlck5hbWVdKSB7XG4gICAgcmV0dXJuIHNjb3BlLnByb3ZpZGVyR2VuZXJhdG9yW2Z1bGxQcm92aWRlck5hbWVdPy5nZXRDbGFzc05hbWVGb3JSZXNvdXJjZShcbiAgICAgIHR5cGUsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB3ZSBjYW4gbm90IGZpbmQgdGhlIGNsYXNzIG5hbWUgZm9yIGEgcmVzb3VyY2UgdGhlIGNhbGxlciBuZWVkcyB0byBmaW5kIGEgc2Vuc2libGUgZGVmYXVsdFxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJlc291cmNlTmFtZXNwYWNlKFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICBwcm92aWRlcjogc3RyaW5nLFxuICByZXNvdXJjZTogc3RyaW5nLFxuICBpc0RhdGFTb3VyY2U6IGJvb2xlYW4sXG4gIHR5cGU6IHN0cmluZyxcbikge1xuICAvLyBoYXBwZW5zIGUuZy4gZm9yIHJlZmVyZW5jZXMgdG8gY2RrdG4uVGVycmFmb3JtU3RhY2sgKGFuZCBzaW1pbGFyKSBpbiBnZW5lcmF0ZWQgY29kZVxuICBpZiAocHJvdmlkZXIgPT09IFwiY2RrdG5cIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBlLmcuIGF3c1Byb3ZpZGVyIC0+IHByb3ZpZGVyXG4gIGlmIChcbiAgICByZXNvdXJjZSA9PT0gcGFzY2FsQ2FzZShgJHtwcm92aWRlcn1fcHJvdmlkZXJgKSB8fFxuICAgIChwcm92aWRlciA9PT0gXCJOdWxsUHJvdmlkZXJcIiAmJiByZXNvdXJjZSA9PT0gXCJOdWxsUHJvdmlkZXJcIilcbiAgKSB7XG4gICAgcmV0dXJuIFwicHJvdmlkZXJcIjtcbiAgfVxuXG4gIGNvbnN0IGZ1bGxQcm92aWRlck5hbWUgPSBnZXRGdWxsUHJvdmlkZXJOYW1lKHNjb3BlLnByb3ZpZGVyU2NoZW1hLCBwcm92aWRlcik7XG5cbiAgaWYgKGZ1bGxQcm92aWRlck5hbWUgJiYgc2NvcGUucHJvdmlkZXJHZW5lcmF0b3JbZnVsbFByb3ZpZGVyTmFtZV0pIHtcbiAgICByZXR1cm4gY2FtZWxDYXNlKFxuICAgICAgc2NvcGUucHJvdmlkZXJHZW5lcmF0b3JbZnVsbFByb3ZpZGVyTmFtZV0/LmdldE5hbWVzcGFjZU5hbWVGb3JSZXNvdXJjZShcbiAgICAgICAgdHlwZS5yZXBsYWNlKC9cXC4vZywgXCJfXCIpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKGlzRGF0YVNvdXJjZSkge1xuICAgIHJldHVybiBjYW1lbENhc2UoXG4gICAgICBzYW5pdGl6ZUNsYXNzT3JOYW1lc3BhY2VOYW1lKGBkYXRhXyR7cHJvdmlkZXJ9XyR7cmVzb3VyY2V9YCksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBjYW1lbENhc2Uoc2FuaXRpemVDbGFzc09yTmFtZXNwYWNlTmFtZShyZXNvdXJjZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0QXN0KFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICB0eXBlOiBzdHJpbmcsXG4gIGlzTW9kdWxlSW1wb3J0OiBib29sZWFuLFxuKSB7XG4gIGlmIChpc01vZHVsZUltcG9ydCkge1xuICAgIHJldHVybiB0Lm1lbWJlckV4cHJlc3Npb24odC5pZGVudGlmaWVyKHR5cGUpLCB0LmlkZW50aWZpZXIodHlwZSkpO1xuICB9XG5cbiAgaWYgKHR5cGUuc3RhcnRzV2l0aChcInZhci5cIikpIHtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgICBjb25zdHJ1Y3ROYW1lOiBcIlRlcnJhZm9ybVZhcmlhYmxlXCIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdC5pZGVudGlmaWVyKFwiVGVycmFmb3JtVmFyaWFibGVcIik7XG4gIH1cblxuICBpZiAodHlwZSA9PT0gXCJ0ZXJyYWZvcm0uZGF0YVwiKSB7XG4gICAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgICBjb25zdHJ1Y3ROYW1lOiBcIkRhdGFSZXNvdXJjZVwiLFxuICAgICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgICB9KTtcbiAgICByZXR1cm4gdC5pZGVudGlmaWVyKFwiRGF0YVJlc291cmNlXCIpO1xuICB9XG5cbiAgLy8gcmVzb3VyY2VzIG9yIGRhdGEgc291cmNlc1xuICBpZiAoIXR5cGUuaW5jbHVkZXMoXCIuL1wiKSAmJiB0eXBlLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgIGNvbnN0IHBhcnRzID0gdHlwZS5zcGxpdChcIi5cIik7XG4gICAgaWYgKHBhcnRzWzBdID09PSBcImRhdGFcIikge1xuICAgICAgY29uc3QgWywgcHJvdmlkZXIsIHJlc291cmNlXSA9IHBhcnRzO1xuXG4gICAgICBjb25zdCBuYW1lc3BhY2UgPSBnZXRSZXNvdXJjZU5hbWVzcGFjZShcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICk7XG4gICAgICBjb25zdCByZXNvdXJjZU5hbWUgPVxuICAgICAgICBnZXRVbmlxdWVOYW1lKHNjb3BlLCBwcm92aWRlciwgcGFydHMuam9pbihcIl9cIikpIHx8XG4gICAgICAgIHBhc2NhbENhc2UoXG4gICAgICAgICAgc2FuaXRpemVDbGFzc09yTmFtZXNwYWNlTmFtZShgZGF0YV8ke3Byb3ZpZGVyfV8ke3Jlc291cmNlfWApLFxuICAgICAgICApO1xuXG4gICAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyLFxuICAgICAgICBjb25zdHJ1Y3ROYW1lOiByZXNvdXJjZU5hbWUsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybiB0LmlkZW50aWZpZXIocmVzb3VyY2VOYW1lKTsgLy8gZS5nLiBEYXRhQXdzSW5zdGFuY2VcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHQuaWRlbnRpZmllcihyZXNvdXJjZU5hbWUpOyAvLyBlLmcuIERhdGFBd3NOYXRHYXRld2F5XG4gICAgfVxuXG4gICAgY29uc3QgW3Byb3ZpZGVyLCByZXNvdXJjZV0gPSBwYXJ0cztcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBnZXRSZXNvdXJjZU5hbWVzcGFjZShcbiAgICAgIHNjb3BlLFxuICAgICAgcHJvdmlkZXIsXG4gICAgICByZXNvdXJjZSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHlwZSxcbiAgICApO1xuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9XG4gICAgICBnZXRVbmlxdWVOYW1lKHNjb3BlLCBwcm92aWRlciwgcGFydHMuam9pbihcIl9cIikpIHx8XG4gICAgICBwYXNjYWxDYXNlKHNhbml0aXplQ2xhc3NPck5hbWVzcGFjZU5hbWUocmVzb3VyY2UpKTtcblxuICAgIHNjb3BlLmltcG9ydGFibGVzLnB1c2goe1xuICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyLFxuICAgICAgY29uc3RydWN0TmFtZTogcmVzb3VyY2VOYW1lLFxuICAgICAgbmFtZXNwYWNlLFxuICAgIH0pO1xuXG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgcmV0dXJuIHQuaWRlbnRpZmllcihyZXNvdXJjZU5hbWUpOyAvLyBlLmcuIEluc3RhbmNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHQuaWRlbnRpZmllcihyZXNvdXJjZU5hbWUpOyAvLyBlLmcuIEJpZ1F1ZXJ5VGFibGVcbiAgfVxuXG4gIHJldHVybiB0LmlkZW50aWZpZXIocGFzY2FsQ2FzZSh0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZU5hbWUoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIHJlc291cmNlOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbnNpc3RlbnRSZXNvdXJjZU5hbWUgPSByZXNvdXJjZS5yZXBsYWNlKC9cXC4vZywgXCJfXCIpO1xuICAvLyBuYW1lIGNvbGxpc2lvbiwgd2UgbmVlZCB0byBwcmVmaXggdGhlIG5hbWVcbiAgaWYgKHNjb3BlLnZhcmlhYmxlc1tuYW1lXSkge1xuICAgIGlmIChjb25zaXN0ZW50UmVzb3VyY2VOYW1lID09PSBzY29wZS52YXJpYWJsZXNbbmFtZV0ucmVzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzY29wZS52YXJpYWJsZXNbbmFtZV0udmFyaWFibGVOYW1lO1xuICAgIH1cblxuICAgIC8vIHdlIG9ubHkgY2FjaGUgb25lIHBlciBuYW1lXG4gICAgcmV0dXJuIHZhbGlkVmFyTmFtZShjYW1lbENhc2UoW3Jlc291cmNlLCBuYW1lXS5qb2luKFwiX1wiKSkpO1xuICB9XG5cbiAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFsaWRWYXJOYW1lKGNhbWVsQ2FzZShuYW1lKSk7XG5cbiAgc2NvcGUudmFyaWFibGVzW25hbWVdID0ge1xuICAgIHZhcmlhYmxlTmFtZSxcbiAgICByZXNvdXJjZTogY29uc2lzdGVudFJlc291cmNlTmFtZSxcbiAgfTtcblxuICByZXR1cm4gdmFyaWFibGVOYW1lO1xufVxuIl19
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@cdktn/hcl2cdk",
3
+ "version": "0.21.0",
4
+ "description": "Transform HCL into CDK",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "watch": "tsc -w",
13
+ "watch-preserve-output": "tsc -w --preserveWatchOutput",
14
+ "test": "jest --runInBand",
15
+ "test:ci": "jest --ci --runInBand",
16
+ "test:update": "jest -u --runInBand",
17
+ "jest-watch": "jest --watch",
18
+ "package": "./package.sh",
19
+ "dist-clean": "rm -rf dist",
20
+ "package:js": "./package.sh"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git://github.com/open-constructs/cdk-terrain.git",
25
+ "directory": "packages/@cdktn/hcl2cdk"
26
+ },
27
+ "author": {
28
+ "name": "OpenConstructs",
29
+ "url": "https://github.com/open-constructs"
30
+ },
31
+ "keywords": [
32
+ "cdk",
33
+ "cdktf",
34
+ "terraform",
35
+ "hcl"
36
+ ],
37
+ "license": "MPL-2.0",
38
+ "dependencies": {
39
+ "@babel/generator": "7.27.1",
40
+ "@babel/template": "7.27.2",
41
+ "@babel/types": "7.27.1",
42
+ "@cdktn/commons": "0.21.0",
43
+ "@cdktn/hcl2json": "0.21.0",
44
+ "@cdktn/provider-generator": "0.21.0",
45
+ "@cdktn/provider-schema": "0.21.0",
46
+ "camelcase": "6.3.0",
47
+ "cdktn": "0.21.0",
48
+ "codemaker": "1.112.0",
49
+ "deep-equal": "2.2.3",
50
+ "glob": "10.4.5",
51
+ "graphology": "0.26.0",
52
+ "graphology-types": "0.24.7",
53
+ "jsii-rosetta": "5.8.8",
54
+ "prettier": "2.8.8",
55
+ "reserved-words": "0.1.2",
56
+ "zod": "3.24.4"
57
+ },
58
+ "devDependencies": {
59
+ "@types/deep-equal": "1.0.4",
60
+ "@types/glob": "8.1.0",
61
+ "@types/jest": "29.5.14",
62
+ "@types/node": "20.17.51",
63
+ "@types/prettier": "2.7.3",
64
+ "@types/reserved-words": "0.1.4",
65
+ "execa": "5.1.1",
66
+ "fs-extra": "11.3.0",
67
+ "jest": "^29.7.0",
68
+ "ts-jest": "29.3.4",
69
+ "typescript": "5.4.5"
70
+ }
71
+ }
package/package.sh ADDED
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+ # Copyright (c) HashiCorp, Inc.
3
+ # SPDX-License-Identifier: MPL-2.0
4
+
5
+ set -euo pipefail
6
+ bundle=$(npm pack)
7
+ rm -fr dist
8
+ mkdir -p dist/js
9
+ mv ${bundle} dist/js
package/tsconfig.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "compilerOptions": {
3
+ "alwaysStrict": true,
4
+ "declaration": true,
5
+ "declarationMap": true,
6
+ "experimentalDecorators": true,
7
+ "inlineSourceMap": true,
8
+ "inlineSources": true,
9
+ "lib": [
10
+ "ES2020"
11
+ ],
12
+ "module": "CommonJS",
13
+ "noEmitOnError": false,
14
+ "noFallthroughCasesInSwitch": true,
15
+ "noImplicitAny": true,
16
+ "noImplicitReturns": true,
17
+ "noImplicitThis": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "jsx": "react",
21
+ "resolveJsonModule": true,
22
+ "strict": true,
23
+ "strictNullChecks": true,
24
+ "strictPropertyInitialization": true,
25
+ "stripInternal": true,
26
+ "skipLibCheck": true,
27
+ "target": "ES2018",
28
+ "incremental": true,
29
+ "esModuleInterop": true
30
+ },
31
+ "files": [
32
+ "ambient.d.ts"
33
+ ],
34
+ "include": [
35
+ "**/*.ts",
36
+ ],
37
+ "exclude": [
38
+ "node_modules",
39
+ "cdktf-convert-test*/**/*",
40
+ "**/*.d.ts",
41
+ ],
42
+ }