@cdktn/provider-generator 0.23.0-pre.7 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/ambient.d.ts +0 -1
  2. package/{lib → build}/__tests__/edge-provider-schema/builder.d.ts +1 -0
  3. package/build/__tests__/edge-provider-schema/builder.js +106 -0
  4. package/build/__tests__/edge-provider-schema/cli.d.ts +2 -0
  5. package/build/__tests__/edge-provider-schema/cli.js +67 -0
  6. package/{lib → build}/__tests__/edge-provider-schema/index.d.ts +1 -0
  7. package/build/__tests__/edge-provider-schema/index.js +154 -0
  8. package/build/__tests__/edge-provider-schema.test.d.ts +2 -0
  9. package/build/__tests__/edge-provider-schema.test.js +46 -0
  10. package/build/__tests__/provider.test.d.ts +2 -0
  11. package/build/__tests__/provider.test.js +158 -0
  12. package/build/get/__tests__/constructs-maker.test.d.ts +2 -0
  13. package/build/get/__tests__/constructs-maker.test.js +113 -0
  14. package/build/get/__tests__/generator/complex-computed-types.test.d.ts +2 -0
  15. package/build/get/__tests__/generator/complex-computed-types.test.js +42 -0
  16. package/build/get/__tests__/generator/deep-nested-attributes.test.d.ts +2 -0
  17. package/build/get/__tests__/generator/deep-nested-attributes.test.js +50 -0
  18. package/build/get/__tests__/generator/description-escaping.test.d.ts +2 -0
  19. package/build/get/__tests__/generator/description-escaping.test.js +65 -0
  20. package/build/get/__tests__/generator/empty-provider-resources.test.d.ts +2 -0
  21. package/build/get/__tests__/generator/empty-provider-resources.test.js +40 -0
  22. package/build/get/__tests__/generator/export-sharding.test.d.ts +2 -0
  23. package/build/get/__tests__/generator/export-sharding.test.js +82 -0
  24. package/build/get/__tests__/generator/module-generator.test.d.ts +2 -0
  25. package/build/get/__tests__/generator/module-generator.test.js +476 -0
  26. package/build/get/__tests__/generator/nested-types.test.d.ts +2 -0
  27. package/build/get/__tests__/generator/nested-types.test.js +51 -0
  28. package/build/get/__tests__/generator/provider.test.d.ts +2 -0
  29. package/build/get/__tests__/generator/provider.test.js +51 -0
  30. package/build/get/__tests__/generator/resource-types.test.d.ts +2 -0
  31. package/build/get/__tests__/generator/resource-types.test.js +78 -0
  32. package/build/get/__tests__/generator/skipped-attributes.test.d.ts +2 -0
  33. package/build/get/__tests__/generator/skipped-attributes.test.js +55 -0
  34. package/build/get/__tests__/generator/types.test.d.ts +2 -0
  35. package/build/get/__tests__/generator/types.test.js +289 -0
  36. package/build/get/__tests__/generator/versions-file.test.d.ts +2 -0
  37. package/build/get/__tests__/generator/versions-file.test.js +74 -0
  38. package/{lib → build}/get/__tests__/util.d.ts +1 -0
  39. package/build/get/__tests__/util.js +59 -0
  40. package/{lib → build}/get/constructs-maker.d.ts +2 -1
  41. package/{lib → build}/get/constructs-maker.js +5 -2
  42. package/{lib → build}/get/generator/custom-defaults.d.ts +1 -0
  43. package/build/get/generator/custom-defaults.js +403 -0
  44. package/{lib → build}/get/generator/emitter/attributes-emitter.d.ts +1 -0
  45. package/build/get/generator/emitter/attributes-emitter.js +161 -0
  46. package/{lib → build}/get/generator/emitter/index.d.ts +1 -0
  47. package/{lib → build}/get/generator/emitter/index.js +1 -1
  48. package/{lib → build}/get/generator/emitter/resource-emitter.d.ts +1 -0
  49. package/build/get/generator/emitter/resource-emitter.js +147 -0
  50. package/{lib → build}/get/generator/emitter/struct-emitter.d.ts +1 -0
  51. package/build/get/generator/emitter/struct-emitter.js +500 -0
  52. package/{lib → build}/get/generator/loop-detection.d.ts +1 -0
  53. package/build/get/generator/loop-detection.js +56 -0
  54. package/{lib → build}/get/generator/models/attribute-model.d.ts +1 -0
  55. package/build/get/generator/models/attribute-model.js +160 -0
  56. package/{lib → build}/get/generator/models/attribute-type-model.d.ts +1 -0
  57. package/build/get/generator/models/attribute-type-model.js +376 -0
  58. package/{lib → build}/get/generator/models/index.d.ts +1 -0
  59. package/{lib → build}/get/generator/models/index.js +1 -1
  60. package/{lib → build}/get/generator/models/resource-model.d.ts +1 -0
  61. package/build/get/generator/models/resource-model.js +106 -0
  62. package/{lib → build}/get/generator/models/scope.d.ts +1 -0
  63. package/build/get/generator/models/scope.js +36 -0
  64. package/{lib → build}/get/generator/models/struct.d.ts +1 -0
  65. package/build/get/generator/models/struct.js +90 -0
  66. package/{lib → build}/get/generator/module-generator.d.ts +1 -0
  67. package/build/get/generator/module-generator.js +184 -0
  68. package/{lib → build}/get/generator/provider-generator.d.ts +1 -0
  69. package/build/get/generator/provider-generator.js +225 -0
  70. package/{lib → build}/get/generator/resource-parser.d.ts +1 -0
  71. package/build/get/generator/resource-parser.js +497 -0
  72. package/{lib → build}/get/generator/sanitized-comments.d.ts +1 -0
  73. package/build/get/generator/sanitized-comments.js +44 -0
  74. package/{lib → build}/get/generator/skipped-attributes.d.ts +1 -0
  75. package/build/get/generator/skipped-attributes.js +29 -0
  76. package/{lib → build}/index.d.ts +1 -0
  77. package/{lib → build}/index.js +1 -1
  78. package/{lib → build}/util.d.ts +1 -0
  79. package/build/util.js +30 -0
  80. package/package.json +13 -15
  81. package/{lib → src}/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +1 -1
  82. package/{lib → src}/__tests__/__snapshots__/provider.test.ts.snap +14953 -890
  83. package/{lib → src}/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +1 -1
  84. package/{lib → src}/get/__tests__/generator/__snapshots__/description-escaping.test.ts.snap +1 -1
  85. package/{lib → src}/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +1 -1
  86. package/{lib → src}/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +10 -10
  87. package/{lib → src}/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +1 -1
  88. package/{lib → src}/get/__tests__/generator/__snapshots__/provider.test.ts.snap +1 -1
  89. package/{lib → src}/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +1 -1
  90. package/{lib → src}/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +1 -1
  91. package/{lib → src}/get/__tests__/generator/__snapshots__/types.test.ts.snap +92 -1
  92. package/src/get/__tests__/generator/fixtures/map-of-map-of-string.test.fixture.json +27 -0
  93. package/tsconfig.json +6 -3
  94. package/lib/__tests__/edge-provider-schema/builder.js +0 -106
  95. package/lib/__tests__/edge-provider-schema/cli.d.ts +0 -1
  96. package/lib/__tests__/edge-provider-schema/cli.js +0 -67
  97. package/lib/__tests__/edge-provider-schema/index.js +0 -154
  98. package/lib/__tests__/edge-provider-schema.test.d.ts +0 -1
  99. package/lib/__tests__/edge-provider-schema.test.js +0 -46
  100. package/lib/__tests__/provider.test.d.ts +0 -1
  101. package/lib/__tests__/provider.test.js +0 -158
  102. package/lib/get/__tests__/constructs-maker.test.d.ts +0 -1
  103. package/lib/get/__tests__/constructs-maker.test.js +0 -113
  104. package/lib/get/__tests__/generator/complex-computed-types.test.d.ts +0 -1
  105. package/lib/get/__tests__/generator/complex-computed-types.test.js +0 -42
  106. package/lib/get/__tests__/generator/deep-nested-attributes.test.d.ts +0 -1
  107. package/lib/get/__tests__/generator/deep-nested-attributes.test.js +0 -50
  108. package/lib/get/__tests__/generator/description-escaping.test.d.ts +0 -1
  109. package/lib/get/__tests__/generator/description-escaping.test.js +0 -65
  110. package/lib/get/__tests__/generator/empty-provider-resources.test.d.ts +0 -1
  111. package/lib/get/__tests__/generator/empty-provider-resources.test.js +0 -40
  112. package/lib/get/__tests__/generator/export-sharding.test.d.ts +0 -1
  113. package/lib/get/__tests__/generator/export-sharding.test.js +0 -82
  114. package/lib/get/__tests__/generator/module-generator.test.d.ts +0 -1
  115. package/lib/get/__tests__/generator/module-generator.test.js +0 -476
  116. package/lib/get/__tests__/generator/nested-types.test.d.ts +0 -1
  117. package/lib/get/__tests__/generator/nested-types.test.js +0 -51
  118. package/lib/get/__tests__/generator/provider.test.d.ts +0 -1
  119. package/lib/get/__tests__/generator/provider.test.js +0 -51
  120. package/lib/get/__tests__/generator/resource-types.test.d.ts +0 -1
  121. package/lib/get/__tests__/generator/resource-types.test.js +0 -78
  122. package/lib/get/__tests__/generator/skipped-attributes.test.d.ts +0 -1
  123. package/lib/get/__tests__/generator/skipped-attributes.test.js +0 -55
  124. package/lib/get/__tests__/generator/types.test.d.ts +0 -1
  125. package/lib/get/__tests__/generator/types.test.js +0 -280
  126. package/lib/get/__tests__/generator/versions-file.test.d.ts +0 -1
  127. package/lib/get/__tests__/generator/versions-file.test.js +0 -74
  128. package/lib/get/__tests__/util.js +0 -59
  129. package/lib/get/generator/custom-defaults.js +0 -403
  130. package/lib/get/generator/emitter/attributes-emitter.js +0 -161
  131. package/lib/get/generator/emitter/resource-emitter.js +0 -144
  132. package/lib/get/generator/emitter/struct-emitter.js +0 -500
  133. package/lib/get/generator/loop-detection.js +0 -56
  134. package/lib/get/generator/models/attribute-model.js +0 -160
  135. package/lib/get/generator/models/attribute-type-model.js +0 -376
  136. package/lib/get/generator/models/resource-model.js +0 -106
  137. package/lib/get/generator/models/scope.js +0 -36
  138. package/lib/get/generator/models/struct.js +0 -90
  139. package/lib/get/generator/module-generator.js +0 -184
  140. package/lib/get/generator/provider-generator.js +0 -225
  141. package/lib/get/generator/resource-parser.js +0 -497
  142. package/lib/get/generator/sanitized-comments.js +0 -44
  143. package/lib/get/generator/skipped-attributes.js +0 -29
  144. package/lib/util.js +0 -30
  145. /package/{lib → src}/get/__tests__/generator/fixtures/aws-provider.test.fixture.json +0 -0
  146. /package/{lib → src}/get/__tests__/generator/fixtures/aws_acm_certificate.test.fixture.json +0 -0
  147. /package/{lib → src}/get/__tests__/generator/fixtures/aws_cloudfront_distribution.test.fixture.json +0 -0
  148. /package/{lib → src}/get/__tests__/generator/fixtures/aws_fms_admin_account.test.fixture.json +0 -0
  149. /package/{lib → src}/get/__tests__/generator/fixtures/aws_quicksight_template.test.fixture.json +0 -0
  150. /package/{lib → src}/get/__tests__/generator/fixtures/aws_s3_bucket.test.fixture.json +0 -0
  151. /package/{lib → src}/get/__tests__/generator/fixtures/aws_security_group.test.fixture.json +0 -0
  152. /package/{lib → src}/get/__tests__/generator/fixtures/aws_wafv2_web_acl.test.fixture.json +0 -0
  153. /package/{lib → src}/get/__tests__/generator/fixtures/block-type-nested-computed-list.test.fixture.json +0 -0
  154. /package/{lib → src}/get/__tests__/generator/fixtures/block-type-set-list.test.fixture.json +0 -0
  155. /package/{lib → src}/get/__tests__/generator/fixtures/boolean-list.test.fixture.json +0 -0
  156. /package/{lib → src}/get/__tests__/generator/fixtures/boolean-map.test.fixture.json +0 -0
  157. /package/{lib → src}/get/__tests__/generator/fixtures/comment-ending-sequence.test.fixture.json +0 -0
  158. /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex-nested.test.fixture.json +0 -0
  159. /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex.test.fixture.json +0 -0
  160. /package/{lib → src}/get/__tests__/generator/fixtures/computed-optional-complex.test.fixture.json +0 -0
  161. /package/{lib → src}/get/__tests__/generator/fixtures/data_aws_quicksight_analysis.fixture.json +0 -0
  162. /package/{lib → src}/get/__tests__/generator/fixtures/datadog_dashboard.test.fixture.json +0 -0
  163. /package/{lib → src}/get/__tests__/generator/fixtures/datadog_spans_metric.test.fixture.json +0 -0
  164. /package/{lib → src}/get/__tests__/generator/fixtures/deep-attributes.test.fixture.json +0 -0
  165. /package/{lib → src}/get/__tests__/generator/fixtures/deeply-nested-block-types.test.fixture.json +0 -0
  166. /package/{lib → src}/get/__tests__/generator/fixtures/description-escaping.test.fixture.json +0 -0
  167. /package/{lib → src}/get/__tests__/generator/fixtures/elasticstack-provider.test.fixture.json +0 -0
  168. /package/{lib → src}/get/__tests__/generator/fixtures/empty-provider-resources.test.fixture.json +0 -0
  169. /package/{lib → src}/get/__tests__/generator/fixtures/ignored-attributes.test.fixture.json +0 -0
  170. /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-attribute-names.test.fixture.json +0 -0
  171. /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-resource-names.test.fixture.json +0 -0
  172. /package/{lib → src}/get/__tests__/generator/fixtures/list-list-object.test.fixture.json +0 -0
  173. /package/{lib → src}/get/__tests__/generator/fixtures/list-list-string.test.fixture.json +0 -0
  174. /package/{lib → src}/get/__tests__/generator/fixtures/list-of-string-map.test.fixture.json +0 -0
  175. /package/{lib → src}/get/__tests__/generator/fixtures/map-of-string-list.test.fixture.json +0 -0
  176. /package/{lib → src}/get/__tests__/generator/fixtures/markdown-description-with-code-blocks.test.fixture.json +0 -0
  177. /package/{lib → src}/get/__tests__/generator/fixtures/module-get-x.test.fixture.tf +0 -0
  178. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-1.test.fixture.tf +0 -0
  179. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-2.test.fixture.tf +0 -0
  180. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-outputs.test.fixture.tf +0 -0
  181. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-variable-type.test.fixture.tf +0 -0
  182. /package/{lib → src}/get/__tests__/generator/fixtures/module-with-star-default.test.fixture.tf +0 -0
  183. /package/{lib → src}/get/__tests__/generator/fixtures/name-conflict.test.fixture.json +0 -0
  184. /package/{lib → src}/get/__tests__/generator/fixtures/nested-type-without-attributes.test.fixture.json +0 -0
  185. /package/{lib → src}/get/__tests__/generator/fixtures/nested-types.test.fixture.json +0 -0
  186. /package/{lib → src}/get/__tests__/generator/fixtures/number-list.test.fixture.json +0 -0
  187. /package/{lib → src}/get/__tests__/generator/fixtures/number-map.test.fixture.json +0 -0
  188. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-boolean.test.fixture.json +0 -0
  189. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-dynamic.test.fixture.json +0 -0
  190. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-number.test.fixture.json +0 -0
  191. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-string.test.fixture.json +0 -0
  192. /package/{lib → src}/get/__tests__/generator/fixtures/single-block-type.test.fixture.json +0 -0
  193. /package/{lib → src}/get/__tests__/generator/fixtures/string-list.test.fixture.json +0 -0
  194. /package/{lib → src}/get/__tests__/generator/fixtures/string-map.test.fixture.json +0 -0
  195. /package/{lib → src}/get/__tests__/generator/fixtures/stripe-schema.test.fixture.json +0 -0
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectAttributeLoops = void 0;
4
+ const equalAttributeIdentifiers = (x, y) => x[0] === y[0] &&
5
+ x[1].size === y[1].size &&
6
+ [...x[1]].every((x) => y[1].has(x));
7
+ function typeStructure(model) {
8
+ var _a;
9
+ if (!model.type.isComplex) {
10
+ return model.type.storedClassType;
11
+ }
12
+ return `<complex:{${(_a = model.type.struct) === null || _a === void 0 ? void 0 : _a.attributes.map((att) => att.name).sort()}}${model.type.typeModelType}>`;
13
+ }
14
+ function getAttributeIdentifier(model) {
15
+ return [
16
+ model.terraformName,
17
+ new Set(model.type.struct.attributes.map((a) => `${a.name}:${typeStructure(a)}`)),
18
+ ];
19
+ }
20
+ /**
21
+ * Detects recursive attribute schemas and returns an Object
22
+ * describing what property should be linking to which class
23
+ */
24
+ function detectAttributeLoops(attributes) {
25
+ // We aproximate a class as a set of attributes names
26
+ // This is not a perfect approximation, but it's good enough for our purposes
27
+ const redirects = {};
28
+ function depthFirstSearch(attribute, path = [], knownStructs = {}) {
29
+ const name = attribute.terraformName;
30
+ const struct = attribute.type.struct;
31
+ if (!struct) {
32
+ return;
33
+ }
34
+ const structIdentifier = getAttributeIdentifier(attribute);
35
+ // Detect if we visited this already
36
+ const visited = Object.entries(knownStructs).find(([, attrIdentifier]) => equalAttributeIdentifiers(structIdentifier, attrIdentifier));
37
+ if (visited) {
38
+ // We have a loop, we don't need to search deeper
39
+ const toBeReplacedWith = visited[0];
40
+ const toReplace = [...path, name].join(".");
41
+ redirects[toReplace] = toBeReplacedWith;
42
+ }
43
+ else {
44
+ // Search deeper
45
+ struct.attributes.forEach((a) => depthFirstSearch(a, [...path, name], {
46
+ ...knownStructs,
47
+ // We haven't visited this yet, add it to the list of known structs
48
+ [[...path, name].join(".")]: structIdentifier,
49
+ }));
50
+ }
51
+ }
52
+ attributes.forEach((attr) => depthFirstSearch(attr));
53
+ return redirects;
54
+ }
55
+ exports.detectAttributeLoops = detectAttributeLoops;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1kZXRlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9sb29wLWRldGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFNLHlCQUF5QixHQUFHLENBQ2hDLENBQXNCLEVBQ3RCLENBQXNCLEVBQ3RCLEVBQUUsQ0FDRixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDdkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXRDLFNBQVMsYUFBYSxDQUFDLEtBQXFCOztJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLGFBQWEsTUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsVUFBVSxDQUM5QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQ3JCLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsS0FBcUI7SUFDbkQsT0FBTztRQUNMLEtBQUssQ0FBQyxhQUFhO1FBQ25CLElBQUksR0FBRyxDQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUMxRTtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsVUFBNEI7SUFHL0QscURBQXFEO0lBQ3JELDZFQUE2RTtJQUM3RSxNQUFNLFNBQVMsR0FBMkIsRUFBRSxDQUFDO0lBRTdDLFNBQVMsZ0JBQWdCLENBQ3ZCLFNBQXlCLEVBQ3pCLE9BQWlCLEVBQUUsRUFDbkIsZUFBaUUsRUFBRTtRQUVuRSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUN2RSx5QkFBeUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUQsQ0FBQztRQUVGLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixpREFBaUQ7WUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCO1lBQ2hCLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUIsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLEdBQUcsWUFBWTtnQkFDZixtRUFBbUU7Z0JBQ25FLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxnQkFBZ0I7YUFDOUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFckQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQTVDRCxvREE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQXR0cmlidXRlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvYXR0cmlidXRlLW1vZGVsXCI7XG5cbnR5cGUgQXR0cmlidXRlSWRlbnRpZmllciA9IFtzdHJpbmcsIFNldDxzdHJpbmc+XTtcbmNvbnN0IGVxdWFsQXR0cmlidXRlSWRlbnRpZmllcnMgPSAoXG4gIHg6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4gIHk6IEF0dHJpYnV0ZUlkZW50aWZpZXIsXG4pID0+XG4gIHhbMF0gPT09IHlbMF0gJiZcbiAgeFsxXS5zaXplID09PSB5WzFdLnNpemUgJiZcbiAgWy4uLnhbMV1dLmV2ZXJ5KCh4KSA9PiB5WzFdLmhhcyh4KSk7XG5cbmZ1bmN0aW9uIHR5cGVTdHJ1Y3R1cmUobW9kZWw6IEF0dHJpYnV0ZU1vZGVsKSB7XG4gIGlmICghbW9kZWwudHlwZS5pc0NvbXBsZXgpIHtcbiAgICByZXR1cm4gbW9kZWwudHlwZS5zdG9yZWRDbGFzc1R5cGU7XG4gIH1cblxuICByZXR1cm4gYDxjb21wbGV4Onske21vZGVsLnR5cGUuc3RydWN0Py5hdHRyaWJ1dGVzXG4gICAgLm1hcCgoYXR0KSA9PiBhdHQubmFtZSlcbiAgICAuc29ydCgpfX0ke21vZGVsLnR5cGUudHlwZU1vZGVsVHlwZX0+YDtcbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlSWRlbnRpZmllcihtb2RlbDogQXR0cmlidXRlTW9kZWwpOiBBdHRyaWJ1dGVJZGVudGlmaWVyIHtcbiAgcmV0dXJuIFtcbiAgICBtb2RlbC50ZXJyYWZvcm1OYW1lLFxuICAgIG5ldyBTZXQoXG4gICAgICBtb2RlbC50eXBlLnN0cnVjdCEuYXR0cmlidXRlcy5tYXAoKGEpID0+IGAke2EubmFtZX06JHt0eXBlU3RydWN0dXJlKGEpfWApLFxuICAgICksXG4gIF07XG59XG5cbi8qKlxuICogRGV0ZWN0cyByZWN1cnNpdmUgYXR0cmlidXRlIHNjaGVtYXMgYW5kIHJldHVybnMgYW4gT2JqZWN0XG4gKiBkZXNjcmliaW5nIHdoYXQgcHJvcGVydHkgc2hvdWxkIGJlIGxpbmtpbmcgdG8gd2hpY2ggY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEF0dHJpYnV0ZUxvb3BzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZU1vZGVsW10pOiB7XG4gIFtsb29wRW50cnlwb2ludDogc3RyaW5nXTogc3RyaW5nOyAvLyBhdHRyaWJ1dGUgcGF0aCB0byBiZSByZXBsYWNlZCAtPiBhdHRyaWJ1dGUgcGF0aCBvZiB0aGUgdHlwZSB0byByZXBsYWNlIHdpdGhcbn0ge1xuICAvLyBXZSBhcHJveGltYXRlIGEgY2xhc3MgYXMgYSBzZXQgb2YgYXR0cmlidXRlcyBuYW1lc1xuICAvLyBUaGlzIGlzIG5vdCBhIHBlcmZlY3QgYXBwcm94aW1hdGlvbiwgYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlc1xuICBjb25zdCByZWRpcmVjdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlTW9kZWwsXG4gICAgcGF0aDogc3RyaW5nW10gPSBbXSxcbiAgICBrbm93blN0cnVjdHM6IHsgW2F0dHJpYnV0ZVBhdGg6IHN0cmluZ106IEF0dHJpYnV0ZUlkZW50aWZpZXIgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCBuYW1lID0gYXR0cmlidXRlLnRlcnJhZm9ybU5hbWU7XG4gICAgY29uc3Qgc3RydWN0ID0gYXR0cmlidXRlLnR5cGUuc3RydWN0O1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RydWN0SWRlbnRpZmllciA9IGdldEF0dHJpYnV0ZUlkZW50aWZpZXIoYXR0cmlidXRlKTtcbiAgICAvLyBEZXRlY3QgaWYgd2UgdmlzaXRlZCB0aGlzIGFscmVhZHlcbiAgICBjb25zdCB2aXNpdGVkID0gT2JqZWN0LmVudHJpZXMoa25vd25TdHJ1Y3RzKS5maW5kKChbLCBhdHRySWRlbnRpZmllcl0pID0+XG4gICAgICBlcXVhbEF0dHJpYnV0ZUlkZW50aWZpZXJzKHN0cnVjdElkZW50aWZpZXIsIGF0dHJJZGVudGlmaWVyKSxcbiAgICApO1xuXG4gICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgIC8vIFdlIGhhdmUgYSBsb29wLCB3ZSBkb24ndCBuZWVkIHRvIHNlYXJjaCBkZWVwZXJcbiAgICAgIGNvbnN0IHRvQmVSZXBsYWNlZFdpdGggPSB2aXNpdGVkWzBdO1xuICAgICAgY29uc3QgdG9SZXBsYWNlID0gWy4uLnBhdGgsIG5hbWVdLmpvaW4oXCIuXCIpO1xuICAgICAgcmVkaXJlY3RzW3RvUmVwbGFjZV0gPSB0b0JlUmVwbGFjZWRXaXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWFyY2ggZGVlcGVyXG4gICAgICBzdHJ1Y3QuYXR0cmlidXRlcy5mb3JFYWNoKChhKSA9PlxuICAgICAgICBkZXB0aEZpcnN0U2VhcmNoKGEsIFsuLi5wYXRoLCBuYW1lXSwge1xuICAgICAgICAgIC4uLmtub3duU3RydWN0cyxcbiAgICAgICAgICAvLyBXZSBoYXZlbid0IHZpc2l0ZWQgdGhpcyB5ZXQsIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBrbm93biBzdHJ1Y3RzXG4gICAgICAgICAgW1suLi5wYXRoLCBuYW1lXS5qb2luKFwiLlwiKV06IHN0cnVjdElkZW50aWZpZXIsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0dHIpID0+IGRlcHRoRmlyc3RTZWFyY2goYXR0cikpO1xuXG4gIHJldHVybiByZWRpcmVjdHM7XG59XG4iXX0=
@@ -62,3 +62,4 @@ export declare class AttributeModel {
62
62
  get description(): string | undefined;
63
63
  getReferencedTypes(isConfigStruct: boolean): string[] | undefined;
64
64
  }
65
+ //# sourceMappingURL=attribute-model.d.ts.map
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AttributeModel = exports.escapeAttributeName = void 0;
4
+ function escapeAttributeName(name) {
5
+ // `self` and `build` doesn't work in as property name in Python
6
+ if (name === "self" || name === "build")
7
+ return `${name}Attribute`;
8
+ // jsii can't handle `getFoo` properties, since it's incompatible with Java
9
+ if (name.match(/^get[A-Za-z]+/))
10
+ return name.replace("get", "fetch");
11
+ // `equals` is a prohibited name in jsii
12
+ if (name === "equals")
13
+ return "equalTo";
14
+ // `node` is already used by the Constructs base class
15
+ if (name === "node")
16
+ return "nodeAttribute";
17
+ // `System` shadows built-in types in CSharp (see #1420)
18
+ if (name === "system")
19
+ return "systemAttribute";
20
+ // `tfResourceType` is already used by resources to distinguish between different resource types
21
+ if (name === "tfResourceType")
22
+ return `${name}Attribute`;
23
+ // `importFrom` has potential for common name collision with providers
24
+ if (name === "importFrom")
25
+ return `${name}Attribute`;
26
+ // `move` could have common name collision with providers
27
+ if (name === "moveTo")
28
+ return `${name}Attribute`;
29
+ // `software` attribute can be confused with the JSII Java runtime package (see #3115)
30
+ if (name === "software")
31
+ return `${name}Attribute`;
32
+ return name;
33
+ }
34
+ exports.escapeAttributeName = escapeAttributeName;
35
+ class AttributeModel {
36
+ constructor(options) {
37
+ this.storageName = options.storageName;
38
+ this._name = options.name;
39
+ this.type = options.type;
40
+ this.optional = options.optional;
41
+ this.computed = options.computed;
42
+ this.terraformName = options.terraformName;
43
+ this.terraformFullName = options.terraformFullName;
44
+ this._description = options.description;
45
+ this.provider = options.provider;
46
+ this.required = options.required;
47
+ this.forcePlainGetterType = options.forcePlainGetterType;
48
+ }
49
+ get typeDefinition() {
50
+ const optional = this.optional ? "?" : "";
51
+ return `${this.name}${optional}: ${this.type.inputTypeDefinition}`;
52
+ }
53
+ get isAssignable() {
54
+ return this.required || this.optional;
55
+ }
56
+ get isOptional() {
57
+ return this.optional;
58
+ }
59
+ get isRequired() {
60
+ return this.required;
61
+ }
62
+ get isProvider() {
63
+ return this.provider;
64
+ }
65
+ get getterType() {
66
+ let getterType = { _type: "plain" };
67
+ if (this.forcePlainGetterType) {
68
+ return getterType;
69
+ }
70
+ if (this.isProvider) {
71
+ return getterType;
72
+ }
73
+ if (this.type.hasReferenceClass) {
74
+ getterType = {
75
+ _type: "stored_class",
76
+ };
77
+ }
78
+ else if (this.computed &&
79
+ !this.isAssignable &&
80
+ (!this.type.isTokenizable || this.type.typeModelType === "map")) {
81
+ getterType = {
82
+ _type: "stored_class",
83
+ };
84
+ }
85
+ return getterType;
86
+ }
87
+ get isStored() {
88
+ return this.isAssignable;
89
+ }
90
+ get setterType() {
91
+ if (!this.isStored) {
92
+ return { _type: "none" };
93
+ }
94
+ if (this.getterType._type === "stored_class") {
95
+ return {
96
+ _type: "stored_class",
97
+ type: this.type.inputTypeDefinition,
98
+ };
99
+ }
100
+ return {
101
+ _type: "set",
102
+ type: `${this.type.inputTypeDefinition}${this.isProvider ? " | undefined" : ""}`,
103
+ };
104
+ }
105
+ get name() {
106
+ return AttributeModel.escapeName(this._name);
107
+ }
108
+ static escapeName(name) {
109
+ return escapeAttributeName(name);
110
+ }
111
+ get description() {
112
+ var _a;
113
+ return (_a = this._description) === null || _a === void 0 ? void 0 : _a.replace(/'''/gi, "```");
114
+ }
115
+ getReferencedTypes(isConfigStruct) {
116
+ const attTypeStruct = this.type.struct;
117
+ if (!attTypeStruct) {
118
+ return undefined;
119
+ }
120
+ const types = [];
121
+ if (this.isAssignable) {
122
+ types.push(attTypeStruct.name);
123
+ types.push(attTypeStruct.mapperName);
124
+ types.push(attTypeStruct.hclMapperName);
125
+ }
126
+ if (!attTypeStruct.isSingleItem &&
127
+ (attTypeStruct.nestingMode === "list" ||
128
+ attTypeStruct.nestingMode === "set")) {
129
+ types.push(attTypeStruct.listName);
130
+ }
131
+ else if (attTypeStruct.nestingMode === "map") {
132
+ types.push(attTypeStruct.mapName);
133
+ }
134
+ else if (attTypeStruct.nestingMode === "maplist") {
135
+ types.push(attTypeStruct.mapListName);
136
+ }
137
+ else if (attTypeStruct.nestingMode === "mapset") {
138
+ types.push(attTypeStruct.mapListName);
139
+ }
140
+ else if (attTypeStruct.nestingMode === "listmap") {
141
+ types.push(attTypeStruct.listMapName);
142
+ }
143
+ else if (attTypeStruct.nestingMode === "setmap") {
144
+ types.push(attTypeStruct.listMapName);
145
+ }
146
+ else if (attTypeStruct.nestingMode === "listlist" ||
147
+ attTypeStruct.nestingMode === "listset" ||
148
+ attTypeStruct.nestingMode === "setlist" ||
149
+ attTypeStruct.nestingMode == "setset") {
150
+ types.push(attTypeStruct.listListName);
151
+ }
152
+ else if (!isConfigStruct) {
153
+ types.push(attTypeStruct.outputReferenceName);
154
+ }
155
+ // other types of nested collections aren't supported
156
+ return types;
157
+ }
158
+ }
159
+ exports.AttributeModel = AttributeModel;
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2dldC9nZW5lcmF0b3IvbW9kZWxzL2F0dHJpYnV0ZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQ0EsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxnRUFBZ0U7SUFDaEUsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxPQUFPO1FBQUUsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO0lBQ25FLDJFQUEyRTtJQUMzRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSx3Q0FBd0M7SUFDeEMsSUFBSSxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3hDLHNEQUFzRDtJQUN0RCxJQUFJLElBQUksS0FBSyxNQUFNO1FBQUUsT0FBTyxlQUFlLENBQUM7SUFDNUMsd0RBQXdEO0lBQ3hELElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLGlCQUFpQixDQUFDO0lBQ2hELGdHQUFnRztJQUNoRyxJQUFJLElBQUksS0FBSyxnQkFBZ0I7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDekQsc0VBQXNFO0lBQ3RFLElBQUksSUFBSSxLQUFLLFlBQVk7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDckQseURBQXlEO0lBQ3pELElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDakQsc0ZBQXNGO0lBQ3RGLElBQUksSUFBSSxLQUFLLFVBQVU7UUFBRSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7SUFDbkQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBcEJELGtEQW9CQztBQUVELE1BQWEsY0FBYztJQWF6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QyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxxREFBcUQ7UUFFckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUE1SkQsd0NBNEpDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IEF0dHJpYnV0ZVR5cGVNb2RlbCB9IGZyb20gXCIuL2F0dHJpYnV0ZS10eXBlLW1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIEdldHRlclR5cGUgPVxuICB8IHsgX3R5cGU6IFwicGxhaW5cIiB9XG4gIHwge1xuICAgICAgX3R5cGU6IFwiYXJnc1wiO1xuICAgICAgYXJnczogc3RyaW5nO1xuICAgICAgcmV0dXJuVHlwZT86IHN0cmluZztcbiAgICAgIHJldHVyblN0YXRlbWVudDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBTZXR0ZXJUeXBlID1cbiAgfCB7IF90eXBlOiBcIm5vbmVcIiB9XG4gIHwgeyBfdHlwZTogXCJzZXRcIjsgdHlwZTogc3RyaW5nIH1cbiAgfCB7IF90eXBlOiBcInB1dFwiOyB0eXBlOiBzdHJpbmcgfVxuICB8IHsgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCI7IHR5cGU6IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZU1vZGVsT3B0aW9ucyB7XG4gIHN0b3JhZ2VOYW1lOiBzdHJpbmc7IC8vIHByaXZhdGUgcHJvcGVydHlcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWw7XG4gIG9wdGlvbmFsOiBib29sZWFuO1xuICBjb21wdXRlZDogYm9vbGVhbjtcbiAgdGVycmFmb3JtTmFtZTogc3RyaW5nO1xuICB0ZXJyYWZvcm1GdWxsTmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ2V0QXR0Q2FsbD86IHN0cmluZztcbiAgcHJvdmlkZXI6IGJvb2xlYW47XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBmb3JjZVBsYWluR2V0dGVyVHlwZT86IGJvb2xlYW47IC8vIHVzZWQgZm9yIHNraXBwaW5nIGF0dHJpYnV0ZSB0eXBlIGF0dHJpYnV0ZXMgdGhhdCB1c2UgdGhlIFNraXBwZWRBdHRyaWJ1dGVUeXBlTW9kZWwgd2hpY2ggcmV0dXJucyBhbiBpbnRlcnBvbGF0aW9uIGFuZCBoYXMgbm8gc3RvcmVkIHR5cGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIC8vIGBzZWxmYCBhbmQgYGJ1aWxkYCBkb2Vzbid0IHdvcmsgaW4gYXMgcHJvcGVydHkgbmFtZSBpbiBQeXRob25cbiAgaWYgKG5hbWUgPT09IFwic2VsZlwiIHx8IG5hbWUgPT09IFwiYnVpbGRcIikgcmV0dXJuIGAke25hbWV9QXR0cmlidXRlYDtcbiAgLy8ganNpaSBjYW4ndCBoYW5kbGUgYGdldEZvb2AgcHJvcGVydGllcywgc2luY2UgaXQncyBpbmNvbXBhdGlibGUgd2l0aCBKYXZhXG4gIGlmIChuYW1lLm1hdGNoKC9eZ2V0W0EtWmEtel0rLykpIHJldHVybiBuYW1lLnJlcGxhY2UoXCJnZXRcIiwgXCJmZXRjaFwiKTtcbiAgLy8gYGVxdWFsc2AgaXMgYSBwcm9oaWJpdGVkIG5hbWUgaW4ganNpaVxuICBpZiAobmFtZSA9PT0gXCJlcXVhbHNcIikgcmV0dXJuIFwiZXF1YWxUb1wiO1xuICAvLyBgbm9kZWAgaXMgYWxyZWFkeSB1c2VkIGJ5IHRoZSBDb25zdHJ1Y3RzIGJhc2UgY2xhc3NcbiAgaWYgKG5hbWUgPT09IFwibm9kZVwiKSByZXR1cm4gXCJub2RlQXR0cmlidXRlXCI7XG4gIC8vIGBTeXN0ZW1gIHNoYWRvd3MgYnVpbHQtaW4gdHlwZXMgaW4gQ1NoYXJwIChzZWUgIzE0MjApXG4gIGlmIChuYW1lID09PSBcInN5c3RlbVwiKSByZXR1cm4gXCJzeXN0ZW1BdHRyaWJ1dGVcIjtcbiAgLy8gYHRmUmVzb3VyY2VUeXBlYCBpcyBhbHJlYWR5IHVzZWQgYnkgcmVzb3VyY2VzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IHJlc291cmNlIHR5cGVzXG4gIGlmIChuYW1lID09PSBcInRmUmVzb3VyY2VUeXBlXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIC8vIGBpbXBvcnRGcm9tYCBoYXMgcG90ZW50aWFsIGZvciBjb21tb24gbmFtZSBjb2xsaXNpb24gd2l0aCBwcm92aWRlcnNcbiAgaWYgKG5hbWUgPT09IFwiaW1wb3J0RnJvbVwiKSByZXR1cm4gYCR7bmFtZX1BdHRyaWJ1dGVgO1xuICAvLyBgbW92ZWAgY291bGQgaGF2ZSBjb21tb24gbmFtZSBjb2xsaXNpb24gd2l0aCBwcm92aWRlcnNcbiAgaWYgKG5hbWUgPT09IFwibW92ZVRvXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIC8vIGBzb2Z0d2FyZWAgYXR0cmlidXRlIGNhbiBiZSBjb25mdXNlZCB3aXRoIHRoZSBKU0lJIEphdmEgcnVudGltZSBwYWNrYWdlIChzZWUgIzMxMTUpXG4gIGlmIChuYW1lID09PSBcInNvZnR3YXJlXCIpIHJldHVybiBgJHtuYW1lfUF0dHJpYnV0ZWA7XG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlTW9kZWwge1xuICBwdWJsaWMgc3RvcmFnZU5hbWU6IHN0cmluZzsgLy8gcHJpdmF0ZSBwcm9wZXJ0eVxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyB0eXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWw7XG4gIHB1YmxpYyBvcHRpb25hbDogYm9vbGVhbjtcbiAgcHVibGljIGNvbXB1dGVkOiBib29sZWFuO1xuICBwdWJsaWMgdGVycmFmb3JtTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgdGVycmFmb3JtRnVsbE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm92aWRlcjogYm9vbGVhbjtcbiAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICBwdWJsaWMgZm9yY2VQbGFpbkdldHRlclR5cGU/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF0dHJpYnV0ZU1vZGVsT3B0aW9ucykge1xuICAgIHRoaXMuc3RvcmFnZU5hbWUgPSBvcHRpb25zLnN0b3JhZ2VOYW1lO1xuICAgIHRoaXMuX25hbWUgPSBvcHRpb25zLm5hbWU7XG4gICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlO1xuICAgIHRoaXMub3B0aW9uYWwgPSBvcHRpb25zLm9wdGlvbmFsO1xuICAgIHRoaXMuY29tcHV0ZWQgPSBvcHRpb25zLmNvbXB1dGVkO1xuICAgIHRoaXMudGVycmFmb3JtTmFtZSA9IG9wdGlvbnMudGVycmFmb3JtTmFtZTtcbiAgICB0aGlzLnRlcnJhZm9ybUZ1bGxOYW1lID0gb3B0aW9ucy50ZXJyYWZvcm1GdWxsTmFtZTtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5wcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gICAgdGhpcy5yZXF1aXJlZCA9IG9wdGlvbnMucmVxdWlyZWQ7XG4gICAgdGhpcy5mb3JjZVBsYWluR2V0dGVyVHlwZSA9IG9wdGlvbnMuZm9yY2VQbGFpbkdldHRlclR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IG9wdGlvbmFsID0gdGhpcy5vcHRpb25hbCA/IFwiP1wiIDogXCJcIjtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfSR7b3B0aW9uYWx9OiAke3RoaXMudHlwZS5pbnB1dFR5cGVEZWZpbml0aW9ufWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXNzaWduYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZCB8fCB0aGlzLm9wdGlvbmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1Byb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb3ZpZGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBnZXR0ZXJUeXBlKCk6IEdldHRlclR5cGUge1xuICAgIGxldCBnZXR0ZXJUeXBlOiBHZXR0ZXJUeXBlID0geyBfdHlwZTogXCJwbGFpblwiIH07XG5cbiAgICBpZiAodGhpcy5mb3JjZVBsYWluR2V0dGVyVHlwZSkge1xuICAgICAgcmV0dXJuIGdldHRlclR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNQcm92aWRlcikge1xuICAgICAgcmV0dXJuIGdldHRlclR5cGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZS5oYXNSZWZlcmVuY2VDbGFzcykge1xuICAgICAgZ2V0dGVyVHlwZSA9IHtcbiAgICAgICAgX3R5cGU6IFwic3RvcmVkX2NsYXNzXCIsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmNvbXB1dGVkICYmXG4gICAgICAhdGhpcy5pc0Fzc2lnbmFibGUgJiZcbiAgICAgICghdGhpcy50eXBlLmlzVG9rZW5pemFibGUgfHwgdGhpcy50eXBlLnR5cGVNb2RlbFR5cGUgPT09IFwibWFwXCIpXG4gICAgKSB7XG4gICAgICBnZXR0ZXJUeXBlID0ge1xuICAgICAgICBfdHlwZTogXCJzdG9yZWRfY2xhc3NcIixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldHRlclR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RvcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQXNzaWduYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGVyVHlwZSgpOiBTZXR0ZXJUeXBlIHtcbiAgICBpZiAoIXRoaXMuaXNTdG9yZWQpIHtcbiAgICAgIHJldHVybiB7IF90eXBlOiBcIm5vbmVcIiB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldHRlclR5cGUuX3R5cGUgPT09IFwic3RvcmVkX2NsYXNzXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF90eXBlOiBcInN0b3JlZF9jbGFzc1wiLFxuICAgICAgICB0eXBlOiB0aGlzLnR5cGUuaW5wdXRUeXBlRGVmaW5pdGlvbixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF90eXBlOiBcInNldFwiLFxuICAgICAgdHlwZTogYCR7dGhpcy50eXBlLmlucHV0VHlwZURlZmluaXRpb259JHtcbiAgICAgICAgdGhpcy5pc1Byb3ZpZGVyID8gXCIgfCB1bmRlZmluZWRcIiA6IFwiXCJcbiAgICAgIH1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXR0cmlidXRlTW9kZWwuZXNjYXBlTmFtZSh0aGlzLl9uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZXNjYXBlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBlc2NhcGVBdHRyaWJ1dGVOYW1lKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbj8ucmVwbGFjZSgvJycnL2dpLCBcImBgYFwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZlcmVuY2VkVHlwZXMoaXNDb25maWdTdHJ1Y3Q6IGJvb2xlYW4pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYXR0VHlwZVN0cnVjdCA9IHRoaXMudHlwZS5zdHJ1Y3Q7XG4gICAgaWYgKCFhdHRUeXBlU3RydWN0KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuaXNBc3NpZ25hYmxlKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubmFtZSk7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubWFwcGVyTmFtZSk7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QuaGNsTWFwcGVyTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWF0dFR5cGVTdHJ1Y3QuaXNTaW5nbGVJdGVtICYmXG4gICAgICAoYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJsaXN0XCIgfHxcbiAgICAgICAgYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJzZXRcIilcbiAgICApIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5saXN0TmFtZSk7XG4gICAgfSBlbHNlIGlmIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcIm1hcFwiKSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3QubWFwTmFtZSk7XG4gICAgfSBlbHNlIGlmIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcIm1hcGxpc3RcIikge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lm1hcExpc3ROYW1lKTtcbiAgICB9IGVsc2UgaWYgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibWFwc2V0XCIpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5tYXBMaXN0TmFtZSk7XG4gICAgfSBlbHNlIGlmIChhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09PSBcImxpc3RtYXBcIikge1xuICAgICAgdHlwZXMucHVzaChhdHRUeXBlU3RydWN0Lmxpc3RNYXBOYW1lKTtcbiAgICB9IGVsc2UgaWYgKGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwic2V0bWFwXCIpIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5saXN0TWFwTmFtZSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwibGlzdGxpc3RcIiB8fFxuICAgICAgYXR0VHlwZVN0cnVjdC5uZXN0aW5nTW9kZSA9PT0gXCJsaXN0c2V0XCIgfHxcbiAgICAgIGF0dFR5cGVTdHJ1Y3QubmVzdGluZ01vZGUgPT09IFwic2V0bGlzdFwiIHx8XG4gICAgICBhdHRUeXBlU3RydWN0Lm5lc3RpbmdNb2RlID09IFwic2V0c2V0XCJcbiAgICApIHtcbiAgICAgIHR5cGVzLnB1c2goYXR0VHlwZVN0cnVjdC5saXN0TGlzdE5hbWUpO1xuICAgIH0gZWxzZSBpZiAoIWlzQ29uZmlnU3RydWN0KSB7XG4gICAgICB0eXBlcy5wdXNoKGF0dFR5cGVTdHJ1Y3Qub3V0cHV0UmVmZXJlbmNlTmFtZSk7XG4gICAgfVxuICAgIC8vIG90aGVyIHR5cGVzIG9mIG5lc3RlZCBjb2xsZWN0aW9ucyBhcmVuJ3Qgc3VwcG9ydGVkXG5cbiAgICByZXR1cm4gdHlwZXM7XG4gIH1cbn1cbiJdfQ==
@@ -107,3 +107,4 @@ export declare class MapAttributeTypeModel implements CollectionAttributeTypeMod
107
107
  get hasReferenceClass(): boolean;
108
108
  get isTokenizable(): boolean;
109
109
  }
110
+ //# sourceMappingURL=attribute-type-model.d.ts.map