@cdktn/provider-generator 0.23.0-pre.7 → 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/{lib → build}/__tests__/edge-provider-schema/builder.d.ts +1 -0
- package/build/__tests__/edge-provider-schema/builder.js +106 -0
- package/build/__tests__/edge-provider-schema/cli.d.ts +2 -0
- package/build/__tests__/edge-provider-schema/cli.js +67 -0
- package/{lib → build}/__tests__/edge-provider-schema/index.d.ts +1 -0
- package/build/__tests__/edge-provider-schema/index.js +154 -0
- package/build/__tests__/edge-provider-schema.test.d.ts +2 -0
- package/build/__tests__/edge-provider-schema.test.js +46 -0
- package/build/__tests__/provider.test.d.ts +2 -0
- package/build/__tests__/provider.test.js +158 -0
- package/build/get/__tests__/constructs-maker.test.d.ts +2 -0
- package/build/get/__tests__/constructs-maker.test.js +113 -0
- package/build/get/__tests__/generator/complex-computed-types.test.d.ts +2 -0
- package/build/get/__tests__/generator/complex-computed-types.test.js +42 -0
- package/build/get/__tests__/generator/deep-nested-attributes.test.d.ts +2 -0
- package/build/get/__tests__/generator/deep-nested-attributes.test.js +50 -0
- package/build/get/__tests__/generator/description-escaping.test.d.ts +2 -0
- package/build/get/__tests__/generator/description-escaping.test.js +65 -0
- package/build/get/__tests__/generator/empty-provider-resources.test.d.ts +2 -0
- package/build/get/__tests__/generator/empty-provider-resources.test.js +40 -0
- package/build/get/__tests__/generator/export-sharding.test.d.ts +2 -0
- package/build/get/__tests__/generator/export-sharding.test.js +82 -0
- package/build/get/__tests__/generator/module-generator.test.d.ts +2 -0
- package/build/get/__tests__/generator/module-generator.test.js +476 -0
- package/build/get/__tests__/generator/nested-types.test.d.ts +2 -0
- package/build/get/__tests__/generator/nested-types.test.js +51 -0
- package/build/get/__tests__/generator/provider.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider.test.js +51 -0
- package/build/get/__tests__/generator/resource-types.test.d.ts +2 -0
- package/build/get/__tests__/generator/resource-types.test.js +78 -0
- package/build/get/__tests__/generator/skipped-attributes.test.d.ts +2 -0
- package/build/get/__tests__/generator/skipped-attributes.test.js +55 -0
- package/build/get/__tests__/generator/types.test.d.ts +2 -0
- package/build/get/__tests__/generator/types.test.js +289 -0
- package/build/get/__tests__/generator/versions-file.test.d.ts +2 -0
- package/build/get/__tests__/generator/versions-file.test.js +74 -0
- package/{lib → build}/get/__tests__/util.d.ts +1 -0
- package/build/get/__tests__/util.js +59 -0
- package/{lib → build}/get/constructs-maker.d.ts +2 -1
- package/{lib → build}/get/constructs-maker.js +5 -2
- package/{lib → build}/get/generator/custom-defaults.d.ts +1 -0
- package/build/get/generator/custom-defaults.js +403 -0
- package/{lib → build}/get/generator/emitter/attributes-emitter.d.ts +1 -0
- package/build/get/generator/emitter/attributes-emitter.js +161 -0
- package/{lib → build}/get/generator/emitter/index.d.ts +1 -0
- package/{lib → build}/get/generator/emitter/index.js +1 -1
- package/{lib → build}/get/generator/emitter/resource-emitter.d.ts +1 -0
- package/build/get/generator/emitter/resource-emitter.js +147 -0
- package/{lib → build}/get/generator/emitter/struct-emitter.d.ts +1 -0
- package/build/get/generator/emitter/struct-emitter.js +500 -0
- package/{lib → build}/get/generator/loop-detection.d.ts +1 -0
- package/build/get/generator/loop-detection.js +56 -0
- package/{lib → build}/get/generator/models/attribute-model.d.ts +1 -0
- package/build/get/generator/models/attribute-model.js +160 -0
- package/{lib → build}/get/generator/models/attribute-type-model.d.ts +1 -0
- package/build/get/generator/models/attribute-type-model.js +376 -0
- package/{lib → build}/get/generator/models/index.d.ts +1 -0
- package/{lib → build}/get/generator/models/index.js +1 -1
- package/{lib → build}/get/generator/models/resource-model.d.ts +1 -0
- package/build/get/generator/models/resource-model.js +106 -0
- package/{lib → build}/get/generator/models/scope.d.ts +1 -0
- package/build/get/generator/models/scope.js +36 -0
- package/{lib → build}/get/generator/models/struct.d.ts +1 -0
- package/build/get/generator/models/struct.js +90 -0
- package/{lib → build}/get/generator/module-generator.d.ts +1 -0
- package/build/get/generator/module-generator.js +184 -0
- package/{lib → build}/get/generator/provider-generator.d.ts +1 -0
- package/build/get/generator/provider-generator.js +225 -0
- package/{lib → build}/get/generator/resource-parser.d.ts +1 -0
- package/build/get/generator/resource-parser.js +497 -0
- package/{lib → build}/get/generator/sanitized-comments.d.ts +1 -0
- package/build/get/generator/sanitized-comments.js +44 -0
- package/{lib → build}/get/generator/skipped-attributes.d.ts +1 -0
- package/build/get/generator/skipped-attributes.js +29 -0
- package/{lib → build}/index.d.ts +1 -0
- package/{lib → build}/index.js +1 -1
- package/{lib → build}/util.d.ts +1 -0
- package/build/util.js +30 -0
- package/package.json +13 -15
- package/{lib → src}/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +1 -1
- package/{lib → src}/__tests__/__snapshots__/provider.test.ts.snap +14953 -890
- package/{lib → src}/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/description-escaping.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +10 -10
- package/{lib → src}/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/provider.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +1 -1
- package/{lib → src}/get/__tests__/generator/__snapshots__/types.test.ts.snap +92 -1
- package/src/get/__tests__/generator/fixtures/map-of-map-of-string.test.fixture.json +27 -0
- package/tsconfig.json +6 -3
- package/lib/__tests__/edge-provider-schema/builder.js +0 -106
- package/lib/__tests__/edge-provider-schema/cli.d.ts +0 -1
- package/lib/__tests__/edge-provider-schema/cli.js +0 -67
- package/lib/__tests__/edge-provider-schema/index.js +0 -154
- package/lib/__tests__/edge-provider-schema.test.d.ts +0 -1
- package/lib/__tests__/edge-provider-schema.test.js +0 -46
- package/lib/__tests__/provider.test.d.ts +0 -1
- package/lib/__tests__/provider.test.js +0 -158
- package/lib/get/__tests__/constructs-maker.test.d.ts +0 -1
- package/lib/get/__tests__/constructs-maker.test.js +0 -113
- package/lib/get/__tests__/generator/complex-computed-types.test.d.ts +0 -1
- package/lib/get/__tests__/generator/complex-computed-types.test.js +0 -42
- package/lib/get/__tests__/generator/deep-nested-attributes.test.d.ts +0 -1
- package/lib/get/__tests__/generator/deep-nested-attributes.test.js +0 -50
- package/lib/get/__tests__/generator/description-escaping.test.d.ts +0 -1
- package/lib/get/__tests__/generator/description-escaping.test.js +0 -65
- package/lib/get/__tests__/generator/empty-provider-resources.test.d.ts +0 -1
- package/lib/get/__tests__/generator/empty-provider-resources.test.js +0 -40
- package/lib/get/__tests__/generator/export-sharding.test.d.ts +0 -1
- package/lib/get/__tests__/generator/export-sharding.test.js +0 -82
- package/lib/get/__tests__/generator/module-generator.test.d.ts +0 -1
- package/lib/get/__tests__/generator/module-generator.test.js +0 -476
- package/lib/get/__tests__/generator/nested-types.test.d.ts +0 -1
- package/lib/get/__tests__/generator/nested-types.test.js +0 -51
- package/lib/get/__tests__/generator/provider.test.d.ts +0 -1
- package/lib/get/__tests__/generator/provider.test.js +0 -51
- package/lib/get/__tests__/generator/resource-types.test.d.ts +0 -1
- package/lib/get/__tests__/generator/resource-types.test.js +0 -78
- package/lib/get/__tests__/generator/skipped-attributes.test.d.ts +0 -1
- package/lib/get/__tests__/generator/skipped-attributes.test.js +0 -55
- package/lib/get/__tests__/generator/types.test.d.ts +0 -1
- package/lib/get/__tests__/generator/types.test.js +0 -280
- package/lib/get/__tests__/generator/versions-file.test.d.ts +0 -1
- package/lib/get/__tests__/generator/versions-file.test.js +0 -74
- package/lib/get/__tests__/util.js +0 -59
- package/lib/get/generator/custom-defaults.js +0 -403
- package/lib/get/generator/emitter/attributes-emitter.js +0 -161
- package/lib/get/generator/emitter/resource-emitter.js +0 -144
- package/lib/get/generator/emitter/struct-emitter.js +0 -500
- package/lib/get/generator/loop-detection.js +0 -56
- package/lib/get/generator/models/attribute-model.js +0 -160
- package/lib/get/generator/models/attribute-type-model.js +0 -376
- package/lib/get/generator/models/resource-model.js +0 -106
- package/lib/get/generator/models/scope.js +0 -36
- package/lib/get/generator/models/struct.js +0 -90
- package/lib/get/generator/module-generator.js +0 -184
- package/lib/get/generator/provider-generator.js +0 -225
- package/lib/get/generator/resource-parser.js +0 -497
- package/lib/get/generator/sanitized-comments.js +0 -44
- package/lib/get/generator/skipped-attributes.js +0 -29
- package/lib/util.js +0 -30
- /package/{lib → src}/get/__tests__/generator/fixtures/aws-provider.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_acm_certificate.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_cloudfront_distribution.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_fms_admin_account.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_quicksight_template.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_s3_bucket.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_security_group.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/aws_wafv2_web_acl.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/block-type-nested-computed-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/block-type-set-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/boolean-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/boolean-map.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/comment-ending-sequence.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex-nested.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/computed-optional-complex.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/data_aws_quicksight_analysis.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/datadog_dashboard.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/datadog_spans_metric.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/deep-attributes.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/deeply-nested-block-types.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/description-escaping.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/elasticstack-provider.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/empty-provider-resources.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/ignored-attributes.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-attribute-names.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-resource-names.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/list-list-object.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/list-list-string.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/list-of-string-map.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/map-of-string-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/markdown-description-with-code-blocks.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-get-x.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-1.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-2.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-no-outputs.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-no-variable-type.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/module-with-star-default.test.fixture.tf +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/name-conflict.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/nested-type-without-attributes.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/nested-types.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/number-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/number-map.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/primitive-boolean.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/primitive-dynamic.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/primitive-number.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/primitive-string.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/single-block-type.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/string-list.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/string-map.test.fixture.json +0 -0
- /package/{lib → src}/get/__tests__/generator/fixtures/stripe-schema.test.fixture.json +0 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AttributesEmitter = void 0;
|
|
4
|
+
const models_1 = require("../models");
|
|
5
|
+
const custom_defaults_1 = require("../custom-defaults");
|
|
6
|
+
function titleCase(value) {
|
|
7
|
+
return value[0].toUpperCase() + value.slice(1);
|
|
8
|
+
}
|
|
9
|
+
class AttributesEmitter {
|
|
10
|
+
constructor(code) {
|
|
11
|
+
this.code = code;
|
|
12
|
+
}
|
|
13
|
+
emit(att, escapeReset, escapeInput) {
|
|
14
|
+
this.code.line();
|
|
15
|
+
this.code.line(`// ${att.terraformName} - computed: ${att.computed}, optional: ${att.isOptional}, required: ${att.isRequired}`);
|
|
16
|
+
const isStored = att.isStored;
|
|
17
|
+
const hasResetMethod = isStored && !att.isRequired && att.setterType._type !== "none";
|
|
18
|
+
const hasInputMethod = isStored && att.setterType._type !== "none";
|
|
19
|
+
const getterType = att.getterType;
|
|
20
|
+
if (getterType._type === "stored_class") {
|
|
21
|
+
this.code.line(`private ${att.storageName} = ${this.storedClassInit(att)};`);
|
|
22
|
+
}
|
|
23
|
+
else if (isStored) {
|
|
24
|
+
this.code.line(`private ${att.storageName}?: ${att.type.inputTypeDefinition}; `);
|
|
25
|
+
}
|
|
26
|
+
switch (getterType._type) {
|
|
27
|
+
case "plain":
|
|
28
|
+
this.code.openBlock(`public get ${att.name}()`);
|
|
29
|
+
this.code.line(`return ${this.determineGetAttCall(att)};`);
|
|
30
|
+
this.code.closeBlock();
|
|
31
|
+
break;
|
|
32
|
+
case "args":
|
|
33
|
+
this.code.openBlock(`public ${att.name}(${getterType.args})${getterType.returnType ? ": " + getterType.returnType : ""}`);
|
|
34
|
+
this.code.line(`return ${getterType.returnStatement};`);
|
|
35
|
+
this.code.closeBlock();
|
|
36
|
+
break;
|
|
37
|
+
case "stored_class":
|
|
38
|
+
this.code.openBlock(`public get ${att.name}()`);
|
|
39
|
+
this.code.line(`return this.${att.storageName};`);
|
|
40
|
+
this.code.closeBlock();
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
const setterType = att.setterType;
|
|
44
|
+
switch (setterType._type) {
|
|
45
|
+
case "set":
|
|
46
|
+
this.code.openBlock(`public set ${att.name}(value: ${setterType.type})`);
|
|
47
|
+
this.code.line(`this.${att.storageName} = value;`);
|
|
48
|
+
this.code.closeBlock();
|
|
49
|
+
break;
|
|
50
|
+
case "put":
|
|
51
|
+
this.code.openBlock(`public put${titleCase(att.name)}(value: ${setterType.type})`);
|
|
52
|
+
this.code.line(`this.${att.storageName} = value;`);
|
|
53
|
+
this.code.closeBlock();
|
|
54
|
+
break;
|
|
55
|
+
case "stored_class":
|
|
56
|
+
this.code.openBlock(`public put${titleCase(att.name)}(value: ${setterType.type})`);
|
|
57
|
+
this.code.line(`this.${att.storageName}.internalValue = value;`);
|
|
58
|
+
this.code.closeBlock();
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
if (hasResetMethod) {
|
|
62
|
+
this.code.openBlock(`public ${this.getResetName(att.name, escapeReset)}()`);
|
|
63
|
+
if (setterType._type === "stored_class") {
|
|
64
|
+
this.code.line(`this.${att.storageName}.internalValue = undefined;`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.code.line(`this.${att.storageName} = undefined;`);
|
|
68
|
+
}
|
|
69
|
+
this.code.closeBlock();
|
|
70
|
+
}
|
|
71
|
+
if (hasInputMethod) {
|
|
72
|
+
this.code.line(`// Temporarily expose input value. Use with caution.`);
|
|
73
|
+
this.code.openBlock(`public get ${this.getInputName(att, escapeInput)}()`);
|
|
74
|
+
if (setterType._type === "stored_class") {
|
|
75
|
+
this.code.line(`return this.${att.storageName}.internalValue;`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.code.line(`return this.${att.storageName};`);
|
|
79
|
+
}
|
|
80
|
+
this.code.closeBlock();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// returns an invocation of a stored class, e.g. 'new DeplotmentMetadataOutputReference(this, "metadata")'
|
|
84
|
+
storedClassInit(att) {
|
|
85
|
+
return att.type.getStoredClassInitializer(att.terraformName);
|
|
86
|
+
}
|
|
87
|
+
determineGetAttCall(att) {
|
|
88
|
+
if (att.isProvider) {
|
|
89
|
+
return `this.${att.storageName}`;
|
|
90
|
+
}
|
|
91
|
+
return att.type.getAttributeAccessFunction(att.terraformName);
|
|
92
|
+
}
|
|
93
|
+
needsInputEscape(att, attributes) {
|
|
94
|
+
return (attributes.find((a) => a.terraformName.match(`^${att.terraformName}_input$`)) instanceof models_1.AttributeModel);
|
|
95
|
+
}
|
|
96
|
+
getInputName(att, escape) {
|
|
97
|
+
if (escape) {
|
|
98
|
+
return `${att.name}TfInput`;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return `${att.name}Input`;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
needsResetEscape(att, attributes) {
|
|
105
|
+
return (attributes.find((a) => a.terraformName.match(`^reset_${att.terraformName}$`)) instanceof models_1.AttributeModel);
|
|
106
|
+
}
|
|
107
|
+
getResetName(name, escape) {
|
|
108
|
+
if (!name)
|
|
109
|
+
return name;
|
|
110
|
+
if (escape) {
|
|
111
|
+
return `resetTf${titleCase(name)}`;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return `reset${titleCase(name)}`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
emitToHclTerraform(att, isStruct) {
|
|
118
|
+
var _a;
|
|
119
|
+
const type = att.type;
|
|
120
|
+
const context = isStruct ? "struct!" : "this";
|
|
121
|
+
const name = isStruct ? att.name : att.storageName;
|
|
122
|
+
const customDefault = custom_defaults_1.CUSTOM_DEFAULTS[att.terraformFullName];
|
|
123
|
+
const varReference = `${context}.${name}${!isStruct &&
|
|
124
|
+
type.isComplex &&
|
|
125
|
+
!att.isProvider &&
|
|
126
|
+
(((_a = type.struct) === null || _a === void 0 ? void 0 : _a.isClass) || att.getterType._type === "stored_class")
|
|
127
|
+
? ".internalValue"
|
|
128
|
+
: ""}`;
|
|
129
|
+
const defaultCheck = customDefault !== undefined
|
|
130
|
+
? `${varReference} === undefined ? ${customDefault} : `
|
|
131
|
+
: "";
|
|
132
|
+
const value = `${defaultCheck}${type.toHclTerraformFunction}(${varReference})`;
|
|
133
|
+
const isBlock = att.type.isComplex;
|
|
134
|
+
const tt = att.type.typeModelType;
|
|
135
|
+
this.code.open(`${att.terraformName}: {`);
|
|
136
|
+
this.code.line(`value: ${value},`);
|
|
137
|
+
this.code.line(`isBlock: ${isBlock},`);
|
|
138
|
+
this.code.line(`type: "${tt}",`);
|
|
139
|
+
this.code.line(`storageClassType: "${att.type.storedClassType}",`);
|
|
140
|
+
this.code.close("},");
|
|
141
|
+
}
|
|
142
|
+
emitToTerraform(att, isStruct) {
|
|
143
|
+
var _a;
|
|
144
|
+
const type = att.type;
|
|
145
|
+
const context = isStruct ? "struct!" : "this";
|
|
146
|
+
const name = isStruct ? att.name : att.storageName;
|
|
147
|
+
const customDefault = custom_defaults_1.CUSTOM_DEFAULTS[att.terraformFullName];
|
|
148
|
+
const varReference = `${context}.${name}${!isStruct &&
|
|
149
|
+
type.isComplex &&
|
|
150
|
+
!att.isProvider &&
|
|
151
|
+
(((_a = type.struct) === null || _a === void 0 ? void 0 : _a.isClass) || att.getterType._type === "stored_class")
|
|
152
|
+
? ".internalValue"
|
|
153
|
+
: ""}`;
|
|
154
|
+
const defaultCheck = customDefault !== undefined
|
|
155
|
+
? `${varReference} === undefined ? ${customDefault} : `
|
|
156
|
+
: "";
|
|
157
|
+
this.code.line(`${att.terraformName}: ${defaultCheck}${type.toTerraformFunction}(${varReference}),`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.AttributesEmitter = AttributesEmitter;
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy1lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvZW1pdHRlci9hdHRyaWJ1dGVzLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esc0NBQTJDO0FBQzNDLHdEQUFxRDtBQUVyRCxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQWEsaUJBQWlCO0lBQzVCLFlBQW9CLElBQWU7UUFBZixTQUFJLEdBQUosSUFBSSxDQUFXO0lBQUcsQ0FBQztJQUVoQyxJQUFJLENBQUMsR0FBbUIsRUFBRSxXQUFvQixFQUFFLFdBQW9CO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osTUFBTSxHQUFHLENBQUMsYUFBYSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsZUFBZSxHQUFHLENBQUMsVUFBVSxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FDaEgsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQ2xCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLFFBQVEsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7UUFFbkUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUVsQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFB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LENBQUMsUUFBUTtZQUNULElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxHQUFHLENBQUMsVUFBVTtZQUNmLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sS0FBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxjQUFjLENBQUM7WUFDL0QsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsQixDQUFDLENBQUMsRUFDTixFQUFFLENBQUM7UUFDSCxNQUFNLFlBQVksR0FDaEIsYUFBYSxLQUFLLFNBQVM7WUFDekIsQ0FBQyxDQUFDLEdBQUcsWUFBWSxvQkFBb0IsYUFBYSxLQUFLO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixHQUFHLEdBQUcsQ0FBQyxhQUFhLEtBQUssWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxZQUFZLElBQUksQ0FDckYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRORCw4Q0FzTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDVVNUT01fREVGQVVMVFMgfSBmcm9tIFwiLi4vY3VzdG9tLWRlZmF1bHRzXCI7XG5cbmZ1bmN0aW9uIHRpdGxlQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XG4gIHJldHVybiB2YWx1ZVswXS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG59XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVzRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29kZTogQ29kZU1ha2VyKSB7fVxuXG4gIHB1YmxpYyBlbWl0KGF0dDogQXR0cmlidXRlTW9kZWwsIGVzY2FwZVJlc2V0OiBib29sZWFuLCBlc2NhcGVJbnB1dDogYm9vbGVhbikge1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgLy8gJHthdHQudGVycmFmb3JtTmFtZX0gLSBjb21wdXRlZDogJHthdHQuY29tcHV0ZWR9LCBvcHRpb25hbDogJHthdHQuaXNPcHRpb25hbH0sIHJlcXVpcmVkOiAke2F0dC5pc1JlcXVpcmVkfWAsXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3RvcmVkID0gYXR0LmlzU3RvcmVkO1xuICAgIGNvbnN0IGhhc1Jlc2V0TWV0aG9kID1cbiAgICAgIGlzU3RvcmVkICYmICFhdHQuaXNSZXF1aXJlZCAmJiBhdHQuc2V0dGVyVHlwZS5fdHlwZSAhPT0gXCJub25lXCI7XG4gICAgY29uc3QgaGFzSW5wdXRNZXRob2QgPSBpc1N0b3JlZCAmJiBhdHQuc2V0dGVyVHlwZS5fdHlwZSAhPT0gXCJub25lXCI7XG5cbiAgICBjb25zdCBnZXR0ZXJUeXBlID0gYXR0LmdldHRlclR5cGU7XG5cbiAgICBpZiAoZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIikge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgIGBwcml2YXRlICR7YXR0LnN0b3JhZ2VOYW1lfSA9ICR7dGhpcy5zdG9yZWRDbGFzc0luaXQoYXR0KX07YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc1N0b3JlZCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgIGBwcml2YXRlICR7YXR0LnN0b3JhZ2VOYW1lfT86ICR7YXR0LnR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn07IGAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZ2V0dGVyVHlwZS5fdHlwZSkge1xuICAgICAgY2FzZSBcInBsYWluXCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBnZXQgJHthdHQubmFtZX0oKWApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuICR7dGhpcy5kZXRlcm1pbmVHZXRBdHRDYWxsKGF0dCl9O2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImFyZ3NcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljICR7YXR0Lm5hbWV9KCR7Z2V0dGVyVHlwZS5hcmdzfSkke1xuICAgICAgICAgICAgZ2V0dGVyVHlwZS5yZXR1cm5UeXBlID8gXCI6IFwiICsgZ2V0dGVyVHlwZS5yZXR1cm5UeXBlIDogXCJcIlxuICAgICAgICAgIH1gLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuICR7Z2V0dGVyVHlwZS5yZXR1cm5TdGF0ZW1lbnR9O2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInN0b3JlZF9jbGFzc1wiOlxuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBwdWJsaWMgZ2V0ICR7YXR0Lm5hbWV9KClgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGVyVHlwZSA9IGF0dC5zZXR0ZXJUeXBlO1xuXG4gICAgc3dpdGNoIChzZXR0ZXJUeXBlLl90eXBlKSB7XG4gICAgICBjYXNlIFwic2V0XCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBzZXQgJHthdHQubmFtZX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0gPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJwdXRcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljIHB1dCR7dGl0bGVDYXNlKGF0dC5uYW1lKX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0gPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJzdG9yZWRfY2xhc3NcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljIHB1dCR7dGl0bGVDYXNlKGF0dC5uYW1lKX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaGFzUmVzZXRNZXRob2QpIHtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgIGBwdWJsaWMgJHt0aGlzLmdldFJlc2V0TmFtZShhdHQubmFtZSwgZXNjYXBlUmVzZXQpfSgpYCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfS5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdW5kZWZpbmVkO2ApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGlmIChoYXNJbnB1dE1ldGhvZCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5gKTtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgIGBwdWJsaWMgZ2V0ICR7dGhpcy5nZXRJbnB1dE5hbWUoYXR0LCBlc2NhcGVJbnB1dCl9KClgLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfS5pbnRlcm5hbFZhbHVlO2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfTtgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm5zIGFuIGludm9jYXRpb24gb2YgYSBzdG9yZWQgY2xhc3MsIGUuZy4gJ25ldyBEZXBsb3RtZW50TWV0YWRhdGFPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJtZXRhZGF0YVwiKSdcbiAgcHJpdmF0ZSBzdG9yZWRDbGFzc0luaXQoYXR0OiBBdHRyaWJ1dGVNb2RlbCkge1xuICAgIHJldHVybiBhdHQudHlwZS5nZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKGF0dC50ZXJyYWZvcm1OYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXRlcm1pbmVHZXRBdHRDYWxsKGF0dDogQXR0cmlidXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIGlmIChhdHQuaXNQcm92aWRlcikge1xuICAgICAgcmV0dXJuIGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dC50eXBlLmdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKGF0dC50ZXJyYWZvcm1OYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBuZWVkc0lucHV0RXNjYXBlKFxuICAgIGF0dDogQXR0cmlidXRlTW9kZWwsXG4gICAgYXR0cmlidXRlczogQXR0cmlidXRlTW9kZWxbXSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF0dHJpYnV0ZXMuZmluZCgoYSkgPT5cbiAgICAgICAgYS50ZXJyYWZvcm1OYW1lLm1hdGNoKGBeJHthdHQudGVycmFmb3JtTmFtZX1faW5wdXQkYCksXG4gICAgICApIGluc3RhbmNlb2YgQXR0cmlidXRlTW9kZWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldElucHV0TmFtZShhdHQ6IEF0dHJpYnV0ZU1vZGVsLCBlc2NhcGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICByZXR1cm4gYCR7YXR0Lm5hbWV9VGZJbnB1dGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHthdHQubmFtZX1JbnB1dGA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5lZWRzUmVzZXRFc2NhcGUoXG4gICAgYXR0OiBBdHRyaWJ1dGVNb2RlbCxcbiAgICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXR0cmlidXRlcy5maW5kKChhKSA9PlxuICAgICAgICBhLnRlcnJhZm9ybU5hbWUubWF0Y2goYF5yZXNldF8ke2F0dC50ZXJyYWZvcm1OYW1lfSRgKSxcbiAgICAgICkgaW5zdGFuY2VvZiBBdHRyaWJ1dGVNb2RlbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzZXROYW1lKG5hbWU6IHN0cmluZywgZXNjYXBlOiBib29sZWFuKSB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gbmFtZTtcbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICByZXR1cm4gYHJlc2V0VGYke3RpdGxlQ2FzZShuYW1lKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYHJlc2V0JHt0aXRsZUNhc2UobmFtZSl9YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW1pdFRvSGNsVGVycmFmb3JtKGF0dDogQXR0cmlidXRlTW9kZWwsIGlzU3RydWN0OiBib29sZWFuKSB7XG4gICAgY29uc3QgdHlwZSA9IGF0dC50eXBlO1xuICAgIGNvbnN0IGNvbnRleHQgPSBpc1N0cnVjdCA/IFwic3RydWN0IVwiIDogXCJ0aGlzXCI7XG4gICAgY29uc3QgbmFtZSA9IGlzU3RydWN0ID8gYXR0Lm5hbWUgOiBhdHQuc3RvcmFnZU5hbWU7XG4gICAgY29uc3QgY3VzdG9tRGVmYXVsdCA9IENVU1RPTV9ERUZBVUxUU1thdHQudGVycmFmb3JtRnVsbE5hbWVdO1xuXG4gICAgY29uc3QgdmFyUmVmZXJlbmNlID0gYCR7Y29udGV4dH0uJHtuYW1lfSR7XG4gICAgICAhaXNTdHJ1Y3QgJiZcbiAgICAgIHR5cGUuaXNDb21wbGV4ICYmXG4gICAgICAhYXR0LmlzUHJvdmlkZXIgJiZcbiAgICAgICh0eXBlLnN0cnVjdD8uaXNDbGFzcyB8fCBhdHQuZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIilcbiAgICAgICAgPyBcIi5pbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgZGVmYXVsdENoZWNrID1cbiAgICAgIGN1c3RvbURlZmF1bHQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGAke3ZhclJlZmVyZW5jZX0gPT09IHVuZGVmaW5lZCA/ICR7Y3VzdG9tRGVmYXVsdH0gOiBgXG4gICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IHZhbHVlID0gYCR7ZGVmYXVsdENoZWNrfSR7dHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9ufSgke3ZhclJlZmVyZW5jZX0pYDtcbiAgICBjb25zdCBpc0Jsb2NrID0gYXR0LnR5cGUuaXNDb21wbGV4O1xuICAgIGNvbnN0IHR0ID0gYXR0LnR5cGUudHlwZU1vZGVsVHlwZTtcblxuICAgIHRoaXMuY29kZS5vcGVuKGAke2F0dC50ZXJyYWZvcm1OYW1lfToge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKGB2YWx1ZTogJHt2YWx1ZX0sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGlzQmxvY2s6ICR7aXNCbG9ja30sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHR5cGU6IFwiJHt0dH1cIixgKTtcbiAgICB0aGlzLmNvZGUubGluZShgc3RvcmFnZUNsYXNzVHlwZTogXCIke2F0dC50eXBlLnN0b3JlZENsYXNzVHlwZX1cIixgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2UoXCJ9LFwiKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0VG9UZXJyYWZvcm0oYXR0OiBBdHRyaWJ1dGVNb2RlbCwgaXNTdHJ1Y3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB0eXBlID0gYXR0LnR5cGU7XG4gICAgY29uc3QgY29udGV4dCA9IGlzU3RydWN0ID8gXCJzdHJ1Y3QhXCIgOiBcInRoaXNcIjtcbiAgICBjb25zdCBuYW1lID0gaXNTdHJ1Y3QgPyBhdHQubmFtZSA6IGF0dC5zdG9yYWdlTmFtZTtcbiAgICBjb25zdCBjdXN0b21EZWZhdWx0ID0gQ1VTVE9NX0RFRkFVTFRTW2F0dC50ZXJyYWZvcm1GdWxsTmFtZV07XG5cbiAgICBjb25zdCB2YXJSZWZlcmVuY2UgPSBgJHtjb250ZXh0fS4ke25hbWV9JHtcbiAgICAgICFpc1N0cnVjdCAmJlxuICAgICAgdHlwZS5pc0NvbXBsZXggJiZcbiAgICAgICFhdHQuaXNQcm92aWRlciAmJlxuICAgICAgKHR5cGUuc3RydWN0Py5pc0NsYXNzIHx8IGF0dC5nZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKVxuICAgICAgICA/IFwiLmludGVybmFsVmFsdWVcIlxuICAgICAgICA6IFwiXCJcbiAgICB9YDtcbiAgICBjb25zdCBkZWZhdWx0Q2hlY2sgPVxuICAgICAgY3VzdG9tRGVmYXVsdCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7dmFyUmVmZXJlbmNlfSA9PT0gdW5kZWZpbmVkID8gJHtjdXN0b21EZWZhdWx0fSA6IGBcbiAgICAgICAgOiBcIlwiO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgJHthdHQudGVycmFmb3JtTmFtZX06ICR7ZGVmYXVsdENoZWNrfSR7dHlwZS50b1RlcnJhZm9ybUZ1bmN0aW9ufSgke3ZhclJlZmVyZW5jZX0pLGAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -19,4 +19,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
19
19
|
__exportStar(require("./attributes-emitter"), exports);
|
|
20
20
|
__exportStar(require("./resource-emitter"), exports);
|
|
21
21
|
__exportStar(require("./struct-emitter"), exports);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9lbWl0dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHVEQUFxQztBQUNyQyxxREFBbUM7QUFDbkMsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmV4cG9ydCAqIGZyb20gXCIuL2F0dHJpYnV0ZXMtZW1pdHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtZW1pdHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RydWN0LWVtaXR0ZXJcIjtcbiJdfQ==
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceEmitter = void 0;
|
|
4
|
+
const attributes_emitter_1 = require("./attributes-emitter");
|
|
5
|
+
const sanitized_comments_1 = require("../sanitized-comments");
|
|
6
|
+
class ResourceEmitter {
|
|
7
|
+
constructor(code) {
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.attributesEmitter = new attributes_emitter_1.AttributesEmitter(this.code);
|
|
10
|
+
}
|
|
11
|
+
emit(resource) {
|
|
12
|
+
this.code.line();
|
|
13
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
14
|
+
comment.line(`Represents a {@link ${resource.linkToDocs} ${resource.terraformResourceType}}`);
|
|
15
|
+
comment.end();
|
|
16
|
+
this.code.openBlock(`export class ${resource.className} extends cdktn.${resource.parentClassName}`);
|
|
17
|
+
this.emitHeader("STATIC PROPERTIES");
|
|
18
|
+
this.emitStaticProperties(resource);
|
|
19
|
+
this.emitHeader("STATIC Methods");
|
|
20
|
+
this.emitStaticMethods(resource);
|
|
21
|
+
this.emitHeader("INITIALIZER");
|
|
22
|
+
this.emitInitializer(resource);
|
|
23
|
+
this.emitHeader("ATTRIBUTES");
|
|
24
|
+
this.emitResourceAttributes(resource);
|
|
25
|
+
// synthesis
|
|
26
|
+
this.emitHeader("SYNTHESIS");
|
|
27
|
+
this.emitResourceSynthesis(resource);
|
|
28
|
+
this.emitHclResourceSynthesis(resource);
|
|
29
|
+
this.code.closeBlock(); // construct
|
|
30
|
+
}
|
|
31
|
+
emitHeader(title) {
|
|
32
|
+
this.code.line();
|
|
33
|
+
this.code.line("// " + "=".repeat(title.length));
|
|
34
|
+
this.code.line(`// ${title}`);
|
|
35
|
+
this.code.line("// " + "=".repeat(title.length));
|
|
36
|
+
}
|
|
37
|
+
emitStaticProperties(resource) {
|
|
38
|
+
this.code.line(`public static readonly tfResourceType = "${resource.terraformResourceType}";`);
|
|
39
|
+
}
|
|
40
|
+
emitStaticMethods(resource) {
|
|
41
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
42
|
+
comment.line(`Generates CDKTN code for importing a ${resource.className} resource upon running "cdktn plan <stack-name>"`);
|
|
43
|
+
comment.line(`@param scope The scope in which to define this construct`);
|
|
44
|
+
comment.line(`@param importToId The construct id used in the generated config for the ${resource.className} to import`);
|
|
45
|
+
comment.line(`@param importFromId The id of the existing ${resource.className} that should be imported. Refer to the {@link ${resource.linkToDocs}#import import section} in the documentation of this resource for the id to use`);
|
|
46
|
+
comment.line(`@param provider? Optional instance of the provider where the ${resource.className} to import is found`);
|
|
47
|
+
comment.end();
|
|
48
|
+
this.code.line(`public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
|
|
49
|
+
return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "${resource.terraformResourceType}", importId: importFromId, provider });
|
|
50
|
+
}`);
|
|
51
|
+
}
|
|
52
|
+
emitHclResourceSynthesis(resource) {
|
|
53
|
+
this.code.line();
|
|
54
|
+
this.code.openBlock(`protected synthesizeHclAttributes(): { [name: string]: any }`);
|
|
55
|
+
this.code.open(`const attrs = {`);
|
|
56
|
+
for (const att of resource.synthesizableAttributes) {
|
|
57
|
+
this.attributesEmitter.emitToHclTerraform(att, false);
|
|
58
|
+
}
|
|
59
|
+
this.code.close(`};`);
|
|
60
|
+
if (resource.synthesizableAttributes.length > 0) {
|
|
61
|
+
this.code.line();
|
|
62
|
+
this.code.line(`// remove undefined attributes`);
|
|
63
|
+
this.code.line(`return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined ))`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.code.line(`return attrs;`);
|
|
67
|
+
}
|
|
68
|
+
this.code.closeBlock();
|
|
69
|
+
}
|
|
70
|
+
emitResourceSynthesis(resource) {
|
|
71
|
+
this.code.line();
|
|
72
|
+
this.code.openBlock(`protected synthesizeAttributes(): { [name: string]: any }`);
|
|
73
|
+
this.code.open(`return {`);
|
|
74
|
+
for (const att of resource.synthesizableAttributes) {
|
|
75
|
+
this.attributesEmitter.emitToTerraform(att, false);
|
|
76
|
+
}
|
|
77
|
+
this.code.close(`};`);
|
|
78
|
+
this.code.closeBlock();
|
|
79
|
+
}
|
|
80
|
+
emitResourceAttributes(resource) {
|
|
81
|
+
for (const att of resource.attributes) {
|
|
82
|
+
this.attributesEmitter.emit(att, this.attributesEmitter.needsResetEscape(att, resource.attributes), this.attributesEmitter.needsInputEscape(att, resource.attributes));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
emitInitializer(resource) {
|
|
86
|
+
this.code.line();
|
|
87
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
88
|
+
comment.line(`Create a new {@link ${resource.linkToDocs} ${resource.terraformResourceType}} ${resource.isDataSource ? "Data Source" : "Resource"}`);
|
|
89
|
+
comment.line(``);
|
|
90
|
+
comment.line(`@param scope The scope in which to define this construct`);
|
|
91
|
+
comment.line(`@param id The scoped construct ID. Must be unique amongst siblings in the same scope`);
|
|
92
|
+
comment.line(`@param options ${resource.configStruct.attributeType}`);
|
|
93
|
+
comment.end();
|
|
94
|
+
this.code.openBlock(`public constructor(scope: Construct, id: string, config: ${resource.configStruct.attributeType})`);
|
|
95
|
+
if (resource.isProvider) {
|
|
96
|
+
this.emitProviderSuper(resource);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.emitResourceSuper(resource);
|
|
100
|
+
}
|
|
101
|
+
// initialize config properties
|
|
102
|
+
for (const att of resource.configStruct.assignableAttributes) {
|
|
103
|
+
if (att.setterType._type === "stored_class") {
|
|
104
|
+
this.code.line(`this.${att.storageName}.internalValue = config.${att.name};`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this.code.line(`this.${att.storageName} = config.${att.name};`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
this.code.closeBlock();
|
|
111
|
+
}
|
|
112
|
+
emitResourceSuper(resource) {
|
|
113
|
+
this.code.open(`super(scope, id, {`);
|
|
114
|
+
this.code.line(`terraformResourceType: '${resource.terraformResourceType}',`);
|
|
115
|
+
this.emitTerraformGeneratorMetadata(resource);
|
|
116
|
+
this.code.line(`provider: config.provider,`);
|
|
117
|
+
this.code.line(`dependsOn: config.dependsOn,`);
|
|
118
|
+
this.code.line(`count: config.count,`);
|
|
119
|
+
this.code.line(`lifecycle: config.lifecycle,`);
|
|
120
|
+
this.code.line(`provisioners: config.provisioners,`);
|
|
121
|
+
this.code.line(`connection: config.connection,`);
|
|
122
|
+
this.code.line(`forEach: config.forEach`);
|
|
123
|
+
this.code.close(`});`);
|
|
124
|
+
}
|
|
125
|
+
emitProviderSuper(resource) {
|
|
126
|
+
this.code.open(`super(scope, id, {`);
|
|
127
|
+
this.code.line(`terraformResourceType: '${resource.terraformResourceType}',`);
|
|
128
|
+
this.emitTerraformGeneratorMetadata(resource);
|
|
129
|
+
this.code.line(`terraformProviderSource: '${resource.terraformProviderSource}'`);
|
|
130
|
+
this.code.close(`});`);
|
|
131
|
+
}
|
|
132
|
+
emitTerraformGeneratorMetadata(resource) {
|
|
133
|
+
this.code.open(`terraformGeneratorMetadata: {`);
|
|
134
|
+
this.code.line(`providerName: '${resource.provider}'${resource.providerVersion || resource.providerVersionConstraint
|
|
135
|
+
? ","
|
|
136
|
+
: ""}`);
|
|
137
|
+
if (resource.providerVersion) {
|
|
138
|
+
this.code.line(`providerVersion: '${resource.providerVersion}'${resource.providerVersionConstraint ? "," : ""}`);
|
|
139
|
+
}
|
|
140
|
+
if (resource.providerVersionConstraint) {
|
|
141
|
+
this.code.line(`providerVersionConstraint: '${resource.providerVersionConstraint}'`);
|
|
142
|
+
}
|
|
143
|
+
this.code.close(`},`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.ResourceEmitter = ResourceEmitter;
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nZXQvZ2VuZXJhdG9yL2VtaXR0ZXIvcmVzb3VyY2UtZW1pdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSw2REFBeUQ7QUFDekQsOERBQXlEO0FBRXpELE1BQWEsZUFBZTtJQUcxQixZQUE2QixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxzQ0FBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLElBQUksQ0FBQyxRQUF1QjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWdCLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUJBQXVCLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLHFCQUFxQixHQUFHLENBQ2hGLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDakIsZ0JBQWdCLFFBQVEsQ0FBQyxTQUFTLGtCQUFrQixRQUFRLENBQUMsZUFBZSxFQUFFLENBQy9FLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEs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bi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb2RlTWFrZXIgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgQXR0cmlidXRlc0VtaXR0ZXIgfSBmcm9tIFwiLi9hdHRyaWJ1dGVzLWVtaXR0ZXJcIjtcbmltcG9ydCB7IHNhbml0aXplZENvbW1lbnQgfSBmcm9tIFwiLi4vc2FuaXRpemVkLWNvbW1lbnRzXCI7XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUVtaXR0ZXIge1xuICBhdHRyaWJ1dGVzRW1pdHRlcjogQXR0cmlidXRlc0VtaXR0ZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb2RlOiBDb2RlTWFrZXIpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZXNFbWl0dGVyID0gbmV3IEF0dHJpYnV0ZXNFbWl0dGVyKHRoaXMuY29kZSk7XG4gIH1cblxuICBwdWJsaWMgZW1pdChyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgY29uc3QgY29tbWVudCA9IHNhbml0aXplZENvbW1lbnQodGhpcy5jb2RlKTtcbiAgICBjb21tZW50LmxpbmUoXG4gICAgICBgUmVwcmVzZW50cyBhIHtAbGluayAke3Jlc291cmNlLmxpbmtUb0RvY3N9ICR7cmVzb3VyY2UudGVycmFmb3JtUmVzb3VyY2VUeXBlfX1gLFxuICAgICk7XG4gICAgY29tbWVudC5lbmQoKTtcbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgYGV4cG9ydCBjbGFzcyAke3Jlc291cmNlLmNsYXNzTmFtZX0gZXh0ZW5kcyBjZGt0bi4ke3Jlc291cmNlLnBhcmVudENsYXNzTmFtZX1gLFxuICAgICk7XG5cbiAgICB0aGlzLmVtaXRIZWFkZXIoXCJTVEFUSUMgUFJPUEVSVElFU1wiKTtcbiAgICB0aGlzLmVtaXRTdGF0aWNQcm9wZXJ0aWVzKHJlc291cmNlKTtcblxuICAgIHRoaXMuZW1pdEhlYWRlcihcIlNUQVRJQyBNZXRob2RzXCIpO1xuICAgIHRoaXMuZW1pdFN0YXRpY01ldGhvZHMocmVzb3VyY2UpO1xuXG4gICAgdGhpcy5lbWl0SGVhZGVyKFwiSU5JVElBTElaRVJcIik7XG4gICAgdGhpcy5lbWl0SW5pdGlhbGl6ZXIocmVzb3VyY2UpO1xuXG4gICAgdGhpcy5lbWl0SGVhZGVyKFwiQVRUUklCVVRFU1wiKTtcbiAgICB0aGlzLmVtaXRSZXNvdXJjZUF0dHJpYnV0ZXMocmVzb3VyY2UpO1xuXG4gICAgLy8gc3ludGhlc2lzXG4gICAgdGhpcy5lbWl0SGVhZGVyKFwiU1lOVEhFU0lTXCIpO1xuICAgIHRoaXMuZW1pdFJlc291cmNlU3ludGhlc2lzKHJlc291cmNlKTtcbiAgICB0aGlzLmVtaXRIY2xSZXNvdXJjZVN5bnRoZXNpcyhyZXNvdXJjZSk7XG5cbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpOyAvLyBjb25zdHJ1Y3RcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEhlYWRlcih0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIFwiICsgXCI9XCIucmVwZWF0KHRpdGxlLmxlbmd0aCkpO1xuICAgIHRoaXMuY29kZS5saW5lKGAvLyAke3RpdGxlfWApO1xuICAgIHRoaXMuY29kZS5saW5lKFwiLy8gXCIgKyBcIj1cIi5yZXBlYXQodGl0bGUubGVuZ3RoKSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTdGF0aWNQcm9wZXJ0aWVzKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiJHtyZXNvdXJjZS50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9XCI7YCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3RhdGljTWV0aG9kcyhyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYEdlbmVyYXRlcyBDREtUTiBjb2RlIGZvciBpbXBvcnRpbmcgYSAke3Jlc291cmNlLmNsYXNzTmFtZX0gcmVzb3VyY2UgdXBvbiBydW5uaW5nIFwiY2RrdG4gcGxhbiA8c3RhY2stbmFtZT5cImAsXG4gICAgKTtcbiAgICBjb21tZW50LmxpbmUoYEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0YCk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlICR7cmVzb3VyY2UuY2xhc3NOYW1lfSB0byBpbXBvcnRgLFxuICAgICk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYEBwYXJhbSBpbXBvcnRGcm9tSWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyAke3Jlc291cmNlLmNsYXNzTmFtZX0gdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgJHtyZXNvdXJjZS5saW5rVG9Eb2NzfSNpbXBvcnQgaW1wb3J0IHNlY3Rpb259IGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgcmVzb3VyY2UgZm9yIHRoZSBpZCB0byB1c2VgLFxuICAgICk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSAke3Jlc291cmNlLmNsYXNzTmFtZX0gdG8gaW1wb3J0IGlzIGZvdW5kYCxcbiAgICApO1xuICAgIGNvbW1lbnQuZW5kKCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgcHVibGljIHN0YXRpYyBnZW5lcmF0ZUNvbmZpZ0ZvckltcG9ydChzY29wZTogQ29uc3RydWN0LCBpbXBvcnRUb0lkOiBzdHJpbmcsIGltcG9ydEZyb21JZDogc3RyaW5nLCBwcm92aWRlcj86IGNka3RuLlRlcnJhZm9ybVByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgY2RrdG4uSW1wb3J0YWJsZVJlc291cmNlKHNjb3BlLCBpbXBvcnRUb0lkLCB7IHRlcnJhZm9ybVJlc291cmNlVHlwZTogXCIke3Jlc291cmNlLnRlcnJhZm9ybVJlc291cmNlVHlwZX1cIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9YCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SGNsUmVzb3VyY2VTeW50aGVzaXMocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICBgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9YCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5vcGVuKGBjb25zdCBhdHRycyA9IHtgKTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHJlc291cmNlLnN5bnRoZXNpemFibGVBdHRyaWJ1dGVzKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXNFbWl0dGVyLmVtaXRUb0hjbFRlcnJhZm9ybShhdHQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2UoYH07YCk7XG5cbiAgICBpZiAocmVzb3VyY2Uuc3ludGhlc2l6YWJsZUF0dHJpYnV0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNgKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgKSlgLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiBhdHRycztgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VTeW50aGVzaXMocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICBgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9YCxcbiAgICApO1xuICAgIHRoaXMuY29kZS5vcGVuKGByZXR1cm4ge2ApO1xuXG4gICAgZm9yIChjb25zdCBhdHQgb2YgcmVzb3VyY2Uuc3ludGhlc2l6YWJsZUF0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlc0VtaXR0ZXIuZW1pdFRvVGVycmFmb3JtKGF0dCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5jbG9zZShgfTtgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VBdHRyaWJ1dGVzKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgZm9yIChjb25zdCBhdHQgb2YgcmVzb3VyY2UuYXR0cmlidXRlcykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzRW1pdHRlci5lbWl0KFxuICAgICAgICBhdHQsXG4gICAgICAgIHRoaXMuYXR0cmlidXRlc0VtaXR0ZXIubmVlZHNSZXNldEVzY2FwZShhdHQsIHJlc291cmNlLmF0dHJpYnV0ZXMpLFxuICAgICAgICB0aGlzLmF0dHJpYnV0ZXNFbWl0dGVyLm5lZWRzSW5wdXRFc2NhcGUoYXR0LCByZXNvdXJjZS5hdHRyaWJ1dGVzKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW5pdGlhbGl6ZXIocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYENyZWF0ZSBhIG5ldyB7QGxpbmsgJHtyZXNvdXJjZS5saW5rVG9Eb2NzfSAke1xuICAgICAgICByZXNvdXJjZS50ZXJyYWZvcm1SZXNvdXJjZVR5cGVcbiAgICAgIH19ICR7cmVzb3VyY2UuaXNEYXRhU291cmNlID8gXCJEYXRhIFNvdXJjZVwiIDogXCJSZXNvdXJjZVwifWAsXG4gICAgKTtcbiAgICBjb21tZW50LmxpbmUoYGApO1xuICAgIGNvbW1lbnQubGluZShgQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RgKTtcbiAgICBjb21tZW50LmxpbmUoXG4gICAgICBgQHBhcmFtIGlkIFRoZSBzY29wZWQgY29uc3RydWN0IElELiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHNpYmxpbmdzIGluIHRoZSBzYW1lIHNjb3BlYCxcbiAgICApO1xuICAgIGNvbW1lbnQubGluZShgQHBhcmFtIG9wdGlvbnMgJHtyZXNvdXJjZS5jb25maWdTdHJ1Y3QuYXR0cmlidXRlVHlwZX1gKTtcbiAgICBjb21tZW50LmVuZCgpO1xuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICBgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogJHtyZXNvdXJjZS5jb25maWdTdHJ1Y3QuYXR0cmlidXRlVHlwZX0pYCxcbiAgICApO1xuXG4gICAgaWYgKHJlc291cmNlLmlzUHJvdmlkZXIpIHtcbiAgICAgIHRoaXMuZW1pdFByb3ZpZGVyU3VwZXIocmVzb3VyY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtaXRSZXNvdXJjZVN1cGVyKHJlc291cmNlKTtcbiAgICB9XG5cbiAgICAvLyBpbml0aWFsaXplIGNvbmZpZyBwcm9wZXJ0aWVzXG4gICAgZm9yIChjb25zdCBhdHQgb2YgcmVzb3VyY2UuY29uZmlnU3RydWN0LmFzc2lnbmFibGVBdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoYXR0LnNldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgICAgYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9LmludGVybmFsVmFsdWUgPSBjb25maWcuJHthdHQubmFtZX07YCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfSA9IGNvbmZpZy4ke2F0dC5uYW1lfTtgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VTdXBlcihyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5vcGVuKGBzdXBlcihzY29wZSwgaWQsIHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICcke3Jlc291cmNlLnRlcnJhZm9ybVJlc291cmNlVHlwZX0nLGAsXG4gICAgKTtcbiAgICB0aGlzLmVtaXRUZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YShyZXNvdXJjZSk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGRlcGVuZHNPbjogY29uZmlnLmRlcGVuZHNPbixgKTtcbiAgICB0aGlzLmNvZGUubGluZShgY291bnQ6IGNvbmZpZy5jb3VudCxgKTtcbiAgICB0aGlzLmNvZGUubGluZShgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLGApO1xuICAgIHRoaXMuY29kZS5saW5lKGBwcm92aXNpb25lcnM6IGNvbmZpZy5wcm92aXNpb25lcnMsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLGApO1xuICAgIHRoaXMuY29kZS5saW5lKGBmb3JFYWNoOiBjb25maWcuZm9yRWFjaGApO1xuICAgIHRoaXMuY29kZS5jbG9zZShgfSk7YCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm92aWRlclN1cGVyKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLm9wZW4oYHN1cGVyKHNjb3BlLCBpZCwge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYHRlcnJhZm9ybVJlc291cmNlVHlwZTogJyR7cmVzb3VyY2UudGVycmFmb3JtUmVzb3VyY2VUeXBlfScsYCxcbiAgICApO1xuICAgIHRoaXMuZW1pdFRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhKHJlc291cmNlKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGB0ZXJyYWZvcm1Qcm92aWRlclNvdXJjZTogJyR7cmVzb3VyY2UudGVycmFmb3JtUHJvdmlkZXJTb3VyY2V9J2AsXG4gICAgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2UoYH0pO2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGEocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUub3BlbihgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGBwcm92aWRlck5hbWU6ICcke3Jlc291cmNlLnByb3ZpZGVyfScke1xuICAgICAgICByZXNvdXJjZS5wcm92aWRlclZlcnNpb24gfHwgcmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludFxuICAgICAgICAgID8gXCIsXCJcbiAgICAgICAgICA6IFwiXCJcbiAgICAgIH1gLFxuICAgICk7XG5cbiAgICBpZiAocmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByb3ZpZGVyVmVyc2lvbjogJyR7cmVzb3VyY2UucHJvdmlkZXJWZXJzaW9ufScke1xuICAgICAgICAgIHJlc291cmNlLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQgPyBcIixcIiA6IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXNvdXJjZS5wcm92aWRlclZlcnNpb25Db25zdHJhaW50KSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ6ICcke3Jlc291cmNlLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnR9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5jbG9zZShgfSxgKTtcbiAgfVxufVxuIl19
|