@cdktn/provider-generator 0.24.0-pre.9 → 0.24.0-pre.91
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/.spec.swcrc +22 -0
- package/LICENSE +355 -0
- package/README.md +1 -1
- package/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
- package/build/__tests__/edge-provider-schema/builder.js +6 -3
- package/build/__tests__/edge-provider-schema/cli.js +8 -3
- package/build/__tests__/edge-provider-schema/index.js +119 -1
- package/build/__tests__/provider.test.js +4 -1
- package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
- package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
- package/build/get/__tests__/generator/module-generator.test.js +12 -12
- package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-functions.test.js +176 -0
- package/build/get/__tests__/generator/provider-source-matching.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-source-matching.test.js +45 -0
- package/build/get/__tests__/generator/provider.test.js +9 -1
- package/build/get/__tests__/generator/supported-stored-classes.test.d.ts +2 -0
- package/build/get/__tests__/generator/supported-stored-classes.test.js +137 -0
- package/build/get/__tests__/generator/types.test.js +44 -1
- package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
- package/build/get/__tests__/generator/write-only.test.js +65 -0
- package/build/get/__tests__/target-versions.test.d.ts +2 -0
- package/build/get/__tests__/target-versions.test.js +171 -0
- package/build/get/constructs-maker.d.ts +8 -1
- package/build/get/constructs-maker.js +46 -10
- package/build/get/generator/emitter/attributes-emitter.d.ts +13 -2
- package/build/get/generator/emitter/attributes-emitter.js +71 -5
- package/build/get/generator/emitter/index.d.ts +1 -0
- package/build/get/generator/emitter/index.js +2 -1
- package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
- package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
- package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
- package/build/get/generator/emitter/resource-emitter.js +83 -7
- package/build/get/generator/emitter/struct-emitter.js +10 -10
- package/build/get/generator/models/attribute-model.d.ts +4 -0
- package/build/get/generator/models/attribute-model.js +50 -4
- package/build/get/generator/models/attribute-type-model.d.ts +24 -0
- package/build/get/generator/models/attribute-type-model.js +91 -5
- package/build/get/generator/models/index.d.ts +1 -0
- package/build/get/generator/models/index.js +2 -1
- package/build/get/generator/models/provider-function-model.d.ts +102 -0
- package/build/get/generator/models/provider-function-model.js +667 -0
- package/build/get/generator/models/resource-model.d.ts +3 -0
- package/build/get/generator/models/resource-model.js +13 -4
- package/build/get/generator/models/struct.d.ts +2 -0
- package/build/get/generator/models/struct.js +6 -2
- package/build/get/generator/models/supported-stored-classes.d.ts +5 -0
- package/build/get/generator/models/supported-stored-classes.js +86 -0
- package/build/get/generator/module-generator.js +3 -3
- package/build/get/generator/provider-generator.d.ts +2 -0
- package/build/get/generator/provider-generator.js +41 -6
- package/build/get/generator/resource-parser.js +3 -1
- package/jest.config.js +16 -9
- package/package.json +28 -27
- package/package.sh +1 -1
- package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
- package/src/__tests__/__snapshots__/provider.test.ts.snap +2828 -2828
- package/src/__tests__/edge-provider-schema/builder.ts +201 -0
- package/src/__tests__/edge-provider-schema/cli.ts +51 -0
- package/src/__tests__/edge-provider-schema/index.ts +284 -0
- package/src/__tests__/edge-provider-schema.test.ts +24 -0
- package/src/__tests__/provider.test.ts +183 -0
- package/src/get/__tests__/constructs-maker.test.ts +118 -0
- package/src/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +5 -5
- package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
- package/src/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +3310 -3310
- package/src/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +355 -355
- package/src/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +8 -8
- package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
- package/src/get/__tests__/generator/__snapshots__/provider.test.ts.snap +8 -8
- package/src/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +126 -126
- package/src/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +17 -17
- package/src/get/__tests__/generator/__snapshots__/types.test.ts.snap +201 -52
- package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
- package/src/get/__tests__/generator/complex-computed-types.test.ts +28 -0
- package/src/get/__tests__/generator/deep-nested-attributes.test.ts +56 -0
- package/src/get/__tests__/generator/description-escaping.test.ts +84 -0
- package/src/get/__tests__/generator/empty-provider-resources.test.ts +26 -0
- package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
- package/src/get/__tests__/generator/export-sharding.test.ts +169 -0
- package/src/get/__tests__/generator/fixtures/deeply-nested-collections.test.fixture.json +129 -0
- package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
- package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
- package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
- package/src/get/__tests__/generator/import-style.test.ts +129 -0
- package/src/get/__tests__/generator/module-generator.test.ts +528 -0
- package/src/get/__tests__/generator/nested-types.test.ts +54 -0
- package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
- package/src/get/__tests__/generator/provider-source-matching.test.ts +84 -0
- package/src/get/__tests__/generator/provider.test.ts +59 -0
- package/src/get/__tests__/generator/resource-types.test.ts +118 -0
- package/src/get/__tests__/generator/skipped-attributes.test.ts +72 -0
- package/src/get/__tests__/generator/supported-stored-classes.test.ts +147 -0
- package/src/get/__tests__/generator/types.test.ts +686 -0
- package/src/get/__tests__/generator/versions-file.test.ts +72 -0
- package/src/get/__tests__/generator/write-only.test.ts +71 -0
- package/src/get/__tests__/target-versions.test.ts +206 -0
- package/src/get/__tests__/util.ts +75 -0
- package/src/get/constructs-maker.ts +885 -0
- package/src/get/generator/custom-defaults.ts +493 -0
- package/src/get/generator/emitter/attributes-emitter.ts +316 -0
- package/src/get/generator/emitter/index.ts +6 -0
- package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
- package/src/get/generator/emitter/resource-emitter.ts +330 -0
- package/src/get/generator/emitter/struct-emitter.ts +683 -0
- package/src/get/generator/loop-detection.ts +81 -0
- package/src/get/generator/models/attribute-model.ts +273 -0
- package/src/get/generator/models/attribute-type-model.ts +560 -0
- package/src/get/generator/models/index.ts +8 -0
- package/src/get/generator/models/provider-function-model.ts +872 -0
- package/src/get/generator/models/resource-model.ts +183 -0
- package/src/get/generator/models/scope.ts +54 -0
- package/src/get/generator/models/struct.ts +124 -0
- package/src/get/generator/models/supported-stored-classes.ts +88 -0
- package/src/get/generator/module-generator.ts +234 -0
- package/src/get/generator/provider-generator.ts +428 -0
- package/src/get/generator/resource-parser.ts +764 -0
- package/src/get/generator/sanitized-comments.ts +49 -0
- package/src/get/generator/skipped-attributes.ts +27 -0
- package/src/index.ts +40 -0
- package/src/util.ts +26 -0
- package/tsconfig.json +1 -2
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AttributesEmitter = void 0;
|
|
4
4
|
const models_1 = require("../models");
|
|
5
5
|
const custom_defaults_1 = require("../custom-defaults");
|
|
6
|
+
const sanitized_comments_1 = require("../sanitized-comments");
|
|
6
7
|
function titleCase(value) {
|
|
7
8
|
return value[0].toUpperCase() + value.slice(1);
|
|
8
9
|
}
|
|
@@ -23,24 +24,32 @@ class AttributesEmitter {
|
|
|
23
24
|
else if (isStored) {
|
|
24
25
|
this.code.line(`private ${att.storageName}?: ${att.type.inputTypeDefinition}; `);
|
|
25
26
|
}
|
|
27
|
+
this.emitStoredClassBoundaryDoc(att);
|
|
26
28
|
switch (getterType._type) {
|
|
27
29
|
case "plain":
|
|
30
|
+
this.emitWriteOnlyGetterDeprecationNotice(att);
|
|
28
31
|
this.code.openBlock(`public get ${att.name}()`);
|
|
29
32
|
this.code.line(`return ${this.determineGetAttCall(att)};`);
|
|
30
33
|
this.code.closeBlock();
|
|
31
34
|
break;
|
|
32
35
|
case "args":
|
|
36
|
+
this.emitWriteOnlyGetterDeprecationNotice(att);
|
|
33
37
|
this.code.openBlock(`public ${att.name}(${getterType.args})${getterType.returnType ? ": " + getterType.returnType : ""}`);
|
|
34
38
|
this.code.line(`return ${getterType.returnStatement};`);
|
|
35
39
|
this.code.closeBlock();
|
|
36
40
|
break;
|
|
37
41
|
case "stored_class":
|
|
42
|
+
this.emitWriteOnlyGetterDeprecationNotice(att);
|
|
38
43
|
this.code.openBlock(`public get ${att.name}()`);
|
|
39
44
|
this.code.line(`return this.${att.storageName};`);
|
|
40
45
|
this.code.closeBlock();
|
|
41
46
|
break;
|
|
42
47
|
}
|
|
43
48
|
const setterType = att.setterType;
|
|
49
|
+
// Write-only usage is registered at resolve time instead (see
|
|
50
|
+
// #emitToTerraform/#emitToHclTerraform and
|
|
51
|
+
// TerraformResource#markWriteOnlyAttribute), so setters intentionally
|
|
52
|
+
// emit no registration call here: they only store the value.
|
|
44
53
|
switch (setterType._type) {
|
|
45
54
|
case "set":
|
|
46
55
|
this.code.openBlock(`public set ${att.name}(value: ${setterType.type})`);
|
|
@@ -80,10 +89,43 @@ class AttributesEmitter {
|
|
|
80
89
|
this.code.closeBlock();
|
|
81
90
|
}
|
|
82
91
|
}
|
|
92
|
+
// emits a @deprecated JSDoc block above a write-only attribute's getter:
|
|
93
|
+
// providers never persist/return write-only values, so the state-backed
|
|
94
|
+
// getter always reads back null by protocol contract
|
|
95
|
+
emitWriteOnlyGetterDeprecationNotice(att) {
|
|
96
|
+
if (!att.isWriteOnly) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
100
|
+
comment.line("@deprecated Write-only: the provider never returns this value; reading it always yields null by protocol contract. The getter remains for compatibility and will be removed in a future prebuilt-provider major.");
|
|
101
|
+
comment.end();
|
|
102
|
+
}
|
|
83
103
|
// returns an invocation of a stored class, e.g. 'new DeplotmentMetadataOutputReference(this, "metadata")'
|
|
84
104
|
storedClassInit(att) {
|
|
85
105
|
return att.type.getStoredClassInitializer(att.terraformName);
|
|
86
106
|
}
|
|
107
|
+
// Emits a JSDoc block documenting the Terraform type immediately before getters whose
|
|
108
|
+
// stored class either collapsed a deeper, unsupported nesting into the nearest typed
|
|
109
|
+
// "Any"-wrapper, or fell all the way back to a plain, untyped getter because no stored
|
|
110
|
+
// class (not even a collapsed one) is available. Normal, fully-supported getters get no
|
|
111
|
+
// such doc, to limit snapshot churn.
|
|
112
|
+
emitStoredClassBoundaryDoc(att) {
|
|
113
|
+
const boundaryKind = att.storedClassBoundaryKind;
|
|
114
|
+
if (!boundaryKind) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
118
|
+
comment.line(`Terraform type: \`${(0, models_1.describeTerraformType)(att.type)}\`.`);
|
|
119
|
+
if (boundaryKind === "collapsed") {
|
|
120
|
+
const collapsedName = att.type
|
|
121
|
+
.resolvedStoredClass.name;
|
|
122
|
+
comment.line(`This nesting is deeper than the typed wrapper classes in the core cdktn package; it is exposed as \`${collapsedName}\` and values below that boundary are untyped tokens.`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
comment.line(`No typed wrapper class for this shape exists in the core cdktn package; the value is returned as an untyped token (IResolvable).`);
|
|
126
|
+
}
|
|
127
|
+
comment.end();
|
|
128
|
+
}
|
|
87
129
|
determineGetAttCall(att) {
|
|
88
130
|
if (att.isProvider) {
|
|
89
131
|
return `this.${att.storageName}`;
|
|
@@ -114,7 +156,16 @@ class AttributesEmitter {
|
|
|
114
156
|
return `reset${titleCase(name)}`;
|
|
115
157
|
}
|
|
116
158
|
}
|
|
117
|
-
|
|
159
|
+
/**
|
|
160
|
+
* @param canRegisterProviderFeatureUsage Whether this attribute's mapped
|
|
161
|
+
* value should be wrapped in `this.markWriteOnlyAttribute(...)` when it is
|
|
162
|
+
* write-only. Only true for attributes emitted on classes that extend
|
|
163
|
+
* TerraformResource (managed resources) - struct-level `xToTerraform`/
|
|
164
|
+
* `xToHclTerraform` functions are standalone functions with no `this` of
|
|
165
|
+
* that type, so they never pass this (see ResourceEmitter's
|
|
166
|
+
* `supportsWriteOnlyRegistration`).
|
|
167
|
+
*/
|
|
168
|
+
emitToHclTerraform(att, isStruct, canRegisterProviderFeatureUsage = false) {
|
|
118
169
|
var _a;
|
|
119
170
|
const type = att.type;
|
|
120
171
|
const context = isStruct ? "struct!" : "this";
|
|
@@ -129,7 +180,14 @@ class AttributesEmitter {
|
|
|
129
180
|
const defaultCheck = customDefault !== undefined
|
|
130
181
|
? `${varReference} === undefined ? ${customDefault} : `
|
|
131
182
|
: "";
|
|
132
|
-
const
|
|
183
|
+
const mappedValue = `${defaultCheck}${type.toHclTerraformFunction}(${varReference})`;
|
|
184
|
+
// markWriteOnlyAttribute() passes `undefined`/`null` straight through
|
|
185
|
+
// unwrapped, so this keeps the "remove undefined attributes" filter in
|
|
186
|
+
// the caller (which checks `value.value !== undefined`) working exactly
|
|
187
|
+
// as before for unset/cleared write-only attributes.
|
|
188
|
+
const value = att.isWriteOnly && canRegisterProviderFeatureUsage
|
|
189
|
+
? `this.markWriteOnlyAttribute(${mappedValue})`
|
|
190
|
+
: mappedValue;
|
|
133
191
|
const isBlock = att.type.isComplex;
|
|
134
192
|
const tt = att.type.typeModelType;
|
|
135
193
|
this.code.open(`${att.terraformName}: {`);
|
|
@@ -139,7 +197,7 @@ class AttributesEmitter {
|
|
|
139
197
|
this.code.line(`storageClassType: "${att.type.storedClassType}",`);
|
|
140
198
|
this.code.close("},");
|
|
141
199
|
}
|
|
142
|
-
emitToTerraform(att, isStruct) {
|
|
200
|
+
emitToTerraform(att, isStruct, canRegisterProviderFeatureUsage = false) {
|
|
143
201
|
var _a;
|
|
144
202
|
const type = att.type;
|
|
145
203
|
const context = isStruct ? "struct!" : "this";
|
|
@@ -154,8 +212,16 @@ class AttributesEmitter {
|
|
|
154
212
|
const defaultCheck = customDefault !== undefined
|
|
155
213
|
? `${varReference} === undefined ? ${customDefault} : `
|
|
156
214
|
: "";
|
|
157
|
-
|
|
215
|
+
const mappedValue = `${defaultCheck}${type.toTerraformFunction}(${varReference})`;
|
|
216
|
+
// markWriteOnlyAttribute() passes `undefined`/`null` straight through
|
|
217
|
+
// unwrapped, so an unset/cleared write-only attribute still vanishes
|
|
218
|
+
// from the returned object exactly as before (see the "skip undefined"
|
|
219
|
+
// step in tokens/private/resolve.ts).
|
|
220
|
+
const value = att.isWriteOnly && canRegisterProviderFeatureUsage
|
|
221
|
+
? `this.markWriteOnlyAttribute(${mappedValue})`
|
|
222
|
+
: mappedValue;
|
|
223
|
+
this.code.line(`${att.terraformName}: ${value},`);
|
|
158
224
|
}
|
|
159
225
|
}
|
|
160
226
|
exports.AttributesEmitter = AttributesEmitter;
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy1lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvZW1pdHRlci9hdHRyaWJ1dGVzLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esc0NBQTJDO0FBQzNDLHdEQUFxRDtBQUVyRCxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQWEsaUJBQWlCO0lBQzVCLFlBQW9CLElBQWU7UUFBZixTQUFJLEdBQUosSUFBSSxDQUFXO0lBQUcsQ0FBQztJQUVoQyxJQUFJLENBQUMsR0FBbUIsRUFBRSxXQUFvQixFQUFFLFdBQW9CO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ1osTUFBTSxHQUFHLENBQUMsYUFBYSxnQkFBZ0IsR0FBRyxDQUFDLFFBQVEsZUFBZSxHQUFHLENBQUMsVUFBVSxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FDaEgsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQ2xCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLFFBQVEsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7UUFFbkUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUVsQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFB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LENBQUMsUUFBUTtZQUNULElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxHQUFHLENBQUMsVUFBVTtZQUNmLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sS0FBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxjQUFjLENBQUM7WUFDL0QsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsQixDQUFDLENBQUMsRUFDTixFQUFFLENBQUM7UUFDSCxNQUFNLFlBQVksR0FDaEIsYUFBYSxLQUFLLFNBQVM7WUFDekIsQ0FBQyxDQUFDLEdBQUcsWUFBWSxvQkFBb0IsYUFBYSxLQUFLO1lBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixHQUFHLEdBQUcsQ0FBQyxhQUFhLEtBQUssWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxZQUFZLElBQUksQ0FDckYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRORCw4Q0FzTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBDVVNUT01fREVGQVVMVFMgfSBmcm9tIFwiLi4vY3VzdG9tLWRlZmF1bHRzXCI7XG5cbmZ1bmN0aW9uIHRpdGxlQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XG4gIHJldHVybiB2YWx1ZVswXS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG59XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGVzRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29kZTogQ29kZU1ha2VyKSB7fVxuXG4gIHB1YmxpYyBlbWl0KGF0dDogQXR0cmlidXRlTW9kZWwsIGVzY2FwZVJlc2V0OiBib29sZWFuLCBlc2NhcGVJbnB1dDogYm9vbGVhbikge1xuICAgIHRoaXMuY29kZS5saW5lKCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgLy8gJHthdHQudGVycmFmb3JtTmFtZX0gLSBjb21wdXRlZDogJHthdHQuY29tcHV0ZWR9LCBvcHRpb25hbDogJHthdHQuaXNPcHRpb25hbH0sIHJlcXVpcmVkOiAke2F0dC5pc1JlcXVpcmVkfWAsXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3RvcmVkID0gYXR0LmlzU3RvcmVkO1xuICAgIGNvbnN0IGhhc1Jlc2V0TWV0aG9kID1cbiAgICAgIGlzU3RvcmVkICYmICFhdHQuaXNSZXF1aXJlZCAmJiBhdHQuc2V0dGVyVHlwZS5fdHlwZSAhPT0gXCJub25lXCI7XG4gICAgY29uc3QgaGFzSW5wdXRNZXRob2QgPSBpc1N0b3JlZCAmJiBhdHQuc2V0dGVyVHlwZS5fdHlwZSAhPT0gXCJub25lXCI7XG5cbiAgICBjb25zdCBnZXR0ZXJUeXBlID0gYXR0LmdldHRlclR5cGU7XG5cbiAgICBpZiAoZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIikge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgIGBwcml2YXRlICR7YXR0LnN0b3JhZ2VOYW1lfSA9ICR7dGhpcy5zdG9yZWRDbGFzc0luaXQoYXR0KX07YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc1N0b3JlZCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICAgIGBwcml2YXRlICR7YXR0LnN0b3JhZ2VOYW1lfT86ICR7YXR0LnR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbn07IGAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZ2V0dGVyVHlwZS5fdHlwZSkge1xuICAgICAgY2FzZSBcInBsYWluXCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBnZXQgJHthdHQubmFtZX0oKWApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuICR7dGhpcy5kZXRlcm1pbmVHZXRBdHRDYWxsKGF0dCl9O2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImFyZ3NcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljICR7YXR0Lm5hbWV9KCR7Z2V0dGVyVHlwZS5hcmdzfSkke1xuICAgICAgICAgICAgZ2V0dGVyVHlwZS5yZXR1cm5UeXBlID8gXCI6IFwiICsgZ2V0dGVyVHlwZS5yZXR1cm5UeXBlIDogXCJcIlxuICAgICAgICAgIH1gLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuICR7Z2V0dGVyVHlwZS5yZXR1cm5TdGF0ZW1lbnR9O2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInN0b3JlZF9jbGFzc1wiOlxuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKGBwdWJsaWMgZ2V0ICR7YXR0Lm5hbWV9KClgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGVyVHlwZSA9IGF0dC5zZXR0ZXJUeXBlO1xuXG4gICAgc3dpdGNoIChzZXR0ZXJUeXBlLl90eXBlKSB7XG4gICAgICBjYXNlIFwic2V0XCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBzZXQgJHthdHQubmFtZX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0gPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJwdXRcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljIHB1dCR7dGl0bGVDYXNlKGF0dC5uYW1lKX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0gPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJzdG9yZWRfY2xhc3NcIjpcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhcbiAgICAgICAgICBgcHVibGljIHB1dCR7dGl0bGVDYXNlKGF0dC5uYW1lKX0odmFsdWU6ICR7c2V0dGVyVHlwZS50eXBlfSlgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaGFzUmVzZXRNZXRob2QpIHtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgIGBwdWJsaWMgJHt0aGlzLmdldFJlc2V0TmFtZShhdHQubmFtZSwgZXNjYXBlUmVzZXQpfSgpYCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfS5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdW5kZWZpbmVkO2ApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGlmIChoYXNJbnB1dE1ldGhvZCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5gKTtcbiAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgIGBwdWJsaWMgZ2V0ICR7dGhpcy5nZXRJbnB1dE5hbWUoYXR0LCBlc2NhcGVJbnB1dCl9KClgLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfS5pbnRlcm5hbFZhbHVlO2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfTtgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm5zIGFuIGludm9jYXRpb24gb2YgYSBzdG9yZWQgY2xhc3MsIGUuZy4gJ25ldyBEZXBsb3RtZW50TWV0YWRhdGFPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJtZXRhZGF0YVwiKSdcbiAgcHJpdmF0ZSBzdG9yZWRDbGFzc0luaXQoYXR0OiBBdHRyaWJ1dGVNb2RlbCkge1xuICAgIHJldHVybiBhdHQudHlwZS5nZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKGF0dC50ZXJyYWZvcm1OYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXRlcm1pbmVHZXRBdHRDYWxsKGF0dDogQXR0cmlidXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIGlmIChhdHQuaXNQcm92aWRlcikge1xuICAgICAgcmV0dXJuIGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dC50eXBlLmdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKGF0dC50ZXJyYWZvcm1OYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBuZWVkc0lucHV0RXNjYXBlKFxuICAgIGF0dDogQXR0cmlidXRlTW9kZWwsXG4gICAgYXR0cmlidXRlczogQXR0cmlidXRlTW9kZWxbXSxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF0dHJpYnV0ZXMuZmluZCgoYSkgPT5cbiAgICAgICAgYS50ZXJyYWZvcm1OYW1lLm1hdGNoKGBeJHthdHQudGVycmFmb3JtTmFtZX1faW5wdXQkYCksXG4gICAgICApIGluc3RhbmNlb2YgQXR0cmlidXRlTW9kZWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldElucHV0TmFtZShhdHQ6IEF0dHJpYnV0ZU1vZGVsLCBlc2NhcGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICByZXR1cm4gYCR7YXR0Lm5hbWV9VGZJbnB1dGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHthdHQubmFtZX1JbnB1dGA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5lZWRzUmVzZXRFc2NhcGUoXG4gICAgYXR0OiBBdHRyaWJ1dGVNb2RlbCxcbiAgICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXR0cmlidXRlcy5maW5kKChhKSA9PlxuICAgICAgICBhLnRlcnJhZm9ybU5hbWUubWF0Y2goYF5yZXNldF8ke2F0dC50ZXJyYWZvcm1OYW1lfSRgKSxcbiAgICAgICkgaW5zdGFuY2VvZiBBdHRyaWJ1dGVNb2RlbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzZXROYW1lKG5hbWU6IHN0cmluZywgZXNjYXBlOiBib29sZWFuKSB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gbmFtZTtcbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICByZXR1cm4gYHJlc2V0VGYke3RpdGxlQ2FzZShuYW1lKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYHJlc2V0JHt0aXRsZUNhc2UobmFtZSl9YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW1pdFRvSGNsVGVycmFmb3JtKGF0dDogQXR0cmlidXRlTW9kZWwsIGlzU3RydWN0OiBib29sZWFuKSB7XG4gICAgY29uc3QgdHlwZSA9IGF0dC50eXBlO1xuICAgIGNvbnN0IGNvbnRleHQgPSBpc1N0cnVjdCA/IFwic3RydWN0IVwiIDogXCJ0aGlzXCI7XG4gICAgY29uc3QgbmFtZSA9IGlzU3RydWN0ID8gYXR0Lm5hbWUgOiBhdHQuc3RvcmFnZU5hbWU7XG4gICAgY29uc3QgY3VzdG9tRGVmYXVsdCA9IENVU1RPTV9ERUZBVUxUU1thdHQudGVycmFmb3JtRnVsbE5hbWVdO1xuXG4gICAgY29uc3QgdmFyUmVmZXJlbmNlID0gYCR7Y29udGV4dH0uJHtuYW1lfSR7XG4gICAgICAhaXNTdHJ1Y3QgJiZcbiAgICAgIHR5cGUuaXNDb21wbGV4ICYmXG4gICAgICAhYXR0LmlzUHJvdmlkZXIgJiZcbiAgICAgICh0eXBlLnN0cnVjdD8uaXNDbGFzcyB8fCBhdHQuZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIilcbiAgICAgICAgPyBcIi5pbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgZGVmYXVsdENoZWNrID1cbiAgICAgIGN1c3RvbURlZmF1bHQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGAke3ZhclJlZmVyZW5jZX0gPT09IHVuZGVmaW5lZCA/ICR7Y3VzdG9tRGVmYXVsdH0gOiBgXG4gICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IHZhbHVlID0gYCR7ZGVmYXVsdENoZWNrfSR7dHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9ufSgke3ZhclJlZmVyZW5jZX0pYDtcbiAgICBjb25zdCBpc0Jsb2NrID0gYXR0LnR5cGUuaXNDb21wbGV4O1xuICAgIGNvbnN0IHR0ID0gYXR0LnR5cGUudHlwZU1vZGVsVHlwZTtcblxuICAgIHRoaXMuY29kZS5vcGVuKGAke2F0dC50ZXJyYWZvcm1OYW1lfToge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKGB2YWx1ZTogJHt2YWx1ZX0sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGlzQmxvY2s6ICR7aXNCbG9ja30sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHR5cGU6IFwiJHt0dH1cIixgKTtcbiAgICB0aGlzLmNvZGUubGluZShgc3RvcmFnZUNsYXNzVHlwZTogXCIke2F0dC50eXBlLnN0b3JlZENsYXNzVHlwZX1cIixgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2UoXCJ9LFwiKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0VG9UZXJyYWZvcm0oYXR0OiBBdHRyaWJ1dGVNb2RlbCwgaXNTdHJ1Y3Q6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB0eXBlID0gYXR0LnR5cGU7XG4gICAgY29uc3QgY29udGV4dCA9IGlzU3RydWN0ID8gXCJzdHJ1Y3QhXCIgOiBcInRoaXNcIjtcbiAgICBjb25zdCBuYW1lID0gaXNTdHJ1Y3QgPyBhdHQubmFtZSA6IGF0dC5zdG9yYWdlTmFtZTtcbiAgICBjb25zdCBjdXN0b21EZWZhdWx0ID0gQ1VTVE9NX0RFRkFVTFRTW2F0dC50ZXJyYWZvcm1GdWxsTmFtZV07XG5cbiAgICBjb25zdCB2YXJSZWZlcmVuY2UgPSBgJHtjb250ZXh0fS4ke25hbWV9JHtcbiAgICAgICFpc1N0cnVjdCAmJlxuICAgICAgdHlwZS5pc0NvbXBsZXggJiZcbiAgICAgICFhdHQuaXNQcm92aWRlciAmJlxuICAgICAgKHR5cGUuc3RydWN0Py5pc0NsYXNzIHx8IGF0dC5nZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKVxuICAgICAgICA/IFwiLmludGVybmFsVmFsdWVcIlxuICAgICAgICA6IFwiXCJcbiAgICB9YDtcbiAgICBjb25zdCBkZWZhdWx0Q2hlY2sgPVxuICAgICAgY3VzdG9tRGVmYXVsdCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7dmFyUmVmZXJlbmNlfSA9PT0gdW5kZWZpbmVkID8gJHtjdXN0b21EZWZhdWx0fSA6IGBcbiAgICAgICAgOiBcIlwiO1xuXG4gICAgdGhpcy5jb2RlLmxpbmUoXG4gICAgICBgJHthdHQudGVycmFmb3JtTmFtZX06ICR7ZGVmYXVsdENoZWNrfSR7dHlwZS50b1RlcnJhZm9ybUZ1bmN0aW9ufSgke3ZhclJlZmVyZW5jZX0pLGAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlcy1lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvZW1pdHRlci9hdHRyaWJ1dGVzLWVtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esc0NBSW1CO0FBQ25CLHdEQUFxRDtBQUNyRCw4REFBeUQ7QUFFekQsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFhLGlCQUFpQjtJQUM1QixZQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztJQUFHLENBQUM7SUFFaEMsSUFBSSxDQUFDLEdBQW1CLEVBQUUsV0FBb0IsRUFBRSxXQUFvQjtRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNaLE1BQU0sR0FBRyxDQUFDLGFBQWEsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLGVBQWUsR0FBRyxDQUFDLFVBQVUsZUFBZSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQ2hILENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUNsQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztRQUNqRSxNQUFNLGNBQWMsR0FBRyxRQUFRLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1FBRW5FLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFFbEMsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLGNBQWMsRUFBRSxD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V0FBVyxJQUFJLCtCQUErQjtZQUNoRCxDQUFDLENBQUMsK0JBQStCLFdBQVcsR0FBRztZQUMvQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWxCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQTVTRCw4Q0E0U0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlTW9kZWwsXG4gIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwsXG4gIGRlc2NyaWJlVGVycmFmb3JtVHlwZSxcbn0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgQ1VTVE9NX0RFRkFVTFRTIH0gZnJvbSBcIi4uL2N1c3RvbS1kZWZhdWx0c1wiO1xuaW1wb3J0IHsgc2FuaXRpemVkQ29tbWVudCB9IGZyb20gXCIuLi9zYW5pdGl6ZWQtY29tbWVudHNcIjtcblxuZnVuY3Rpb24gdGl0bGVDYXNlKHZhbHVlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHZhbHVlWzBdLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zbGljZSgxKTtcbn1cblxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZXNFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb2RlOiBDb2RlTWFrZXIpIHt9XG5cbiAgcHVibGljIGVtaXQoYXR0OiBBdHRyaWJ1dGVNb2RlbCwgZXNjYXBlUmVzZXQ6IGJvb2xlYW4sIGVzY2FwZUlucHV0OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICB0aGlzLmNvZGUubGluZShcbiAgICAgIGAvLyAke2F0dC50ZXJyYWZvcm1OYW1lfSAtIGNvbXB1dGVkOiAke2F0dC5jb21wdXRlZH0sIG9wdGlvbmFsOiAke2F0dC5pc09wdGlvbmFsfSwgcmVxdWlyZWQ6ICR7YXR0LmlzUmVxdWlyZWR9YCxcbiAgICApO1xuXG4gICAgY29uc3QgaXNTdG9yZWQgPSBhdHQuaXNTdG9yZWQ7XG4gICAgY29uc3QgaGFzUmVzZXRNZXRob2QgPVxuICAgICAgaXNTdG9yZWQgJiYgIWF0dC5pc1JlcXVpcmVkICYmIGF0dC5zZXR0ZXJUeXBlLl90eXBlICE9PSBcIm5vbmVcIjtcbiAgICBjb25zdCBoYXNJbnB1dE1ldGhvZCA9IGlzU3RvcmVkICYmIGF0dC5zZXR0ZXJUeXBlLl90eXBlICE9PSBcIm5vbmVcIjtcblxuICAgIGNvbnN0IGdldHRlclR5cGUgPSBhdHQuZ2V0dGVyVHlwZTtcblxuICAgIGlmIChnZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByaXZhdGUgJHthdHQuc3RvcmFnZU5hbWV9ID0gJHt0aGlzLnN0b3JlZENsYXNzSW5pdChhdHQpfTtgLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzU3RvcmVkKSB7XG4gICAgICB0aGlzLmNvZGUubGluZShcbiAgICAgICAgYHByaXZhdGUgJHthdHQuc3RvcmFnZU5hbWV9PzogJHthdHQudHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufTsgYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U3RvcmVkQ2xhc3NCb3VuZGFyeURvYyhhdHQpO1xuXG4gICAgc3dpdGNoIChnZXR0ZXJUeXBlLl90eXBlKSB7XG4gICAgICBjYXNlIFwicGxhaW5cIjpcbiAgICAgICAgdGhpcy5lbWl0V3JpdGVPbmx5R2V0dGVyRGVwcmVjYXRpb25Ob3RpY2UoYXR0KTtcbiAgICAgICAgdGhpcy5jb2RlLm9wZW5CbG9jayhgcHVibGljIGdldCAke2F0dC5uYW1lfSgpYCk7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gJHt0aGlzLmRldGVybWluZUdldEF0dENhbGwoYXR0KX07YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiYXJnc1wiOlxuICAgICAgICB0aGlzLmVtaXRXcml0ZU9ubHlHZXR0ZXJEZXByZWNhdGlvbk5vdGljZShhdHQpO1xuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICAgIGBwdWJsaWMgJHthdHQubmFtZX0oJHtnZXR0ZXJUeXBlLmFyZ3N9KSR7XG4gICAgICAgICAgICBnZXR0ZXJUeXBlLnJldHVyblR5cGUgPyBcIjogXCIgKyBnZXR0ZXJUeXBlLnJldHVyblR5cGUgOiBcIlwiXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gJHtnZXR0ZXJUeXBlLnJldHVyblN0YXRlbWVudH07YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwic3RvcmVkX2NsYXNzXCI6XG4gICAgICAgIHRoaXMuZW1pdFdyaXRlT25seUdldHRlckRlcHJlY2F0aW9uTm90aWNlKGF0dCk7XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYHB1YmxpYyBnZXQgJHthdHQubmFtZX0oKWApO1xuICAgICAgICB0aGlzLmNvZGUubGluZShgcmV0dXJuIHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9O2ApO1xuICAgICAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBzZXR0ZXJUeXBlID0gYXR0LnNldHRlclR5cGU7XG5cbiAgICAvLyBXcml0ZS1vbmx5IHVzYWdlIGlzIHJlZ2lzdGVyZWQgYXQgcmVzb2x2ZSB0aW1lIGluc3RlYWQgKHNlZVxuICAgIC8vICNlbWl0VG9UZXJyYWZvcm0vI2VtaXRUb0hjbFRlcnJhZm9ybSBhbmRcbiAgICAvLyBUZXJyYWZvcm1SZXNvdXJjZSNtYXJrV3JpdGVPbmx5QXR0cmlidXRlKSwgc28gc2V0dGVycyBpbnRlbnRpb25hbGx5XG4gICAgLy8gZW1pdCBubyByZWdpc3RyYXRpb24gY2FsbCBoZXJlOiB0aGV5IG9ubHkgc3RvcmUgdGhlIHZhbHVlLlxuICAgIHN3aXRjaCAoc2V0dGVyVHlwZS5fdHlwZSkge1xuICAgICAgY2FzZSBcInNldFwiOlxuICAgICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICAgIGBwdWJsaWMgc2V0ICR7YXR0Lm5hbWV9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdmFsdWU7YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwicHV0XCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBwdXQke3RpdGxlQ2FzZShhdHQubmFtZSl9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9ID0gdmFsdWU7YCk7XG4gICAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwic3RvcmVkX2NsYXNzXCI6XG4gICAgICAgIHRoaXMuY29kZS5vcGVuQmxvY2soXG4gICAgICAgICAgYHB1YmxpYyBwdXQke3RpdGxlQ2FzZShhdHQubmFtZSl9KHZhbHVlOiAke3NldHRlclR5cGUudHlwZX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9LmludGVybmFsVmFsdWUgPSB2YWx1ZTtgKTtcbiAgICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGhhc1Jlc2V0TWV0aG9kKSB7XG4gICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICBgcHVibGljICR7dGhpcy5nZXRSZXNldE5hbWUoYXR0Lm5hbWUsIGVzY2FwZVJlc2V0KX0oKWAsXG4gICAgICApO1xuXG4gICAgICBpZiAoc2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIikge1xuICAgICAgICB0aGlzLmNvZGUubGluZShgdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZSA9IHVuZGVmaW5lZDtgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGB0aGlzLiR7YXR0LnN0b3JhZ2VOYW1lfSA9IHVuZGVmaW5lZDtgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzSW5wdXRNZXRob2QpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uYCk7XG4gICAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgICBgcHVibGljIGdldCAke3RoaXMuZ2V0SW5wdXROYW1lKGF0dCwgZXNjYXBlSW5wdXQpfSgpYCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzZXR0ZXJUeXBlLl90eXBlID09PSBcInN0b3JlZF9jbGFzc1wiKSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX0uaW50ZXJuYWxWYWx1ZTtgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29kZS5saW5lKGByZXR1cm4gdGhpcy4ke2F0dC5zdG9yYWdlTmFtZX07YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW1pdHMgYSBAZGVwcmVjYXRlZCBKU0RvYyBibG9jayBhYm92ZSBhIHdyaXRlLW9ubHkgYXR0cmlidXRlJ3MgZ2V0dGVyOlxuICAvLyBwcm92aWRlcnMgbmV2ZXIgcGVyc2lzdC9yZXR1cm4gd3JpdGUtb25seSB2YWx1ZXMsIHNvIHRoZSBzdGF0ZS1iYWNrZWRcbiAgLy8gZ2V0dGVyIGFsd2F5cyByZWFkcyBiYWNrIG51bGwgYnkgcHJvdG9jb2wgY29udHJhY3RcbiAgcHJpdmF0ZSBlbWl0V3JpdGVPbmx5R2V0dGVyRGVwcmVjYXRpb25Ob3RpY2UoYXR0OiBBdHRyaWJ1dGVNb2RlbCkge1xuICAgIGlmICghYXR0LmlzV3JpdGVPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWVudCA9IHNhbml0aXplZENvbW1lbnQodGhpcy5jb2RlKTtcbiAgICBjb21tZW50LmxpbmUoXG4gICAgICBcIkBkZXByZWNhdGVkIFdyaXRlLW9ubHk6IHRoZSBwcm92aWRlciBuZXZlciByZXR1cm5zIHRoaXMgdmFsdWU7IHJlYWRpbmcgaXQgYWx3YXlzIHlpZWxkcyBudWxsIGJ5IHByb3RvY29sIGNvbnRyYWN0LiBUaGUgZ2V0dGVyIHJlbWFpbnMgZm9yIGNvbXBhdGliaWxpdHkgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBwcmVidWlsdC1wcm92aWRlciBtYWpvci5cIixcbiAgICApO1xuICAgIGNvbW1lbnQuZW5kKCk7XG4gIH1cblxuICAvLyByZXR1cm5zIGFuIGludm9jYXRpb24gb2YgYSBzdG9yZWQgY2xhc3MsIGUuZy4gJ25ldyBEZXBsb3RtZW50TWV0YWRhdGFPdXRwdXRSZWZlcmVuY2UodGhpcywgXCJtZXRhZGF0YVwiKSdcbiAgcHJpdmF0ZSBzdG9yZWRDbGFzc0luaXQoYXR0OiBBdHRyaWJ1dGVNb2RlbCkge1xuICAgIHJldHVybiBhdHQudHlwZS5nZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKGF0dC50ZXJyYWZvcm1OYW1lKTtcbiAgfVxuXG4gIC8vIEVtaXRzIGEgSlNEb2MgYmxvY2sgZG9jdW1lbnRpbmcgdGhlIFRlcnJhZm9ybSB0eXBlIGltbWVkaWF0ZWx5IGJlZm9yZSBnZXR0ZXJzIHdob3NlXG4gIC8vIHN0b3JlZCBjbGFzcyBlaXRoZXIgY29sbGFwc2VkIGEgZGVlcGVyLCB1bnN1cHBvcnRlZCBuZXN0aW5nIGludG8gdGhlIG5lYXJlc3QgdHlwZWRcbiAgLy8gXCJBbnlcIi13cmFwcGVyLCBvciBmZWxsIGFsbCB0aGUgd2F5IGJhY2sgdG8gYSBwbGFpbiwgdW50eXBlZCBnZXR0ZXIgYmVjYXVzZSBubyBzdG9yZWRcbiAgLy8gY2xhc3MgKG5vdCBldmVuIGEgY29sbGFwc2VkIG9uZSkgaXMgYXZhaWxhYmxlLiBOb3JtYWwsIGZ1bGx5LXN1cHBvcnRlZCBnZXR0ZXJzIGdldCBub1xuICAvLyBzdWNoIGRvYywgdG8gbGltaXQgc25hcHNob3QgY2h1cm4uXG4gIHByaXZhdGUgZW1pdFN0b3JlZENsYXNzQm91bmRhcnlEb2MoYXR0OiBBdHRyaWJ1dGVNb2RlbCkge1xuICAgIGNvbnN0IGJvdW5kYXJ5S2luZCA9IGF0dC5zdG9yZWRDbGFzc0JvdW5kYXJ5S2luZDtcbiAgICBpZiAoIWJvdW5kYXJ5S2luZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKGBUZXJyYWZvcm0gdHlwZTogXFxgJHtkZXNjcmliZVRlcnJhZm9ybVR5cGUoYXR0LnR5cGUpfVxcYC5gKTtcblxuICAgIGlmIChib3VuZGFyeUtpbmQgPT09IFwiY29sbGFwc2VkXCIpIHtcbiAgICAgIGNvbnN0IGNvbGxhcHNlZE5hbWUgPSAoYXR0LnR5cGUgYXMgQ29sbGVjdGlvbkF0dHJpYnV0ZVR5cGVNb2RlbClcbiAgICAgICAgLnJlc29sdmVkU3RvcmVkQ2xhc3MhLm5hbWU7XG4gICAgICBjb21tZW50LmxpbmUoXG4gICAgICAgIGBUaGlzIG5lc3RpbmcgaXMgZGVlcGVyIHRoYW4gdGhlIHR5cGVkIHdyYXBwZXIgY2xhc3NlcyBpbiB0aGUgY29yZSBjZGt0biBwYWNrYWdlOyBpdCBpcyBleHBvc2VkIGFzIFxcYCR7Y29sbGFwc2VkTmFtZX1cXGAgYW5kIHZhbHVlcyBiZWxvdyB0aGF0IGJvdW5kYXJ5IGFyZSB1bnR5cGVkIHRva2Vucy5gLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tbWVudC5saW5lKFxuICAgICAgICBgTm8gdHlwZWQgd3JhcHBlciBjbGFzcyBmb3IgdGhpcyBzaGFwZSBleGlzdHMgaW4gdGhlIGNvcmUgY2RrdG4gcGFja2FnZTsgdGhlIHZhbHVlIGlzIHJldHVybmVkIGFzIGFuIHVudHlwZWQgdG9rZW4gKElSZXNvbHZhYmxlKS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb21tZW50LmVuZCgpO1xuICB9XG5cbiAgcHVibGljIGRldGVybWluZUdldEF0dENhbGwoYXR0OiBBdHRyaWJ1dGVNb2RlbCk6IHN0cmluZyB7XG4gICAgaWYgKGF0dC5pc1Byb3ZpZGVyKSB7XG4gICAgICByZXR1cm4gYHRoaXMuJHthdHQuc3RvcmFnZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0LnR5cGUuZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24oYXR0LnRlcnJhZm9ybU5hbWUpO1xuICB9XG5cbiAgcHVibGljIG5lZWRzSW5wdXRFc2NhcGUoXG4gICAgYXR0OiBBdHRyaWJ1dGVNb2RlbCxcbiAgICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXR0cmlidXRlcy5maW5kKChhKSA9PlxuICAgICAgICBhLnRlcnJhZm9ybU5hbWUubWF0Y2goYF4ke2F0dC50ZXJyYWZvcm1OYW1lfV9pbnB1dCRgKSxcbiAgICAgICkgaW5zdGFuY2VvZiBBdHRyaWJ1dGVNb2RlbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SW5wdXROYW1lKGF0dDogQXR0cmlidXRlTW9kZWwsIGVzY2FwZTogYm9vbGVhbikge1xuICAgIGlmIChlc2NhcGUpIHtcbiAgICAgIHJldHVybiBgJHthdHQubmFtZX1UZklucHV0YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2F0dC5uYW1lfUlucHV0YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmVlZHNSZXNldEVzY2FwZShcbiAgICBhdHQ6IEF0dHJpYnV0ZU1vZGVsLFxuICAgIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBhdHRyaWJ1dGVzLmZpbmQoKGEpID0+XG4gICAgICAgIGEudGVycmFmb3JtTmFtZS5tYXRjaChgXnJlc2V0XyR7YXR0LnRlcnJhZm9ybU5hbWV9JGApLFxuICAgICAgKSBpbnN0YW5jZW9mIEF0dHJpYnV0ZU1vZGVsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXNldE5hbWUobmFtZTogc3RyaW5nLCBlc2NhcGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiBuYW1lO1xuICAgIGlmIChlc2NhcGUpIHtcbiAgICAgIHJldHVybiBgcmVzZXRUZiR7dGl0bGVDYXNlKG5hbWUpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgcmVzZXQke3RpdGxlQ2FzZShuYW1lKX1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2FuUmVnaXN0ZXJQcm92aWRlckZlYXR1cmVVc2FnZSBXaGV0aGVyIHRoaXMgYXR0cmlidXRlJ3MgbWFwcGVkXG4gICAqIHZhbHVlIHNob3VsZCBiZSB3cmFwcGVkIGluIGB0aGlzLm1hcmtXcml0ZU9ubHlBdHRyaWJ1dGUoLi4uKWAgd2hlbiBpdCBpc1xuICAgKiB3cml0ZS1vbmx5LiBPbmx5IHRydWUgZm9yIGF0dHJpYnV0ZXMgZW1pdHRlZCBvbiBjbGFzc2VzIHRoYXQgZXh0ZW5kXG4gICAqIFRlcnJhZm9ybVJlc291cmNlIChtYW5hZ2VkIHJlc291cmNlcykgLSBzdHJ1Y3QtbGV2ZWwgYHhUb1RlcnJhZm9ybWAvXG4gICAqIGB4VG9IY2xUZXJyYWZvcm1gIGZ1bmN0aW9ucyBhcmUgc3RhbmRhbG9uZSBmdW5jdGlvbnMgd2l0aCBubyBgdGhpc2Agb2ZcbiAgICogdGhhdCB0eXBlLCBzbyB0aGV5IG5ldmVyIHBhc3MgdGhpcyAoc2VlIFJlc291cmNlRW1pdHRlcidzXG4gICAqIGBzdXBwb3J0c1dyaXRlT25seVJlZ2lzdHJhdGlvbmApLlxuICAgKi9cbiAgcHVibGljIGVtaXRUb0hjbFRlcnJhZm9ybShcbiAgICBhdHQ6IEF0dHJpYnV0ZU1vZGVsLFxuICAgIGlzU3RydWN0OiBib29sZWFuLFxuICAgIGNhblJlZ2lzdGVyUHJvdmlkZXJGZWF0dXJlVXNhZ2UgPSBmYWxzZSxcbiAgKSB7XG4gICAgY29uc3QgdHlwZSA9IGF0dC50eXBlO1xuICAgIGNvbnN0IGNvbnRleHQgPSBpc1N0cnVjdCA/IFwic3RydWN0IVwiIDogXCJ0aGlzXCI7XG4gICAgY29uc3QgbmFtZSA9IGlzU3RydWN0ID8gYXR0Lm5hbWUgOiBhdHQuc3RvcmFnZU5hbWU7XG4gICAgY29uc3QgY3VzdG9tRGVmYXVsdCA9IENVU1RPTV9ERUZBVUxUU1thdHQudGVycmFmb3JtRnVsbE5hbWVdO1xuXG4gICAgY29uc3QgdmFyUmVmZXJlbmNlID0gYCR7Y29udGV4dH0uJHtuYW1lfSR7XG4gICAgICAhaXNTdHJ1Y3QgJiZcbiAgICAgIHR5cGUuaXNDb21wbGV4ICYmXG4gICAgICAhYXR0LmlzUHJvdmlkZXIgJiZcbiAgICAgICh0eXBlLnN0cnVjdD8uaXNDbGFzcyB8fCBhdHQuZ2V0dGVyVHlwZS5fdHlwZSA9PT0gXCJzdG9yZWRfY2xhc3NcIilcbiAgICAgICAgPyBcIi5pbnRlcm5hbFZhbHVlXCJcbiAgICAgICAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgZGVmYXVsdENoZWNrID1cbiAgICAgIGN1c3RvbURlZmF1bHQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGAke3ZhclJlZmVyZW5jZX0gPT09IHVuZGVmaW5lZCA/ICR7Y3VzdG9tRGVmYXVsdH0gOiBgXG4gICAgICAgIDogXCJcIjtcblxuICAgIGNvbnN0IG1hcHBlZFZhbHVlID0gYCR7ZGVmYXVsdENoZWNrfSR7dHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9ufSgke3ZhclJlZmVyZW5jZX0pYDtcbiAgICAvLyBtYXJrV3JpdGVPbmx5QXR0cmlidXRlKCkgcGFzc2VzIGB1bmRlZmluZWRgL2BudWxsYCBzdHJhaWdodCB0aHJvdWdoXG4gICAgLy8gdW53cmFwcGVkLCBzbyB0aGlzIGtlZXBzIHRoZSBcInJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1wiIGZpbHRlciBpblxuICAgIC8vIHRoZSBjYWxsZXIgKHdoaWNoIGNoZWNrcyBgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZGApIHdvcmtpbmcgZXhhY3RseVxuICAgIC8vIGFzIGJlZm9yZSBmb3IgdW5zZXQvY2xlYXJlZCB3cml0ZS1vbmx5IGF0dHJpYnV0ZXMuXG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgYXR0LmlzV3JpdGVPbmx5ICYmIGNhblJlZ2lzdGVyUHJvdmlkZXJGZWF0dXJlVXNhZ2VcbiAgICAgICAgPyBgdGhpcy5tYXJrV3JpdGVPbmx5QXR0cmlidXRlKCR7bWFwcGVkVmFsdWV9KWBcbiAgICAgICAgOiBtYXBwZWRWYWx1ZTtcbiAgICBjb25zdCBpc0Jsb2NrID0gYXR0LnR5cGUuaXNDb21wbGV4O1xuICAgIGNvbnN0IHR0ID0gYXR0LnR5cGUudHlwZU1vZGVsVHlwZTtcblxuICAgIHRoaXMuY29kZS5vcGVuKGAke2F0dC50ZXJyYWZvcm1OYW1lfToge2ApO1xuICAgIHRoaXMuY29kZS5saW5lKGB2YWx1ZTogJHt2YWx1ZX0sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYGlzQmxvY2s6ICR7aXNCbG9ja30sYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHR5cGU6IFwiJHt0dH1cIixgKTtcbiAgICB0aGlzLmNvZGUubGluZShgc3RvcmFnZUNsYXNzVHlwZTogXCIke2F0dC50eXBlLnN0b3JlZENsYXNzVHlwZX1cIixgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2UoXCJ9LFwiKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0VG9UZXJyYWZvcm0oXG4gICAgYXR0OiBBdHRyaWJ1dGVNb2RlbCxcbiAgICBpc1N0cnVjdDogYm9vbGVhbixcbiAgICBjYW5SZWdpc3RlclByb3ZpZGVyRmVhdHVyZVVzYWdlID0gZmFsc2UsXG4gICkge1xuICAgIGNvbnN0IHR5cGUgPSBhdHQudHlwZTtcbiAgICBjb25zdCBjb250ZXh0ID0gaXNTdHJ1Y3QgPyBcInN0cnVjdCFcIiA6IFwidGhpc1wiO1xuICAgIGNvbnN0IG5hbWUgPSBpc1N0cnVjdCA/IGF0dC5uYW1lIDogYXR0LnN0b3JhZ2VOYW1lO1xuICAgIGNvbnN0IGN1c3RvbURlZmF1bHQgPSBDVVNUT01fREVGQVVMVFNbYXR0LnRlcnJhZm9ybUZ1bGxOYW1lXTtcblxuICAgIGNvbnN0IHZhclJlZmVyZW5jZSA9IGAke2NvbnRleHR9LiR7bmFtZX0ke1xuICAgICAgIWlzU3RydWN0ICYmXG4gICAgICB0eXBlLmlzQ29tcGxleCAmJlxuICAgICAgIWF0dC5pc1Byb3ZpZGVyICYmXG4gICAgICAodHlwZS5zdHJ1Y3Q/LmlzQ2xhc3MgfHwgYXR0LmdldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpXG4gICAgICAgID8gXCIuaW50ZXJuYWxWYWx1ZVwiXG4gICAgICAgIDogXCJcIlxuICAgIH1gO1xuICAgIGNvbnN0IGRlZmF1bHRDaGVjayA9XG4gICAgICBjdXN0b21EZWZhdWx0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBgJHt2YXJSZWZlcmVuY2V9ID09PSB1bmRlZmluZWQgPyAke2N1c3RvbURlZmF1bHR9IDogYFxuICAgICAgICA6IFwiXCI7XG5cbiAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGAke2RlZmF1bHRDaGVja30ke3R5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0oJHt2YXJSZWZlcmVuY2V9KWA7XG4gICAgLy8gbWFya1dyaXRlT25seUF0dHJpYnV0ZSgpIHBhc3NlcyBgdW5kZWZpbmVkYC9gbnVsbGAgc3RyYWlnaHQgdGhyb3VnaFxuICAgIC8vIHVud3JhcHBlZCwgc28gYW4gdW5zZXQvY2xlYXJlZCB3cml0ZS1vbmx5IGF0dHJpYnV0ZSBzdGlsbCB2YW5pc2hlc1xuICAgIC8vIGZyb20gdGhlIHJldHVybmVkIG9iamVjdCBleGFjdGx5IGFzIGJlZm9yZSAoc2VlIHRoZSBcInNraXAgdW5kZWZpbmVkXCJcbiAgICAvLyBzdGVwIGluIHRva2Vucy9wcml2YXRlL3Jlc29sdmUudHMpLlxuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIGF0dC5pc1dyaXRlT25seSAmJiBjYW5SZWdpc3RlclByb3ZpZGVyRmVhdHVyZVVzYWdlXG4gICAgICAgID8gYHRoaXMubWFya1dyaXRlT25seUF0dHJpYnV0ZSgke21hcHBlZFZhbHVlfSlgXG4gICAgICAgIDogbWFwcGVkVmFsdWU7XG5cbiAgICB0aGlzLmNvZGUubGluZShgJHthdHQudGVycmFmb3JtTmFtZX06ICR7dmFsdWV9LGApO1xuICB9XG59XG4iXX0=
|
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
// Copyright (c) HashiCorp, Inc
|
|
18
18
|
// SPDX-License-Identifier: MPL-2.0
|
|
19
19
|
__exportStar(require("./attributes-emitter"), exports);
|
|
20
|
+
__exportStar(require("./provider-functions-emitter"), exports);
|
|
20
21
|
__exportStar(require("./resource-emitter"), exports);
|
|
21
22
|
__exportStar(require("./struct-emitter"), exports);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9lbWl0dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHVEQUFxQztBQUNyQywrREFBNkM7QUFDN0MscURBQW1DO0FBQ25DLG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgKiBmcm9tIFwiLi9hdHRyaWJ1dGVzLWVtaXR0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyLWZ1bmN0aW9ucy1lbWl0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1lbWl0dGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJ1Y3QtZW1pdHRlclwiO1xuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CodeMaker } from "codemaker";
|
|
2
|
+
import { ProviderFunctionsModel } from "../models/provider-function-model";
|
|
3
|
+
export declare class ProviderFunctionsEmitter {
|
|
4
|
+
private readonly code;
|
|
5
|
+
constructor(code: CodeMaker);
|
|
6
|
+
emit(model: ProviderFunctionsModel): void;
|
|
7
|
+
private emitClass;
|
|
8
|
+
private emitConstructor;
|
|
9
|
+
private emitMethod;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=provider-functions-emitter.d.ts.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProviderFunctionsEmitter = void 0;
|
|
4
|
+
const sanitized_comments_1 = require("../sanitized-comments");
|
|
5
|
+
const PROVIDER_LOCAL_NAME_JSDOC = "The local name of the provider in required_providers; defaults to the registry short name. Override when the provider is declared under a different local name — aliases do not change the namespace, local names do.";
|
|
6
|
+
class ProviderFunctionsEmitter {
|
|
7
|
+
constructor(code) {
|
|
8
|
+
this.code = code;
|
|
9
|
+
}
|
|
10
|
+
emit(model) {
|
|
11
|
+
this.code.line(`import * as cdktn from 'cdktn';`);
|
|
12
|
+
this.code.line();
|
|
13
|
+
this.emitClass(model);
|
|
14
|
+
}
|
|
15
|
+
emitClass(model) {
|
|
16
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
17
|
+
comment.line(`Provider-defined functions of the ${model.providerName} provider.`);
|
|
18
|
+
comment.end();
|
|
19
|
+
this.code.openBlock(`export class ${model.className}`);
|
|
20
|
+
this.emitConstructor();
|
|
21
|
+
for (const fn of model.functions) {
|
|
22
|
+
this.emitMethod(fn);
|
|
23
|
+
}
|
|
24
|
+
this.code.closeBlock();
|
|
25
|
+
}
|
|
26
|
+
emitConstructor() {
|
|
27
|
+
// A TypeScript parameter property (`constructor(private readonly x: T)`)
|
|
28
|
+
// requires the compiler to synthesize a `this.x = x;` assignment - that's
|
|
29
|
+
// a real transform, not a type-only erasure, so it isn't recognized by
|
|
30
|
+
// Node's native type-stripping (`node file.ts` with no bundler/transpiler,
|
|
31
|
+
// e.g. `--experimental-strip-types`), which throws
|
|
32
|
+
// `ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX` on sight of one. Declare the field
|
|
33
|
+
// and assign it in the constructor body instead, which strips cleanly.
|
|
34
|
+
this.code.line(`private readonly providerLocalName: string;`);
|
|
35
|
+
this.code.line();
|
|
36
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
37
|
+
comment.line(`@param providerLocalName ${PROVIDER_LOCAL_NAME_JSDOC}`);
|
|
38
|
+
comment.end();
|
|
39
|
+
this.code.openBlock(`constructor(providerLocalName: string)`);
|
|
40
|
+
this.code.line(`this.providerLocalName = providerLocalName;`);
|
|
41
|
+
this.code.closeBlock();
|
|
42
|
+
}
|
|
43
|
+
emitMethod(fn) {
|
|
44
|
+
var _a;
|
|
45
|
+
this.code.line();
|
|
46
|
+
const comment = (0, sanitized_comments_1.sanitizedComment)(this.code);
|
|
47
|
+
const description = (_a = fn.description) !== null && _a !== void 0 ? _a : fn.summary;
|
|
48
|
+
if (description)
|
|
49
|
+
comment.line(description);
|
|
50
|
+
if (fn.deprecationMessage) {
|
|
51
|
+
comment.line(`@deprecated ${fn.deprecationMessage}`);
|
|
52
|
+
}
|
|
53
|
+
// The variadic parameter's docstringType is already wrapped in
|
|
54
|
+
// `Array<...>` by buildFunctionModel (see provider-function-model.ts),
|
|
55
|
+
// so it shares this one `@param` emission path with every fixed
|
|
56
|
+
// parameter instead of needing its own wrapping here.
|
|
57
|
+
const allParameters = fn.variadicParameter
|
|
58
|
+
? [...fn.parameters, fn.variadicParameter]
|
|
59
|
+
: fn.parameters;
|
|
60
|
+
for (const param of allParameters) {
|
|
61
|
+
// Official JSDoc grammar: only the type expression goes inside the
|
|
62
|
+
// braces; prose (the schema description plus any generated
|
|
63
|
+
// list/set/nullability guidance - see the model's `docstringNote`)
|
|
64
|
+
// follows the parameter name after ` - `.
|
|
65
|
+
const prose = [param.description, param.docstringNote]
|
|
66
|
+
.filter(Boolean)
|
|
67
|
+
.join(" ");
|
|
68
|
+
comment.line(`@param {${param.docstringType}} ${param.name}${prose ? ` - ${prose}` : ""}`);
|
|
69
|
+
}
|
|
70
|
+
comment.line(`@returns {${fn.returnDocstringType}}${fn.returnDocstringNote ? ` ${fn.returnDocstringNote}` : ""}`);
|
|
71
|
+
comment.end();
|
|
72
|
+
const methodParams = [
|
|
73
|
+
...fn.parameters.map((p) => `${p.name}${p.optional ? "?" : ""}: ${p.tsType}`),
|
|
74
|
+
...(fn.variadicParameter
|
|
75
|
+
? // `Array<T>` rather than `T[]`: for a union element type (e.g.
|
|
76
|
+
// `boolean | cdktn.IResolvable`), bare `T[]` binds as `boolean |
|
|
77
|
+
// (cdktn.IResolvable[])` instead of `(boolean | cdktn.IResolvable)[]`.
|
|
78
|
+
[
|
|
79
|
+
`${fn.variadicParameter.name}: Array<${fn.variadicParameter.tsType}>`,
|
|
80
|
+
]
|
|
81
|
+
: []),
|
|
82
|
+
];
|
|
83
|
+
const invokeArgs = [
|
|
84
|
+
...fn.parameters.map((p) => p.name),
|
|
85
|
+
...(fn.variadicParameter ? [`...${fn.variadicParameter.name}`] : []),
|
|
86
|
+
];
|
|
87
|
+
const invokeExpression = `cdktn.TerraformProviderFunction.invoke(this.providerLocalName, "${fn.terraformName}", [${invokeArgs.join(", ")}])`;
|
|
88
|
+
this.code.openBlock(`public ${fn.methodName}(${methodParams.join(", ")}): ${fn.returnTsType}`);
|
|
89
|
+
this.code.line(`return ${fn.wrapReturn(invokeExpression)};`);
|
|
90
|
+
this.code.closeBlock();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.ProviderFunctionsEmitter = ProviderFunctionsEmitter;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZnVuY3Rpb25zLWVtaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9lbWl0dGVyL3Byb3ZpZGVyLWZ1bmN0aW9ucy1lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLDhEQUF5RDtBQUV6RCxNQUFNLHlCQUF5QixHQUM3Qix1TkFBdU4sQ0FBQztBQUUxTixNQUFhLHdCQUF3QjtJQUNuQyxZQUE2QixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztJQUFHLENBQUM7SUFFekMsSUFBSSxDQUFDLEtBQTZCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBNkI7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBZ0IsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLElBQUksQ0FDVixxQ0FBcUMsS0FBSyxDQUFDLFlBQVksWUFBWSxDQUNwRSxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixLQUFLLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFF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R0FBRyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUI7Z0JBQ3RCLENBQUMsQ0FBQywrREFBK0Q7b0JBQy9ELGlFQUFpRTtvQkFDakUsdUVBQXVFO29CQUN2RTt3QkFDRSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRztxQkFDdEU7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRztZQUNqQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3JFLENBQUM7UUFFRixNQUFNLGdCQUFnQixHQUFHLG1FQUFtRSxFQUFFLENBQUMsYUFBYSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU3SSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDakIsVUFBVSxFQUFFLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxDQUMxRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBeEdELDREQXdHQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBDb2RlTWFrZXIgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5pbXBvcnQge1xuICBQcm92aWRlckZ1bmN0aW9uTW9kZWwsXG4gIFByb3ZpZGVyRnVuY3Rpb25zTW9kZWwsXG59IGZyb20gXCIuLi9tb2RlbHMvcHJvdmlkZXItZnVuY3Rpb24tbW9kZWxcIjtcbmltcG9ydCB7IHNhbml0aXplZENvbW1lbnQgfSBmcm9tIFwiLi4vc2FuaXRpemVkLWNvbW1lbnRzXCI7XG5cbmNvbnN0IFBST1ZJREVSX0xPQ0FMX05BTUVfSlNET0MgPVxuICBcIlRoZSBsb2NhbCBuYW1lIG9mIHRoZSBwcm92aWRlciBpbiByZXF1aXJlZF9wcm92aWRlcnM7IGRlZmF1bHRzIHRvIHRoZSByZWdpc3RyeSBzaG9ydCBuYW1lLiBPdmVycmlkZSB3aGVuIHRoZSBwcm92aWRlciBpcyBkZWNsYXJlZCB1bmRlciBhIGRpZmZlcmVudCBsb2NhbCBuYW1lIOKAlCBhbGlhc2VzIGRvIG5vdCBjaGFuZ2UgdGhlIG5hbWVzcGFjZSwgbG9jYWwgbmFtZXMgZG8uXCI7XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlckZ1bmN0aW9uc0VtaXR0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcikge31cblxuICBwdWJsaWMgZW1pdChtb2RlbDogUHJvdmlkZXJGdW5jdGlvbnNNb2RlbCkge1xuICAgIHRoaXMuY29kZS5saW5lKGBpbXBvcnQgKiBhcyBjZGt0biBmcm9tICdjZGt0bic7YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICB0aGlzLmVtaXRDbGFzcyhtb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDbGFzcyhtb2RlbDogUHJvdmlkZXJGdW5jdGlvbnNNb2RlbCkge1xuICAgIGNvbnN0IGNvbW1lbnQgPSBzYW5pdGl6ZWRDb21tZW50KHRoaXMuY29kZSk7XG4gICAgY29tbWVudC5saW5lKFxuICAgICAgYFByb3ZpZGVyLWRlZmluZWQgZnVuY3Rpb25zIG9mIHRoZSAke21vZGVsLnByb3ZpZGVyTmFtZX0gcHJvdmlkZXIuYCxcbiAgICApO1xuICAgIGNvbW1lbnQuZW5kKCk7XG4gICAgdGhpcy5jb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7bW9kZWwuY2xhc3NOYW1lfWApO1xuXG4gICAgdGhpcy5lbWl0Q29uc3RydWN0b3IoKTtcblxuICAgIGZvciAoY29uc3QgZm4gb2YgbW9kZWwuZnVuY3Rpb25zKSB7XG4gICAgICB0aGlzLmVtaXRNZXRob2QoZm4pO1xuICAgIH1cblxuICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBIFR5cGVTY3JpcHQgcGFyYW1ldGVyIHByb3BlcnR5IChgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB4OiBUKWApXG4gICAgLy8gcmVxdWlyZXMgdGhlIGNvbXBpbGVyIHRvIHN5bnRoZXNpemUgYSBgdGhpcy54ID0geDtgIGFzc2lnbm1lbnQgLSB0aGF0J3NcbiAgICAvLyBhIHJlYWwgdHJhbnNmb3JtLCBub3QgYSB0eXBlLW9ubHkgZXJhc3VyZSwgc28gaXQgaXNuJ3QgcmVjb2duaXplZCBieVxuICAgIC8vIE5vZGUncyBuYXRpdmUgdHlwZS1zdHJpcHBpbmcgKGBub2RlIGZpbGUudHNgIHdpdGggbm8gYnVuZGxlci90cmFuc3BpbGVyLFxuICAgIC8vIGUuZy4gYC0tZXhwZXJpbWVudGFsLXN0cmlwLXR5cGVzYCksIHdoaWNoIHRocm93c1xuICAgIC8vIGBFUlJfVU5TVVBQT1JURURfVFlQRVNDUklQVF9TWU5UQVhgIG9uIHNpZ2h0IG9mIG9uZS4gRGVjbGFyZSB0aGUgZmllbGRcbiAgICAvLyBhbmQgYXNzaWduIGl0IGluIHRoZSBjb25zdHJ1Y3RvciBib2R5IGluc3RlYWQsIHdoaWNoIHN0cmlwcyBjbGVhbmx5LlxuICAgIHRoaXMuY29kZS5saW5lKGBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyTG9jYWxOYW1lOiBzdHJpbmc7YCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoKTtcbiAgICBjb25zdCBjb21tZW50ID0gc2FuaXRpemVkQ29tbWVudCh0aGlzLmNvZGUpO1xuICAgIGNvbW1lbnQubGluZShgQHBhcmFtIHByb3ZpZGVyTG9jYWxOYW1lICR7UFJPVklERVJfTE9DQUxfTkFNRV9KU0RPQ31gKTtcbiAgICBjb21tZW50LmVuZCgpO1xuICAgIHRoaXMuY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHByb3ZpZGVyTG9jYWxOYW1lOiBzdHJpbmcpYCk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHRoaXMucHJvdmlkZXJMb2NhbE5hbWUgPSBwcm92aWRlckxvY2FsTmFtZTtgKTtcbiAgICB0aGlzLmNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0TWV0aG9kKGZuOiBQcm92aWRlckZ1bmN0aW9uTW9kZWwpIHtcbiAgICB0aGlzLmNvZGUubGluZSgpO1xuXG4gICAgY29uc3QgY29tbWVudCA9IHNhbml0aXplZENvbW1lbnQodGhpcy5jb2RlKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGZuLmRlc2NyaXB0aW9uID8/IGZuLnN1bW1hcnk7XG4gICAgaWYgKGRlc2NyaXB0aW9uKSBjb21tZW50LmxpbmUoZGVzY3JpcHRpb24pO1xuICAgIGlmIChmbi5kZXByZWNhdGlvbk1lc3NhZ2UpIHtcbiAgICAgIGNvbW1lbnQubGluZShgQGRlcHJlY2F0ZWQgJHtmbi5kZXByZWNhdGlvbk1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIC8vIFRoZSB2YXJpYWRpYyBwYXJhbWV0ZXIncyBkb2NzdHJpbmdUeXBlIGlzIGFscmVhZHkgd3JhcHBlZCBpblxuICAgIC8vIGBBcnJheTwuLi4+YCBieSBidWlsZEZ1bmN0aW9uTW9kZWwgKHNlZSBwcm92aWRlci1mdW5jdGlvbi1tb2RlbC50cyksXG4gICAgLy8gc28gaXQgc2hhcmVzIHRoaXMgb25lIGBAcGFyYW1gIGVtaXNzaW9uIHBhdGggd2l0aCBldmVyeSBmaXhlZFxuICAgIC8vIHBhcmFtZXRlciBpbnN0ZWFkIG9mIG5lZWRpbmcgaXRzIG93biB3cmFwcGluZyBoZXJlLlxuICAgIGNvbnN0IGFsbFBhcmFtZXRlcnMgPSBmbi52YXJpYWRpY1BhcmFtZXRlclxuICAgICAgPyBbLi4uZm4ucGFyYW1ldGVycywgZm4udmFyaWFkaWNQYXJhbWV0ZXJdXG4gICAgICA6IGZuLnBhcmFtZXRlcnM7XG4gICAgZm9yIChjb25zdCBwYXJhbSBvZiBhbGxQYXJhbWV0ZXJzKSB7XG4gICAgICAvLyBPZmZpY2lhbCBKU0RvYyBncmFtbWFyOiBvbmx5IHRoZSB0eXBlIGV4cHJlc3Npb24gZ29lcyBpbnNpZGUgdGhlXG4gICAgICAvLyBicmFjZXM7IHByb3NlICh0aGUgc2NoZW1hIGRlc2NyaXB0aW9uIHBsdXMgYW55IGdlbmVyYXRlZFxuICAgICAgLy8gbGlzdC9zZXQvbnVsbGFiaWxpdHkgZ3VpZGFuY2UgLSBzZWUgdGhlIG1vZGVsJ3MgYGRvY3N0cmluZ05vdGVgKVxuICAgICAgLy8gZm9sbG93cyB0aGUgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgYCAtIGAuXG4gICAgICBjb25zdCBwcm9zZSA9IFtwYXJhbS5kZXNjcmlwdGlvbiwgcGFyYW0uZG9jc3RyaW5nTm90ZV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbihcIiBcIik7XG4gICAgICBjb21tZW50LmxpbmUoXG4gICAgICAgIGBAcGFyYW0geyR7cGFyYW0uZG9jc3RyaW5nVHlwZX19ICR7cGFyYW0ubmFtZX0ke3Byb3NlID8gYCAtICR7cHJvc2V9YCA6IFwiXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbW1lbnQubGluZShcbiAgICAgIGBAcmV0dXJucyB7JHtmbi5yZXR1cm5Eb2NzdHJpbmdUeXBlfX0ke2ZuLnJldHVybkRvY3N0cmluZ05vdGUgPyBgICR7Zm4ucmV0dXJuRG9jc3RyaW5nTm90ZX1gIDogXCJcIn1gLFxuICAgICk7XG4gICAgY29tbWVudC5lbmQoKTtcblxuICAgIGNvbnN0IG1ldGhvZFBhcmFtcyA9IFtcbiAgICAgIC4uLmZuLnBhcmFtZXRlcnMubWFwKFxuICAgICAgICAocCkgPT4gYCR7cC5uYW1lfSR7cC5vcHRpb25hbCA/IFwiP1wiIDogXCJcIn06ICR7cC50c1R5cGV9YCxcbiAgICAgICksXG4gICAgICAuLi4oZm4udmFyaWFkaWNQYXJhbWV0ZXJcbiAgICAgICAgPyAvLyBgQXJyYXk8VD5gIHJhdGhlciB0aGFuIGBUW11gOiBmb3IgYSB1bmlvbiBlbGVtZW50IHR5cGUgKGUuZy5cbiAgICAgICAgICAvLyBgYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlYCksIGJhcmUgYFRbXWAgYmluZHMgYXMgYGJvb2xlYW4gfFxuICAgICAgICAgIC8vIChjZGt0bi5JUmVzb2x2YWJsZVtdKWAgaW5zdGVhZCBvZiBgKGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZSlbXWAuXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYCR7Zm4udmFyaWFkaWNQYXJhbWV0ZXIubmFtZX06IEFycmF5PCR7Zm4udmFyaWFkaWNQYXJhbWV0ZXIudHNUeXBlfT5gLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgXTtcblxuICAgIGNvbnN0IGludm9rZUFyZ3MgPSBbXG4gICAgICAuLi5mbi5wYXJhbWV0ZXJzLm1hcCgocCkgPT4gcC5uYW1lKSxcbiAgICAgIC4uLihmbi52YXJpYWRpY1BhcmFtZXRlciA/IFtgLi4uJHtmbi52YXJpYWRpY1BhcmFtZXRlci5uYW1lfWBdIDogW10pLFxuICAgIF07XG5cbiAgICBjb25zdCBpbnZva2VFeHByZXNzaW9uID0gYGNka3RuLlRlcnJhZm9ybVByb3ZpZGVyRnVuY3Rpb24uaW52b2tlKHRoaXMucHJvdmlkZXJMb2NhbE5hbWUsIFwiJHtmbi50ZXJyYWZvcm1OYW1lfVwiLCBbJHtpbnZva2VBcmdzLmpvaW4oXCIsIFwiKX1dKWA7XG5cbiAgICB0aGlzLmNvZGUub3BlbkJsb2NrKFxuICAgICAgYHB1YmxpYyAke2ZuLm1ldGhvZE5hbWV9KCR7bWV0aG9kUGFyYW1zLmpvaW4oXCIsIFwiKX0pOiAke2ZuLnJldHVyblRzVHlwZX1gLFxuICAgICk7XG4gICAgdGhpcy5jb2RlLmxpbmUoYHJldHVybiAke2ZuLndyYXBSZXR1cm4oaW52b2tlRXhwcmVzc2lvbil9O2ApO1xuICAgIHRoaXMuY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,17 +3,21 @@ import { ResourceModel } from "../models";
|
|
|
3
3
|
import { AttributesEmitter } from "./attributes-emitter";
|
|
4
4
|
export declare class ResourceEmitter {
|
|
5
5
|
private readonly code;
|
|
6
|
+
private readonly importExtension;
|
|
6
7
|
attributesEmitter: AttributesEmitter;
|
|
7
|
-
constructor(code: CodeMaker);
|
|
8
|
+
constructor(code: CodeMaker, importExtension: string);
|
|
8
9
|
emit(resource: ResourceModel): void;
|
|
10
|
+
private emitFunctionsGetter;
|
|
9
11
|
private emitHeader;
|
|
10
12
|
private emitStaticProperties;
|
|
11
13
|
private emitStaticMethods;
|
|
12
14
|
private emitHclResourceSynthesis;
|
|
13
15
|
private emitResourceSynthesis;
|
|
16
|
+
private supportsWriteOnlyRegistration;
|
|
14
17
|
private emitResourceAttributes;
|
|
15
18
|
private emitInitializer;
|
|
16
19
|
private emitResourceSuper;
|
|
20
|
+
private emitEphemeralResourceSuper;
|
|
17
21
|
private emitProviderSuper;
|
|
18
22
|
private emitTerraformGeneratorMetadata;
|
|
19
23
|
}
|