@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
|
@@ -1,161 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy1lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXR0cmlidXRlcy1lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHNDQUEyQztBQUMzQyx3REFBcUQ7QUFFckQsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFhLGlCQUFpQjtJQUM1QixZQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztJQUFHLENBQUM7SUFFaEMsSUFBSSxDQUFDLEdBQW1CLEVBQUUsV0FBb0IsRUFBRSxXQUFvQjtRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLE1BQU0sR0FBRyxDQUFDLGFBQWEsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLGVBQWUsR0FBRyxDQUFDLFVBQVUsZUFBZSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQ2hILENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUNsQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztRQUNqRSxNQUFNLGNBQWMsR0FBRyxRQUFRLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFFbEMsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLFdBQVcsR0FBRyxD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QUMsR0FBRyxDQUFDLFVBQVU7WUFDZixDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxPQUFPLEtBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssY0FBYyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxnQkFBZ0I7WUFDbEIsQ0FBQyxDQUFDLEVBQ04sRUFBRSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQ2hCLGFBQWEsS0FBSyxTQUFTO1lBQ3pCLENBQUMsQ0FBQyxHQUFHLFlBQVksb0JBQW9CLGFBQWEsS0FBSztZQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osR0FBRyxHQUFHLENBQUMsYUFBYSxLQUFLLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLElBQUksWUFBWSxJQUFJLENBQ3JGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0TkQsOENBc05DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gXCJjb2RlbWFrZXJcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgQ1VTVE9NX0RFRkFVTFRTIH0gZnJvbSBcIi4uL2N1c3RvbS1kZWZhdWx0c1wiO1xuXG5mdW5jdGlvbiB0aXRsZUNhc2UodmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gdmFsdWVbMF0udG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xufVxuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlc0VtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvZGU6IENvZGVNYWtlcikge31cblxuICBwdWJsaWMgZW1pdChhdHQ6IEF0dHJpYnV0ZU1vZGVsLCBlc2NhcGVSZXNldDogYm9vbGVhbiwgZXNjYXBlSW5wdXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYC8vICR7YXR0LnRlcnJhZm9ybU5hbWV9IC0gY29tcHV0ZWQ6ICR7YXR0LmNvbXB1dGVkfSwgb3B0aW9uYWw6ICR7YXR0LmlzT3B0aW9uYWx9LCByZXF1aXJlZDogJHthdHQuaXNSZXF1aXJlZH1gLFxuICAgICk7XG5cbiAgICBjb25zdCBpc1N0b3JlZCA9IGF0dC5pc1N0b3JlZDtcbiAgICBjb25zdCBoYXNSZXNldE1ldGhvZCA9XG4gICAgICBpc1N0b3JlZCAmJiAhYXR0LmlzUmVxdWlyZWQgJiYgYXR0LnNldHRlclR5cGUuX3R5cGUgIT09IFwibm9uZVwiO1xuICAgIGNvbnN0IGhhc0lucHV0TWV0aG9kID0gaXNTdG9yZWQgJiYgYXR0LnNldHRlclR5cGUuX3R5cGUgIT09IFwibm9uZVwiO1xuXG4gICAgY29uc3QgZ2V0dGVyVHlwZSA9IGF0dC5nZXR0ZXJUeXBlO1xuXG4gICAgaWYgKGdldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgcHJpdmF0ZSAke2F0dC5zdG9yYWdlTmFtZX0gPSAke3RoaXMuc3RvcmVkQ2xhc3NJbml0KGF0dCl9O2AsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNTdG9yZWQpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgICBgcHJpdmF0ZSAke2F0dC5zdG9yYWdlTmFtZX0/OiAke2F0dC50eXBlLmlucHV0VHlwZURlZmluaXRpb259OyBgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGdldHRlclR5cGUuX3R5cGUpIHtcbiAgICAgIGNhc2UgXCJwbGFpblwiOlxuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBwdWJsaWMgZ2V0ICR7YXR0Lm5hbWV9KClgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiAke3RoaXMuZGV0ZXJtaW5lR2V0QXR0Q2FsbChhdHQpfTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJhcmdzXCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyAke2F0dC5uYW1lfSgke2dldHRlclR5cGUuYXJnc30pJHtcbiAgICAgICAgICAgIGdldHRlclR5cGUucmV0dXJuVHlwZSA/IFwiOiBcIiArIGdldHRlclR5cGUucmV0dXJuVHlwZSA6IFwiXCJcbiAgICAgICAgICB9YCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiAke2dldHRlclR5cGUucmV0dXJuU3RhdGVtZW50fTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJzdG9yZWRfY2xhc3NcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhgcHVibGljIGdldCAke2F0dC5uYW1lfSgpYCk7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX07YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IHNldHRlclR5cGUgPSBhdHQuc2V0dGVyVHlwZTtcblxuICAgIHN3aXRjaCAoc2V0dGVyVHlwZS5fdHlwZSkge1xuICAgICAgY2FzZSBcInNldFwiOlxuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICAgIGBwdWJsaWMgc2V0ICR7YXR0Lm5hbWV9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdmFsdWU7YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwicHV0XCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBwdXQke3RpdGxlQ2FzZShhdHQubmFtZSl9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdmFsdWU7YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwic3RvcmVkX2NsYXNzXCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBwdXQke3RpdGxlQ2FzZShhdHQubmFtZSl9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9LmludGVybmFsVmFsdWUgPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGhhc1Jlc2V0TWV0aG9kKSB7XG4gICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICBgcHVibGljICR7dGhpcy5nZXRSZXNldE5hbWUoYXR0Lm5hbWUsIGVzY2FwZVJlc2V0KX0oKWAsXG4gICAgICApO1xuXG4gICAgICBpZiAoc2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIikge1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZSA9IHVuZGVmaW5lZDtgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfSA9IHVuZGVmaW5lZDtgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzSW5wdXRNZXRob2QpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uYCk7XG4gICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICBgcHVibGljIGdldCAke3RoaXMuZ2V0SW5wdXROYW1lKGF0dCwgZXNjYXBlSW5wdXQpfSgpYCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZTtgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX07YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJucyBhbiBpbnZvY2F0aW9uIG9mIGEgc3RvcmVkIGNsYXNzLCBlLmcuICduZXcgRGVwbG90bWVudE1ldGFkYXRhT3V0cHV0UmVmZXJlbmNlKHRoaXMsIFwibWV0YWRhdGFcIiknXG4gIHByaXZhdGUgc3RvcmVkQ2xhc3NJbml0KGF0dDogQXR0cmlidXRlTW9kZWwpIHtcbiAgICByZXR1cm4gYXR0LnR5cGUuZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihhdHQudGVycmFmb3JtTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZGV0ZXJtaW5lR2V0QXR0Q2FsbChhdHQ6IEF0dHJpYnV0ZU1vZGVsKTogc3RyaW5nIHtcbiAgICBpZiAoYXR0LmlzUHJvdmlkZXIpIHtcbiAgICAgIHJldHVybiBgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBhdHQudHlwZS5nZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihhdHQudGVycmFmb3JtTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgbmVlZHNJbnB1dEVzY2FwZShcbiAgICBhdHQ6IEF0dHJpYnV0ZU1vZGVsLFxuICAgIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBhdHRyaWJ1dGVzLmZpbmQoKGEpID0+XG4gICAgICAgIGEudGVycmFmb3JtTmFtZS5tYXRjaChgXiR7YXR0LnRlcnJhZm9ybU5hbWV9X2lucHV0JGApLFxuICAgICAgKSBpbnN0YW5jZW9mIEF0dHJpYnV0ZU1vZGVsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbnB1dE5hbWUoYXR0OiBBdHRyaWJ1dGVNb2RlbCwgZXNjYXBlOiBib29sZWFuKSB7XG4gICAgaWYgKGVzY2FwZSkge1xuICAgICAgcmV0dXJuIGAke2F0dC5uYW1lfVRmSW5wdXRgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7YXR0Lm5hbWV9SW5wdXRgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZWVkc1Jlc2V0RXNjYXBlKFxuICAgIGF0dDogQXR0cmlidXRlTW9kZWwsXG4gICAgYXR0cmlidXRlczogQXR0cmlidXRlTW9kZWxbXSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF0dHJpYnV0ZXMuZmluZCgoYSkgPT5cbiAgICAgICAgYS50ZXJyYWZvcm1OYW1lLm1hdGNoKGBecmVzZXRfJHthdHQudGVycmFmb3JtTmFtZX0kYCksXG4gICAgICApIGluc3RhbmNlb2YgQXR0cmlidXRlTW9kZWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFJlc2V0TmFtZShuYW1lOiBzdHJpbmcsIGVzY2FwZTogYm9vbGVhbikge1xuICAgIGlmICghbmFtZSkgcmV0dXJuIG5hbWU7XG4gICAgaWYgKGVzY2FwZSkge1xuICAgICAgcmV0dXJuIGByZXNldFRmJHt0aXRsZUNhc2UobmFtZSl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGByZXNldCR7dGl0bGVDYXNlKG5hbWUpfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVtaXRUb0hjbFRlcnJhZm9ybShhdHQ6IEF0dHJpYnV0ZU1vZGVsLCBpc1N0cnVjdDogYm9vbGVhbikge1xuICAgIGNvbnN0IHR5cGUgPSBhdHQudHlwZTtcbiAgICBjb25zdCBjb250ZXh0ID0gaXNTdHJ1Y3QgPyBcInN0cnVjdCFcIiA6IFwidGhpc1wiO1xuICAgIGNvbnN0IG5hbWUgPSBpc1N0cnVjdCA/IGF0dC5uYW1lIDogYXR0LnN0b3JhZ2VOYW1lO1xuICAgIGNvbnN0IGN1c3RvbURlZmF1bHQgPSBDVVNUT01fREVGQVVMVFNbYXR0LnRlcnJhZm9ybUZ1bGxOYW1lXTtcblxuICAgIGNvbnN0IHZhclJlZmVyZW5jZSA9IGAke2NvbnRleHR9LiR7bmFtZX0ke1xuICAgICAgIWlzU3RydWN0ICYmXG4gICAgICB0eXBlLmlzQ29tcGxleCAmJlxuICAgICAgIWF0dC5pc1Byb3ZpZGVyICYmXG4gICAgICAodHlwZS5zdHJ1Y3Q/LmlzQ2xhc3MgfHwgYXR0LmdldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpXG4gICAgICAgID8gXCIuaW50ZXJuYWxWYWx1ZVwiXG4gICAgICAgIDogXCJcIlxuICAgIH1gO1xuICAgIGNvbnN0IGRlZmF1bHRDaGVjayA9XG4gICAgICBjdXN0b21EZWZhdWx0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBgJHt2YXJSZWZlcmVuY2V9ID09PSB1bmRlZmluZWQgPyAke2N1c3RvbURlZmF1bHR9IDogYFxuICAgICAgICA6IFwiXCI7XG5cbiAgICBjb25zdCB2YWx1ZSA9IGAke2RlZmF1bHRDaGVja30ke3R5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0oJHt2YXJSZWZlcmVuY2V9KWA7XG4gICAgY29uc3QgaXNCbG9jayA9IGF0dC50eXBlLmlzQ29tcGxleDtcbiAgICBjb25zdCB0dCA9IGF0dC50eXBlLnR5cGVNb2RlbFR5cGU7XG5cbiAgICB0aGlzLmNvZGUub3BlbihgJHthdHQudGVycmFmb3JtTmFtZX06IHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShgdmFsdWU6ICR7dmFsdWV9LGApO1xuICAgIHRoaXMuY29kZS5saW5lKGBpc0Jsb2NrOiAke2lzQmxvY2t9LGApO1xuICAgIHRoaXMuY29kZS5saW5lKGB0eXBlOiBcIiR7dHR9XCIsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHN0b3JhZ2VDbGFzc1R5cGU6IFwiJHthdHQudHlwZS5zdG9yZWRDbGFzc1R5cGV9XCIsYCk7XG4gICAgdGhpcy5jb2RlLmNsb3NlKFwifSxcIik7XG4gIH1cblxuICBwdWJsaWMgZW1pdFRvVGVycmFmb3JtKGF0dDogQXR0cmlidXRlTW9kZWwsIGlzU3RydWN0OiBib29sZWFuKSB7XG4gICAgY29uc3QgdHlwZSA9IGF0dC50eXBlO1xuICAgIGNvbnN0IGNvbnRleHQgPSBpc1N0cnVjdCA/IFwic3RydWN0IVwiIDogXCJ0aGlzXCI7XG4gICAgY29uc3QgbmFtZSA9IGlzU3RydWN0ID8gYXR0Lm5hbWUgOiBhdHQuc3RvcmFnZU5hbWU7XG4gICAgY29uc3QgY3VzdG9tRGVmYXVsdCA9IENVU1RPTV9ERUZBVUxUU1thdHQudGVycmFmb3JtRnVsbE5hbWVdO1xuXG4gICAgY29uc3QgdmFyUmVmZXJlbmNlID0gYCR7Y29udGV4dH0uJHtuYW1lfSR7XG4gICAgICAhaXNTdHJ1Y3QgJiZcbiAgICAgIHR5cGUuaXNDb21wbGV4ICYmXG4gICAgICAhYXR0LmlzUHJvdmlkZXIgJiZcbiAgICAgICh0eXBlLnN0cnVjdD8uaXNDbGFzcyB8fCBhdHQuZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIilcbiAgICAgICAgPyBcIi5pbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgZGVmYXVsdENoZWNrID1cbiAgICAgIGN1c3RvbURlZmF1bHQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGAke3ZhclJlZmVyZW5jZX0gPT09IHVuZGVmaW5lZCA/ICR7Y3VzdG9tRGVmYXVsdH0gOiBgXG4gICAgICAgIDogXCJcIjtcblxuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYCR7YXR0LnRlcnJhZm9ybU5hbWV9OiAke2RlZmF1bHRDaGVja30ke3R5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0oJHt2YXJSZWZlcmVuY2V9KSxgLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,144 +0,0 @@
|
|
|
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
|
-
resource.isProvider
|
|
96
|
-
? this.emitProviderSuper(resource)
|
|
97
|
-
: this.emitResourceSuper(resource);
|
|
98
|
-
// initialize config properties
|
|
99
|
-
for (const att of resource.configStruct.assignableAttributes) {
|
|
100
|
-
if (att.setterType._type === "stored_class") {
|
|
101
|
-
this.code.line(`this.${att.storageName}.internalValue = config.${att.name};`);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.code.line(`this.${att.storageName} = config.${att.name};`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
this.code.closeBlock();
|
|
108
|
-
}
|
|
109
|
-
emitResourceSuper(resource) {
|
|
110
|
-
this.code.open(`super(scope, id, {`);
|
|
111
|
-
this.code.line(`terraformResourceType: '${resource.terraformResourceType}',`);
|
|
112
|
-
this.emitTerraformGeneratorMetadata(resource);
|
|
113
|
-
this.code.line(`provider: config.provider,`);
|
|
114
|
-
this.code.line(`dependsOn: config.dependsOn,`);
|
|
115
|
-
this.code.line(`count: config.count,`);
|
|
116
|
-
this.code.line(`lifecycle: config.lifecycle,`);
|
|
117
|
-
this.code.line(`provisioners: config.provisioners,`);
|
|
118
|
-
this.code.line(`connection: config.connection,`);
|
|
119
|
-
this.code.line(`forEach: config.forEach`);
|
|
120
|
-
this.code.close(`});`);
|
|
121
|
-
}
|
|
122
|
-
emitProviderSuper(resource) {
|
|
123
|
-
this.code.open(`super(scope, id, {`);
|
|
124
|
-
this.code.line(`terraformResourceType: '${resource.terraformResourceType}',`);
|
|
125
|
-
this.emitTerraformGeneratorMetadata(resource);
|
|
126
|
-
this.code.line(`terraformProviderSource: '${resource.terraformProviderSource}'`);
|
|
127
|
-
this.code.close(`});`);
|
|
128
|
-
}
|
|
129
|
-
emitTerraformGeneratorMetadata(resource) {
|
|
130
|
-
this.code.open(`terraformGeneratorMetadata: {`);
|
|
131
|
-
this.code.line(`providerName: '${resource.provider}'${resource.providerVersion || resource.providerVersionConstraint
|
|
132
|
-
? ","
|
|
133
|
-
: ""}`);
|
|
134
|
-
if (resource.providerVersion) {
|
|
135
|
-
this.code.line(`providerVersion: '${resource.providerVersion}'${resource.providerVersionConstraint ? "," : ""}`);
|
|
136
|
-
}
|
|
137
|
-
if (resource.providerVersionConstraint) {
|
|
138
|
-
this.code.line(`providerVersionConstraint: '${resource.providerVersionConstraint}'`);
|
|
139
|
-
}
|
|
140
|
-
this.code.close(`},`);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
exports.ResourceEmitter = ResourceEmitter;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlc291cmNlLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsNkRBQXlEO0FBQ3pELDhEQUF5RDtBQUV6RCxNQUFhLGVBQWU7SUFHMUIsWUFBNkIsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksc0NBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxJQUFJLENBQUMsUUFBdUI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFBLHFDQUFnQixFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUNWLHVCQUF1QixRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxDQUNoRixDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ2pCLGdCQUFnQixRQUFRLENBQUMsU0FBUyxrQkFBa0IsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUMvRSxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsVUFBVSxDQUFDLFlB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QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWiw2QkFBNkIsUUFBUSxDQUFDLHVCQUF1QixHQUFHLENBQ2pFLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sOEJBQThCLENBQUMsUUFBdUI7UUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixrQkFBa0IsUUFBUSxDQUFDLFFBQVEsSUFDakMsUUFBUSxDQUFDLGVBQWUsSUFBSSxRQUFRLENBQUMseUJBQXlCO1lBQzVELENBQUMsQ0FBQyxHQUFHO1lBQ0wsQ0FBQyxDQUFDLEVBQ04sRUFBRSxDQUNILENBQUM7UUFFRixJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixxQkFBcUIsUUFBUSxDQUFDLGVBQWUsSUFDM0MsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQzdDLEVBQUUsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osK0JBQStCLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQXhORCwwQ0F3TkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2VNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHNcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZXNFbWl0dGVyIH0gZnJvbSBcIi4vYXR0cmlidXRlcy1lbWl0dGVyXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZWRDb21tZW50IH0gZnJvbSBcIi4uL3Nhbml0aXplZC1jb21tZW50c1wiO1xuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VFbWl0dGVyIHtcbiAgYXR0cmlidXRlc0VtaXR0ZXI6IEF0dHJpYnV0ZXNFbWl0dGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29kZTogQ29kZU1ha2VyKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzRW1pdHRlciA9IG5ldyBBdHRyaWJ1dGVzRW1pdHRlcih0aGlzLmNvZGUpO1xuICB9XG5cbiAgcHVibGljIGVtaXQocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYFJlcHJlc2VudHMgYSB7QGxpbmsgJHtyZXNvdXJjZS5saW5rVG9Eb2NzfSAke3Jlc291cmNlLnRlcnJhZm9ybVJlc291cmNlVHlwZX19YCxcbiAgICApO1xuICAgIGNvbW1lbnQuZW5kKCk7XG4gICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgIGBleHBvcnQgY2xhc3MgJHtyZXNvdXJjZS5jbGFzc05hbWV9IGV4dGVuZHMgY2RrdG4uJHtyZXNvdXJjZS5wYXJlbnRDbGFzc05hbWV9YCxcbiAgICApO1xuXG4gICAgdGhpcy5lbWl0SGVhZGVyKFwiU1RBVElDIFBST1BFUlRJRVNcIik7XG4gICAgdGhpcy5lbWl0U3RhdGljUHJvcGVydGllcyhyZXNvdXJjZSk7XG5cbiAgICB0aGlzLmVtaXRIZWFkZXIoXCJTVEFUSUMgTWV0aG9kc1wiKTtcbiAgICB0aGlzLmVtaXRTdGF0aWNNZXRob2RzKHJlc291cmNlKTtcblxuICAgIHRoaXMuZW1pdEhlYWRlcihcIklOSVRJQUxJWkVSXCIpO1xuICAgIHRoaXMuZW1pdEluaXRpYWxpemVyKHJlc291cmNlKTtcblxuICAgIHRoaXMuZW1pdEhlYWRlcihcIkFUVFJJQlVURVNcIik7XG4gICAgdGhpcy5lbWl0UmVzb3VyY2VBdHRyaWJ1dGVzKHJlc291cmNlKTtcblxuICAgIC8vIHN5bnRoZXNpc1xuICAgIHRoaXMuZW1pdEhlYWRlcihcIlNZTlRIRVNJU1wiKTtcbiAgICB0aGlzLmVtaXRSZXNvdXJjZVN5bnRoZXNpcyhyZXNvdXJjZSk7XG4gICAgdGhpcy5lbWl0SGNsUmVzb3VyY2VTeW50aGVzaXMocmVzb3VyY2UpO1xuXG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTsgLy8gY29uc3RydWN0XG4gIH1cblxuICBwcml2YXRlIGVtaXRIZWFkZXIodGl0bGU6IHN0cmluZykge1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoXCIvLyBcIiArIFwiPVwiLnJlcGVhdCh0aXRsZS5sZW5ndGgpKTtcbiAgICB0aGlzLmNvZGUubGluZShgLy8gJHt0aXRsZX1gKTtcbiAgICB0aGlzLmNvZGUubGluZShcIi8vIFwiICsgXCI9XCIucmVwZWF0KHRpdGxlLmxlbmd0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3RhdGljUHJvcGVydGllcyhyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGUgPSBcIiR7cmVzb3VyY2UudGVycmFmb3JtUmVzb3VyY2VUeXBlfVwiO2AsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFN0YXRpY01ldGhvZHMocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVkQ29tbWVudCh0aGlzLmNvZGUpO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBHZW5lcmF0ZXMgQ0RLVE4gY29kZSBmb3IgaW1wb3J0aW5nIGEgJHtyZXNvdXJjZS5jbGFzc05hbWV9IHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RuIHBsYW4gPHN0YWNrLW5hbWU+XCJgLFxuICAgICk7XG4gICAgY29tbWVudC5saW5lKGBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdGApO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBAcGFyYW0gaW1wb3J0VG9JZCBUaGUgY29uc3RydWN0IGlkIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBjb25maWcgZm9yIHRoZSAke3Jlc291cmNlLmNsYXNzTmFtZX0gdG8gaW1wb3J0YCxcbiAgICApO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBAcGFyYW0gaW1wb3J0RnJvbUlkIFRoZSBpZCBvZiB0aGUgZXhpc3RpbmcgJHtyZXNvdXJjZS5jbGFzc05hbWV9IHRoYXQgc2hvdWxkIGJlIGltcG9ydGVkLiBSZWZlciB0byB0aGUge0BsaW5rICR7cmVzb3VyY2UubGlua1RvRG9jc30jaW1wb3J0IGltcG9ydCBzZWN0aW9ufSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJlc291cmNlIGZvciB0aGUgaWQgdG8gdXNlYCxcbiAgICApO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBAcGFyYW0gcHJvdmlkZXI/IE9wdGlvbmFsIGluc3RhbmNlIG9mIHRoZSBwcm92aWRlciB3aGVyZSB0aGUgJHtyZXNvdXJjZS5jbGFzc05hbWV9IHRvIGltcG9ydCBpcyBmb3VuZGAsXG4gICAgKTtcbiAgICBjb21tZW50LmVuZCgpO1xuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVDb25maWdGb3JJbXBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaW1wb3J0VG9JZDogc3RyaW5nLCBpbXBvcnRGcm9tSWQ6IHN0cmluZywgcHJvdmlkZXI/OiBjZGt0bi5UZXJyYWZvcm1Qcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNka3RuLkltcG9ydGFibGVSZXNvdXJjZShzY29wZSwgaW1wb3J0VG9JZCwgeyB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwiJHtyZXNvdXJjZS50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9XCIsIGltcG9ydElkOiBpbXBvcnRGcm9tSWQsIHByb3ZpZGVyIH0pO1xuICAgICAgfWAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEhjbFJlc291cmNlU3ludGhlc2lzKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgYHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfWAsXG4gICAgKTtcbiAgICB0aGlzLmNvZGUub3BlbihgY29uc3QgYXR0cnMgPSB7YCk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dCBvZiByZXNvdXJjZS5zeW50aGVzaXphYmxlQXR0cmlidXRlcykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzRW1pdHRlci5lbWl0VG9IY2xUZXJyYWZvcm0oYXR0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb2RlLmNsb3NlKGB9O2ApO1xuXG4gICAgaWYgKHJlc291cmNlLnN5bnRoZXNpemFibGVBdHRyaWJ1dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgICB0aGlzLmNvZGUubGluZShgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzYCk7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICkpYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gYXR0cnM7YCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlc291cmNlU3ludGhlc2lzKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgYHByb3RlY3RlZCBzeW50aGVzaXplQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfWAsXG4gICAgKTtcbiAgICB0aGlzLmNvZGUub3BlbihgcmV0dXJuIHtgKTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHJlc291cmNlLnN5bnRoZXNpemFibGVBdHRyaWJ1dGVzKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXNFbWl0dGVyLmVtaXRUb1RlcnJhZm9ybShhdHQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2UoYH07YCk7XG4gICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlc291cmNlQXR0cmlidXRlcyhyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIGZvciAoY29uc3QgYXR0IG9mIHJlc291cmNlLmF0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlc0VtaXR0ZXIuZW1pdChcbiAgICAgICAgYXR0LFxuICAgICAgICB0aGlzLmF0dHJpYnV0ZXNFbWl0dGVyLm5lZWRzUmVzZXRFc2NhcGUoYXR0LCByZXNvdXJjZS5hdHRyaWJ1dGVzKSxcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzRW1pdHRlci5uZWVkc0lucHV0RXNjYXBlKGF0dCwgcmVzb3VyY2UuYXR0cmlidXRlcyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEluaXRpYWxpemVyKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVkQ29tbWVudCh0aGlzLmNvZGUpO1xuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBDcmVhdGUgYSBuZXcge0BsaW5rICR7cmVzb3VyY2UubGlua1RvRG9jc30gJHtcbiAgICAgICAgcmVzb3VyY2UudGVycmFmb3JtUmVzb3VyY2VUeXBlXG4gICAgICB9fSAke3Jlc291cmNlLmlzRGF0YVNvdXJjZSA/IFwiRGF0YSBTb3VyY2VcIiA6IFwiUmVzb3VyY2VcIn1gLFxuICAgICk7XG4gICAgY29tbWVudC5saW5lKGBgKTtcbiAgICBjb21tZW50LmxpbmUoYEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0YCk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZWAsXG4gICAgKTtcbiAgICBjb21tZW50LmxpbmUoYEBwYXJhbSBvcHRpb25zICR7cmVzb3VyY2UuY29uZmlnU3RydWN0LmF0dHJpYnV0ZVR5cGV9YCk7XG4gICAgY29tbWVudC5lbmQoKTtcbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgYHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6ICR7cmVzb3VyY2UuY29uZmlnU3RydWN0LmF0dHJpYnV0ZVR5cGV9KWAsXG4gICAgKTtcblxuICAgIHJlc291cmNlLmlzUHJvdmlkZXJcbiAgICAgID8gdGhpcy5lbWl0UHJvdmlkZXJTdXBlcihyZXNvdXJjZSlcbiAgICAgIDogdGhpcy5lbWl0UmVzb3VyY2VTdXBlcihyZXNvdXJjZSk7XG5cbiAgICAvLyBpbml0aWFsaXplIGNvbmZpZyBwcm9wZXJ0aWVzXG4gICAgZm9yIChjb25zdCBhdHQgb2YgcmVzb3VyY2UuY29uZmlnU3RydWN0LmFzc2lnbmFibGVBdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAoYXR0LnNldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgICAgYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9LmludGVybmFsVmFsdWUgPSBjb25maWcuJHthdHQubmFtZX07YCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfSA9IGNvbmZpZy4ke2F0dC5uYW1lfTtgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVzb3VyY2VTdXBlcihyZXNvdXJjZTogUmVzb3VyY2VNb2RlbCkge1xuICAgIHRoaXMuY29kZS5vcGVuKGBzdXBlcihzY29wZSwgaWQsIHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICcke3Jlc291cmNlLnRlcnJhZm9ybVJlc291cmNlVHlwZX0nLGAsXG4gICAgKTtcbiAgICB0aGlzLmVtaXRUZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YShyZXNvdXJjZSk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGRlcGVuZHNPbjogY29uZmlnLmRlcGVuZHNPbixgKTtcbiAgICB0aGlzLmNvZGUubGluZShgY291bnQ6IGNvbmZpZy5jb3VudCxgKTtcbiAgICB0aGlzLmNvZGUubGluZShgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLGApO1xuICAgIHRoaXMuY29kZS5saW5lKGBwcm92aXNpb25lcnM6IGNvbmZpZy5wcm92aXNpb25lcnMsYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLGApO1xuICAgIHRoaXMuY29kZS5saW5lKGBmb3JFYWNoOiBjb25maWcuZm9yRWFjaGApO1xuICAgIHRoaXMuY29kZS5jbG9zZShgfSk7YCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm92aWRlclN1cGVyKHJlc291cmNlOiBSZXNvdXJjZU1vZGVsKSB7XG4gICAgdGhpcy5jb2RlLm9wZW4oYHN1cGVyKHNjb3BlLCBpZCwge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKFxuICAgICAgYHRlcnJhZm9ybVJlc291cmNlVHlwZTogJyR7cmVzb3VyY2UudGVycmFmb3JtUmVzb3VyY2VUeXBlfScsYCxcbiAgICApO1xuICAgIHRoaXMuZW1pdFRlcnJhZm9ybUdlbmVyYXRvck1ldGFkYXRhKHJlc291cmNlKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGB0ZXJyYWZvcm1Qcm92aWRlclNvdXJjZTogJyR7cmVzb3VyY2UudGVycmFmb3JtUHJvdmlkZXJTb3VyY2V9J2AsXG4gICAgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2UoYH0pO2ApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGEocmVzb3VyY2U6IFJlc291cmNlTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUub3BlbihgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtgKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGBwcm92aWRlck5hbWU6ICcke3Jlc291cmNlLnByb3ZpZGVyfScke1xuICAgICAgICByZXNvdXJjZS5wcm92aWRlclZlcnNpb24gfHwgcmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludFxuICAgICAgICAgID8gXCIsXCJcbiAgICAgICAgICA6IFwiXCJcbiAgICAgIH1gLFxuICAgICk7XG5cbiAgICBpZiAocmVzb3VyY2UucHJvdmlkZXJWZXJzaW9uKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByb3ZpZGVyVmVyc2lvbjogJyR7cmVzb3VyY2UucHJvdmlkZXJWZXJzaW9ufScke1xuICAgICAgICAgIHJlc291cmNlLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQgPyBcIixcIiA6IFwiXCJcbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXNvdXJjZS5wcm92aWRlclZlcnNpb25Db25zdHJhaW50KSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ6ICcke3Jlc291cmNlLnByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnR9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5jbG9zZShgfSxgKTtcbiAgfVxufVxuIl19
|