@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.
Files changed (124) hide show
  1. package/.spec.swcrc +22 -0
  2. package/LICENSE +355 -0
  3. package/README.md +1 -1
  4. package/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
  5. package/build/__tests__/edge-provider-schema/builder.js +6 -3
  6. package/build/__tests__/edge-provider-schema/cli.js +8 -3
  7. package/build/__tests__/edge-provider-schema/index.js +119 -1
  8. package/build/__tests__/provider.test.js +4 -1
  9. package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
  10. package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
  11. package/build/get/__tests__/generator/module-generator.test.js +12 -12
  12. package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
  13. package/build/get/__tests__/generator/provider-functions.test.js +176 -0
  14. package/build/get/__tests__/generator/provider-source-matching.test.d.ts +2 -0
  15. package/build/get/__tests__/generator/provider-source-matching.test.js +45 -0
  16. package/build/get/__tests__/generator/provider.test.js +9 -1
  17. package/build/get/__tests__/generator/supported-stored-classes.test.d.ts +2 -0
  18. package/build/get/__tests__/generator/supported-stored-classes.test.js +137 -0
  19. package/build/get/__tests__/generator/types.test.js +44 -1
  20. package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
  21. package/build/get/__tests__/generator/write-only.test.js +65 -0
  22. package/build/get/__tests__/target-versions.test.d.ts +2 -0
  23. package/build/get/__tests__/target-versions.test.js +171 -0
  24. package/build/get/constructs-maker.d.ts +8 -1
  25. package/build/get/constructs-maker.js +46 -10
  26. package/build/get/generator/emitter/attributes-emitter.d.ts +13 -2
  27. package/build/get/generator/emitter/attributes-emitter.js +71 -5
  28. package/build/get/generator/emitter/index.d.ts +1 -0
  29. package/build/get/generator/emitter/index.js +2 -1
  30. package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
  31. package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
  32. package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
  33. package/build/get/generator/emitter/resource-emitter.js +83 -7
  34. package/build/get/generator/emitter/struct-emitter.js +10 -10
  35. package/build/get/generator/models/attribute-model.d.ts +4 -0
  36. package/build/get/generator/models/attribute-model.js +50 -4
  37. package/build/get/generator/models/attribute-type-model.d.ts +24 -0
  38. package/build/get/generator/models/attribute-type-model.js +91 -5
  39. package/build/get/generator/models/index.d.ts +1 -0
  40. package/build/get/generator/models/index.js +2 -1
  41. package/build/get/generator/models/provider-function-model.d.ts +102 -0
  42. package/build/get/generator/models/provider-function-model.js +667 -0
  43. package/build/get/generator/models/resource-model.d.ts +3 -0
  44. package/build/get/generator/models/resource-model.js +13 -4
  45. package/build/get/generator/models/struct.d.ts +2 -0
  46. package/build/get/generator/models/struct.js +6 -2
  47. package/build/get/generator/models/supported-stored-classes.d.ts +5 -0
  48. package/build/get/generator/models/supported-stored-classes.js +86 -0
  49. package/build/get/generator/module-generator.js +3 -3
  50. package/build/get/generator/provider-generator.d.ts +2 -0
  51. package/build/get/generator/provider-generator.js +41 -6
  52. package/build/get/generator/resource-parser.js +3 -1
  53. package/jest.config.js +16 -9
  54. package/package.json +28 -27
  55. package/package.sh +1 -1
  56. package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
  57. package/src/__tests__/__snapshots__/provider.test.ts.snap +2828 -2828
  58. package/src/__tests__/edge-provider-schema/builder.ts +201 -0
  59. package/src/__tests__/edge-provider-schema/cli.ts +51 -0
  60. package/src/__tests__/edge-provider-schema/index.ts +284 -0
  61. package/src/__tests__/edge-provider-schema.test.ts +24 -0
  62. package/src/__tests__/provider.test.ts +183 -0
  63. package/src/get/__tests__/constructs-maker.test.ts +118 -0
  64. package/src/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +5 -5
  65. package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
  66. package/src/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +3310 -3310
  67. package/src/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +355 -355
  68. package/src/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +8 -8
  69. package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
  70. package/src/get/__tests__/generator/__snapshots__/provider.test.ts.snap +8 -8
  71. package/src/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +126 -126
  72. package/src/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +17 -17
  73. package/src/get/__tests__/generator/__snapshots__/types.test.ts.snap +201 -52
  74. package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
  75. package/src/get/__tests__/generator/complex-computed-types.test.ts +28 -0
  76. package/src/get/__tests__/generator/deep-nested-attributes.test.ts +56 -0
  77. package/src/get/__tests__/generator/description-escaping.test.ts +84 -0
  78. package/src/get/__tests__/generator/empty-provider-resources.test.ts +26 -0
  79. package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
  80. package/src/get/__tests__/generator/export-sharding.test.ts +169 -0
  81. package/src/get/__tests__/generator/fixtures/deeply-nested-collections.test.fixture.json +129 -0
  82. package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
  83. package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
  84. package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
  85. package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
  86. package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
  87. package/src/get/__tests__/generator/import-style.test.ts +129 -0
  88. package/src/get/__tests__/generator/module-generator.test.ts +528 -0
  89. package/src/get/__tests__/generator/nested-types.test.ts +54 -0
  90. package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
  91. package/src/get/__tests__/generator/provider-source-matching.test.ts +84 -0
  92. package/src/get/__tests__/generator/provider.test.ts +59 -0
  93. package/src/get/__tests__/generator/resource-types.test.ts +118 -0
  94. package/src/get/__tests__/generator/skipped-attributes.test.ts +72 -0
  95. package/src/get/__tests__/generator/supported-stored-classes.test.ts +147 -0
  96. package/src/get/__tests__/generator/types.test.ts +686 -0
  97. package/src/get/__tests__/generator/versions-file.test.ts +72 -0
  98. package/src/get/__tests__/generator/write-only.test.ts +71 -0
  99. package/src/get/__tests__/target-versions.test.ts +206 -0
  100. package/src/get/__tests__/util.ts +75 -0
  101. package/src/get/constructs-maker.ts +885 -0
  102. package/src/get/generator/custom-defaults.ts +493 -0
  103. package/src/get/generator/emitter/attributes-emitter.ts +316 -0
  104. package/src/get/generator/emitter/index.ts +6 -0
  105. package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
  106. package/src/get/generator/emitter/resource-emitter.ts +330 -0
  107. package/src/get/generator/emitter/struct-emitter.ts +683 -0
  108. package/src/get/generator/loop-detection.ts +81 -0
  109. package/src/get/generator/models/attribute-model.ts +273 -0
  110. package/src/get/generator/models/attribute-type-model.ts +560 -0
  111. package/src/get/generator/models/index.ts +8 -0
  112. package/src/get/generator/models/provider-function-model.ts +872 -0
  113. package/src/get/generator/models/resource-model.ts +183 -0
  114. package/src/get/generator/models/scope.ts +54 -0
  115. package/src/get/generator/models/struct.ts +124 -0
  116. package/src/get/generator/models/supported-stored-classes.ts +88 -0
  117. package/src/get/generator/module-generator.ts +234 -0
  118. package/src/get/generator/provider-generator.ts +428 -0
  119. package/src/get/generator/resource-parser.ts +764 -0
  120. package/src/get/generator/sanitized-comments.ts +49 -0
  121. package/src/get/generator/skipped-attributes.ts +27 -0
  122. package/src/index.ts +40 -0
  123. package/src/util.ts +26 -0
  124. 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
- emitToHclTerraform(att, isStruct) {
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 value = `${defaultCheck}${type.toHclTerraformFunction}(${varReference})`;
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
- this.code.line(`${att.terraformName}: ${defaultCheck}${type.toTerraformFunction}(${varReference}),`);
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=
@@ -1,4 +1,5 @@
1
1
  export * from "./attributes-emitter";
2
+ export * from "./provider-functions-emitter";
2
3
  export * from "./resource-emitter";
3
4
  export * from "./struct-emitter";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9lbWl0dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHVEQUFxQztBQUNyQyxxREFBbUM7QUFDbkMsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmV4cG9ydCAqIGZyb20gXCIuL2F0dHJpYnV0ZXMtZW1pdHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2UtZW1pdHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RydWN0LWVtaXR0ZXJcIjtcbiJdfQ==
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
  }