@cdktn/provider-generator 0.23.0-pre.8 → 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,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapAttributeTypeModel = exports.SetAttributeTypeModel = exports.ListAttributeTypeModel = exports.StructAttributeTypeModel = exports.SimpleAttributeTypeModel = exports.SkippedAttributeTypeModel = void 0;
4
+ const util_1 = require("../../../util");
5
+ class SkippedAttributeTypeModel {
6
+ constructor() { }
7
+ get typeModelType() {
8
+ return "simple";
9
+ }
10
+ get struct() {
11
+ return undefined;
12
+ }
13
+ get isComplex() {
14
+ return false;
15
+ }
16
+ getStoredClassInitializer(_name) {
17
+ // not used
18
+ return "";
19
+ }
20
+ get storedClassType() {
21
+ return "any";
22
+ }
23
+ get inputTypeDefinition() {
24
+ return "any";
25
+ }
26
+ getAttributeAccessFunction(name) {
27
+ return `this.interpolationForAttribute('${name}')`;
28
+ }
29
+ get toTerraformFunction() {
30
+ return `cdktn.anyToTerraform`;
31
+ }
32
+ get toHclTerraformFunction() {
33
+ return `cdktn.anyToHclTerraform`;
34
+ }
35
+ get hasReferenceClass() {
36
+ return false;
37
+ }
38
+ get isTokenizable() {
39
+ return false;
40
+ }
41
+ }
42
+ exports.SkippedAttributeTypeModel = SkippedAttributeTypeModel;
43
+ class SimpleAttributeTypeModel {
44
+ constructor(type) {
45
+ this.type = type;
46
+ }
47
+ get typeModelType() {
48
+ return "simple";
49
+ }
50
+ get struct() {
51
+ return undefined;
52
+ }
53
+ get isComplex() {
54
+ return false;
55
+ }
56
+ getStoredClassInitializer(_name) {
57
+ // not used
58
+ return "";
59
+ }
60
+ get storedClassType() {
61
+ return this.type;
62
+ }
63
+ get inputTypeDefinition() {
64
+ if (this.type === "boolean") {
65
+ return "boolean | cdktn.IResolvable";
66
+ }
67
+ else {
68
+ return this.type;
69
+ }
70
+ }
71
+ getAttributeAccessFunction(name) {
72
+ return `this.get${(0, util_1.uppercaseFirst)(this.type)}Attribute('${name}')`;
73
+ }
74
+ get toTerraformFunction() {
75
+ return `cdktn.${this.type}ToTerraform`;
76
+ }
77
+ get toHclTerraformFunction() {
78
+ return `cdktn.${this.type}ToHclTerraform`;
79
+ }
80
+ get hasReferenceClass() {
81
+ return false;
82
+ }
83
+ get isTokenizable() {
84
+ return true;
85
+ }
86
+ }
87
+ exports.SimpleAttributeTypeModel = SimpleAttributeTypeModel;
88
+ class StructAttributeTypeModel {
89
+ constructor(struct) {
90
+ this.struct = struct;
91
+ }
92
+ get typeModelType() {
93
+ return "struct";
94
+ }
95
+ get isComplex() {
96
+ return true;
97
+ }
98
+ getStoredClassInitializer(name) {
99
+ return `new ${this.struct.outputReferenceName}(this, "${name}")`;
100
+ }
101
+ get storedClassType() {
102
+ return this.struct.name;
103
+ }
104
+ get inputTypeDefinition() {
105
+ return this.struct.name;
106
+ }
107
+ getAttributeAccessFunction(name) {
108
+ // This shouln't actually be called
109
+ return `this.interpolationForAttribute('${name}')`;
110
+ }
111
+ get toTerraformFunction() {
112
+ return `${(0, util_1.downcaseFirst)(this.struct.name)}ToTerraform`;
113
+ }
114
+ get toHclTerraformFunction() {
115
+ return `${(0, util_1.downcaseFirst)(this.struct.name)}ToHclTerraform`;
116
+ }
117
+ get hasReferenceClass() {
118
+ return true;
119
+ }
120
+ get isTokenizable() {
121
+ return false;
122
+ }
123
+ }
124
+ exports.StructAttributeTypeModel = StructAttributeTypeModel;
125
+ class ListAttributeTypeModel {
126
+ constructor(elementType, isSingleItem, isBlock) {
127
+ this.elementType = elementType;
128
+ this.isSingleItem = isSingleItem;
129
+ this.isBlock = isBlock;
130
+ if (this.struct) {
131
+ this.struct.isSingleItem = this.isSingleItem || false;
132
+ }
133
+ }
134
+ get typeModelType() {
135
+ return "list";
136
+ }
137
+ get struct() {
138
+ return this.elementType.struct;
139
+ }
140
+ get isComplex() {
141
+ return this.elementType.isComplex;
142
+ }
143
+ getStoredClassInitializer(name) {
144
+ if (this.isSingleItem) {
145
+ return `new ${this.elementType.storedClassType}OutputReference(this, "${name}")`;
146
+ }
147
+ else {
148
+ if (this.isComplex) {
149
+ return `new ${this.storedClassType}(this, "${name}", false)`;
150
+ }
151
+ else {
152
+ return `new cdktn.${(0, util_1.uppercaseFirst)(this.storedClassType)}(this, "${name}", false)`;
153
+ }
154
+ }
155
+ }
156
+ get storedClassType() {
157
+ return `${this.elementType.storedClassType}List`;
158
+ }
159
+ get inputTypeDefinition() {
160
+ if (this.isSingleItem) {
161
+ return this.elementType.inputTypeDefinition;
162
+ }
163
+ else if (this.elementType.storedClassType === "boolean") {
164
+ return "Array<boolean | cdktn.IResolvable> | cdktn.IResolvable";
165
+ }
166
+ else if (this.isComplex) {
167
+ return `${this.elementType.storedClassType}[] | cdktn.IResolvable`;
168
+ }
169
+ else if (this.elementType.typeModelType !== "simple") {
170
+ return `${this.elementType.inputTypeDefinition}[] | cdktn.IResolvable`;
171
+ }
172
+ else {
173
+ return `${this.elementType.inputTypeDefinition}[]`;
174
+ }
175
+ }
176
+ getAttributeAccessFunction(name) {
177
+ switch (this.elementType.storedClassType) {
178
+ case "string":
179
+ return `this.getListAttribute('${name}')`;
180
+ case "number":
181
+ return `this.getNumberListAttribute('${name}')`;
182
+ }
183
+ return `this.interpolationForAttribute('${name}')`;
184
+ }
185
+ get toTerraformFunction() {
186
+ if (this.isSingleItem) {
187
+ return this.elementType.toTerraformFunction;
188
+ }
189
+ return `cdktn.listMapper(${this.elementType.toTerraformFunction}, ${this.isBlock})`;
190
+ }
191
+ get toHclTerraformFunction() {
192
+ if (this.isSingleItem) {
193
+ return this.elementType.toHclTerraformFunction;
194
+ }
195
+ return `cdktn.listMapperHcl(${this.elementType.toHclTerraformFunction}, ${this.isBlock})`;
196
+ }
197
+ get hasReferenceClass() {
198
+ return this.isSingleItem || this.isComplex;
199
+ }
200
+ get isTokenizable() {
201
+ switch (this.elementType.storedClassType) {
202
+ case "string":
203
+ return true;
204
+ case "number":
205
+ return true;
206
+ default:
207
+ return false;
208
+ }
209
+ }
210
+ }
211
+ exports.ListAttributeTypeModel = ListAttributeTypeModel;
212
+ class SetAttributeTypeModel {
213
+ constructor(elementType, isSingleItem, isBlock) {
214
+ this.elementType = elementType;
215
+ this.isSingleItem = isSingleItem;
216
+ this.isBlock = isBlock;
217
+ if (this.struct) {
218
+ this.struct.isSingleItem = this.isSingleItem || false;
219
+ }
220
+ }
221
+ get typeModelType() {
222
+ return "set";
223
+ }
224
+ get struct() {
225
+ return this.elementType.struct;
226
+ }
227
+ get isComplex() {
228
+ return this.elementType.isComplex;
229
+ }
230
+ getStoredClassInitializer(name) {
231
+ if (this.isSingleItem) {
232
+ return `new ${this.elementType.storedClassType}OutputReference(this, "${name}")`;
233
+ }
234
+ else {
235
+ if (this.isComplex) {
236
+ return `new ${this.storedClassType}(this, "${name}", true)`;
237
+ }
238
+ else {
239
+ return `new cdktn.${(0, util_1.uppercaseFirst)(this.storedClassType)}(this, "${name}", true)`;
240
+ }
241
+ }
242
+ }
243
+ get storedClassType() {
244
+ return `${this.elementType.storedClassType}List`;
245
+ }
246
+ get inputTypeDefinition() {
247
+ if (this.isSingleItem) {
248
+ return this.elementType.inputTypeDefinition;
249
+ }
250
+ else if (this.elementType.storedClassType === "boolean") {
251
+ return "Array<boolean | cdktn.IResolvable> | cdktn.IResolvable";
252
+ }
253
+ else if (this.isComplex) {
254
+ return `${this.elementType.storedClassType}[] | cdktn.IResolvable`;
255
+ }
256
+ else if (this.elementType.typeModelType !== "simple") {
257
+ return `${this.elementType.inputTypeDefinition}[] | cdktn.IResolvable`;
258
+ }
259
+ else {
260
+ return `${this.elementType.inputTypeDefinition}[]`;
261
+ }
262
+ }
263
+ getAttributeAccessFunction(name) {
264
+ switch (this.elementType.storedClassType) {
265
+ case "string":
266
+ return `cdktn.Fn.tolist(this.getListAttribute('${name}'))`;
267
+ case "number":
268
+ return `cdktn.Token.asNumberList(cdktn.Fn.tolist(this.getNumberListAttribute('${name}')))`;
269
+ }
270
+ // Token.asAny is required because tolist returns an Array encoded token which the listMapper
271
+ // would try to map over when this is passed to another resource. With Token.asAny() it is left
272
+ // as is by the listMapper and is later properly resolved to a reference
273
+ // (this only works in TypeScript currently, same as for referencing lists
274
+ // [see "interpolationForAttribute(...)" further below])
275
+ return `cdktn.Token.asAny(cdktn.Fn.tolist(this.interpolationForAttribute('${name}')))`;
276
+ }
277
+ get toTerraformFunction() {
278
+ if (this.isSingleItem) {
279
+ return this.elementType.toTerraformFunction;
280
+ }
281
+ else {
282
+ return `cdktn.listMapper(${this.elementType.toTerraformFunction}, ${this.isBlock})`;
283
+ }
284
+ }
285
+ get toHclTerraformFunction() {
286
+ if (this.isSingleItem) {
287
+ return this.elementType.toHclTerraformFunction;
288
+ }
289
+ return `cdktn.listMapperHcl(${this.elementType.toHclTerraformFunction}, ${this.isBlock})`;
290
+ }
291
+ get hasReferenceClass() {
292
+ return this.isSingleItem || this.isComplex;
293
+ }
294
+ get isTokenizable() {
295
+ switch (this.elementType.storedClassType) {
296
+ case "string":
297
+ return true;
298
+ case "number":
299
+ return true;
300
+ default:
301
+ return false;
302
+ }
303
+ }
304
+ }
305
+ exports.SetAttributeTypeModel = SetAttributeTypeModel;
306
+ class MapAttributeTypeModel {
307
+ constructor(elementType) {
308
+ this.elementType = elementType;
309
+ }
310
+ get typeModelType() {
311
+ return "map";
312
+ }
313
+ get struct() {
314
+ return this.elementType.struct;
315
+ }
316
+ get isComplex() {
317
+ return this.elementType.isComplex;
318
+ }
319
+ getStoredClassInitializer(name) {
320
+ if (this.isComplex) {
321
+ return `new ${this.storedClassType}(this, "${name}")`;
322
+ }
323
+ else {
324
+ return `new cdktn.${(0, util_1.uppercaseFirst)(this.storedClassType)}(this, "${name}")`;
325
+ }
326
+ }
327
+ get storedClassType() {
328
+ return `${this.elementType.storedClassType}Map`;
329
+ }
330
+ get inputTypeDefinition() {
331
+ // map of booleans has token support, but booleans don't
332
+ if (this.elementType.storedClassType === "boolean") {
333
+ return `{ [key: string]: (${this.elementType.storedClassType} | cdktn.IResolvable) }`;
334
+ }
335
+ else if (this.isComplex) {
336
+ return `{ [key: string]: ${this.elementType.storedClassType} } | cdktn.IResolvable`;
337
+ }
338
+ else if (this.elementType.typeModelType !== "simple") {
339
+ return `{ [key: string]: ${this.elementType.inputTypeDefinition} } | cdktn.IResolvable`;
340
+ }
341
+ else {
342
+ return `{ [key: string]: ${this.elementType.storedClassType} }`;
343
+ }
344
+ }
345
+ getAttributeAccessFunction(name) {
346
+ if (!this.isComplex && this.elementType.typeModelType !== "simple") {
347
+ return `this.interpolationForAttribute('${name}')`;
348
+ }
349
+ return `this.get${(0, util_1.uppercaseFirst)(this.storedClassType)}Attribute('${name}')`;
350
+ }
351
+ get toTerraformFunction() {
352
+ return `cdktn.hashMapper(${this.elementType.toTerraformFunction})`;
353
+ }
354
+ get toHclTerraformFunction() {
355
+ return `cdktn.hashMapperHcl(${this.elementType.toHclTerraformFunction})`;
356
+ }
357
+ get hasReferenceClass() {
358
+ return this.isComplex;
359
+ }
360
+ get isTokenizable() {
361
+ switch (this.elementType.storedClassType) {
362
+ case "string":
363
+ return true;
364
+ case "number":
365
+ return true;
366
+ case "boolean":
367
+ return true;
368
+ case "any":
369
+ return true;
370
+ default:
371
+ return false;
372
+ }
373
+ }
374
+ }
375
+ exports.MapAttributeTypeModel = MapAttributeTypeModel;
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXR5cGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvYXR0cmlidXRlLXR5cGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esd0NBQThEO0FBZ0I5RCxNQUFhLHlCQUF5QjtJQUNwQyxnQkFBZSxDQUFDO0lBRWhCLElBQUksYUFBYTtRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBYTtRQUNyQyxXQUFXO1FBQ1gsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELDBCQUEwQixDQUFDLElBQVk7UUFDckMsT0FBTyxtQ0FBbUMsSUFBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8seUJBQXlCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBL0NELDhEQStDQztBQUVELE1BQWEsd0JBQXdCO0lBQ25DLFlBQTRCLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO0lBQUcsQ0FBQztJQUU1QyxJQUFJLGFBQWE7UUFDZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFD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SyxRQUFRLEVBQUUsQ0FBQztZQUNuRSxPQUFPLG1DQUFtQyxJQUFJLElBQUksQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxXQUFXLElBQUEscUJBQWMsRUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FDckIsY0FBYyxJQUFJLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLHVCQUF1QixJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixHQUFHLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksQ0FBQztZQUNkO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE5RUQsc0RBOEVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFN0cnVjdCB9IGZyb20gXCIuL3N0cnVjdFwiO1xuaW1wb3J0IHsgdXBwZXJjYXNlRmlyc3QsIGRvd25jYXNlRmlyc3QgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZVR5cGVNb2RlbCB7XG4gIHJlYWRvbmx5IHN0cnVjdD86IFN0cnVjdDsgLy8gY29tcGxleCBvYmplY3QgdHlwZSBjb250YWluZWQgd2l0aGluIHRoZSB0eXBlXG4gIHJlYWRvbmx5IGlzQ29tcGxleDogYm9vbGVhbjsgLy8gYmFzaWNhbGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhIHN0cnVjdFxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZyk6IHN0cmluZzsgLy8gaW5pdGlhbGl6ZXIgZm9yIGtlZXBpbmcgY2xhc3MgbmVlZGVkIHRvIGtlZXAgdHJhY2sgb2YgcmVmZXJlbmNlIGFjY2Vzc1xuICByZWFkb25seSBzdG9yZWRDbGFzc1R5cGU6IHN0cmluZzsgLy8gdXNlZCBtYWlubHkgYnkgY29sbGVjdGlvbiB0eXBlcyB0byBnZW5lcmF0ZSB0aGVpciBzdG9yZWQgY2xhc3MgaW5pdGlhbGl6ZXJcbiAgcmVhZG9ubHkgaW5wdXRUeXBlRGVmaW5pdGlvbjogc3RyaW5nOyAvLyB0aGlzIGlzIHRoZSB0eXBlIHVzZWQgZm9yIGlucHV0dGluZyB2YWx1ZXNcbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKTogc3RyaW5nOyAvLyB0aGlzIGlzIGZvciBnZXR0aW5nIHJlZmVyZW5jZSBmb3Igc2ltcGxlIHR5cGVzXG4gIHJlYWRvbmx5IHRvVGVycmFmb3JtRnVuY3Rpb246IHN0cmluZzsgLy8gdGhpcyBpcyBmb3IgY29udmVydGluZyBpbnB1dCB2YWx1ZXMgdG8gVGVycmFmb3JtIHN5bnRheFxuICByZWFkb25seSB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uOiBzdHJpbmc7IC8vIHRoaXMgaXMgZm9yIGNvbnZlcnRpbmcgaW5wdXQgdmFsdWVzIHRvIFRlcnJhZm9ybSBzeW50YXggaW4gSENMXG4gIHJlYWRvbmx5IHR5cGVNb2RlbFR5cGU6IHN0cmluZzsgLy8gc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgaW5zdGFuY2VvZlxuICByZWFkb25seSBoYXNSZWZlcmVuY2VDbGFzczogYm9vbGVhbjsgLy8gdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBzdG9yZWRfY2xhc3MgZ2V0dGVyIHNob3VsZCBiZSB1c2VkXG4gIHJlYWRvbmx5IGlzVG9rZW5pemFibGU6IGJvb2xlYW47IC8vIGNhbiB0aGUgdHlwZSBiZSByZXByZXNlbnRlZCBieSBhIHRva2VuIHR5cGVcbn1cblxuZXhwb3J0IGNsYXNzIFNraXBwZWRBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwic2ltcGxlXCI7XG4gIH1cblxuICBnZXQgc3RydWN0KCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaXNDb21wbGV4KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIoX25hbWU6IHN0cmluZykge1xuICAgIC8vIG5vdCB1c2VkXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiBcImFueVwiO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIFwiYW55XCI7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uYW55VG9UZXJyYWZvcm1gO1xuICB9XG5cbiAgZ2V0IHRvSGNsVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGBjZGt0bi5hbnlUb0hjbFRlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nKSB7fVxuXG4gIGdldCB0eXBlTW9kZWxUeXBlKCkge1xuICAgIHJldHVybiBcInNpbXBsZVwiO1xuICB9XG5cbiAgZ2V0IHN0cnVjdCgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKF9uYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBub3QgdXNlZFxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBcImJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50eXBlO1xuICAgIH1cbiAgfVxuXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBgdGhpcy5nZXQke3VwcGVyY2FzZUZpcnN0KHRoaXMudHlwZSl9QXR0cmlidXRlKCcke25hbWV9JylgO1xuICB9XG5cbiAgZ2V0IHRvVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGBjZGt0bi4ke3RoaXMudHlwZX1Ub1RlcnJhZm9ybWA7XG4gIH1cblxuICBnZXQgdG9IY2xUZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYGNka3RuLiR7dGhpcy50eXBlfVRvSGNsVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNUb2tlbml6YWJsZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RydWN0QXR0cmlidXRlVHlwZU1vZGVsIGltcGxlbWVudHMgQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHN0cnVjdDogU3RydWN0KSB7fVxuXG4gIGdldCB0eXBlTW9kZWxUeXBlKCkge1xuICAgIHJldHVybiBcInN0cnVjdFwiO1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFN0b3JlZENsYXNzSW5pdGlhbGl6ZXIobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBuZXcgJHt0aGlzLnN0cnVjdC5vdXRwdXRSZWZlcmVuY2VOYW1lfSh0aGlzLCBcIiR7bmFtZX1cIilgO1xuICB9XG5cbiAgZ2V0IHN0b3JlZENsYXNzVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJ1Y3QubmFtZTtcbiAgfVxuXG4gIGdldCBpbnB1dFR5cGVEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0cnVjdC5uYW1lO1xuICB9XG5cbiAgZ2V0QXR0cmlidXRlQWNjZXNzRnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgLy8gVGhpcyBzaG91bG4ndCBhY3R1YWxseSBiZSBjYWxsZWRcbiAgICByZXR1cm4gYHRoaXMuaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgJHtkb3duY2FzZUZpcnN0KHRoaXMuc3RydWN0Lm5hbWUpfVRvVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgJHtkb3duY2FzZUZpcnN0KHRoaXMuc3RydWN0Lm5hbWUpfVRvSGNsVGVycmFmb3JtYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBpc1Rva2VuaXphYmxlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwgZXh0ZW5kcyBBdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBlbGVtZW50VHlwZTogQXR0cmlidXRlVHlwZU1vZGVsO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTaW5nbGVJdGVtOiBib29sZWFuLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCbG9jazogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKHRoaXMuc3RydWN0KSB7XG4gICAgICB0aGlzLnN0cnVjdC5pc1NpbmdsZUl0ZW0gPSB0aGlzLmlzU2luZ2xlSXRlbSB8fCBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJsaXN0XCI7XG4gIH1cblxuICBnZXQgc3RydWN0KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnN0cnVjdDtcbiAgfVxuXG4gIGdldCBpc0NvbXBsZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuaXNDb21wbGV4O1xuICB9XG5cbiAgZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiBgbmV3ICR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9T3V0cHV0UmVmZXJlbmNlKHRoaXMsIFwiJHtuYW1lfVwiKWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmlzQ29tcGxleCkge1xuICAgICAgICByZXR1cm4gYG5ldyAke3RoaXMuc3RvcmVkQ2xhc3NUeXBlfSh0aGlzLCBcIiR7bmFtZX1cIiwgZmFsc2UpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgbmV3IGNka3RuLiR7dXBwZXJjYXNlRmlyc3QoXG4gICAgICAgICAgdGhpcy5zdG9yZWRDbGFzc1R5cGUsXG4gICAgICAgICl9KHRoaXMsIFwiJHtuYW1lfVwiLCBmYWxzZSlgO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzdG9yZWRDbGFzc1R5cGUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfUxpc3RgO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9uO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gXCJBcnJheTxib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU+IHwgY2RrdG4uSVJlc29sdmFibGVcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9W10gfCBjZGt0bi5JUmVzb2x2YWJsZWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUgIT09IFwic2ltcGxlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb259W10gfCBjZGt0bi5JUmVzb2x2YWJsZWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb259W11gO1xuICAgIH1cbiAgfVxuXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIGB0aGlzLmdldExpc3RBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiBgdGhpcy5nZXROdW1iZXJMaXN0QXR0cmlidXRlKCcke25hbWV9JylgO1xuICAgIH1cblxuICAgIHJldHVybiBgdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCcke25hbWV9JylgO1xuICB9XG5cbiAgZ2V0IHRvVGVycmFmb3JtRnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS50b1RlcnJhZm9ybUZ1bmN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gYGNka3RuLmxpc3RNYXBwZXIoJHt0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb259LCAke3RoaXMuaXNCbG9ja30pYDtcbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gYGNka3RuLmxpc3RNYXBwZXJIY2woJHt0aGlzLmVsZW1lbnRUeXBlLnRvSGNsVGVycmFmb3JtRnVuY3Rpb259LCAke3RoaXMuaXNCbG9ja30pYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1NpbmdsZUl0ZW0gfHwgdGhpcy5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXQgaXNUb2tlbml6YWJsZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlKSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldEF0dHJpYnV0ZVR5cGVNb2RlbCBpbXBsZW1lbnRzIENvbGxlY3Rpb25BdHRyaWJ1dGVUeXBlTW9kZWwge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFR5cGU6IEF0dHJpYnV0ZVR5cGVNb2RlbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNTaW5nbGVJdGVtOiBib29sZWFuLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCbG9jazogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKHRoaXMuc3RydWN0KSB7XG4gICAgICB0aGlzLnN0cnVjdC5pc1NpbmdsZUl0ZW0gPSB0aGlzLmlzU2luZ2xlSXRlbSB8fCBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdHlwZU1vZGVsVHlwZSgpIHtcbiAgICByZXR1cm4gXCJzZXRcIjtcbiAgfVxuXG4gIGdldCBzdHJ1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuc3RydWN0O1xuICB9XG5cbiAgZ2V0IGlzQ29tcGxleCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXRTdG9yZWRDbGFzc0luaXRpYWxpemVyKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIGBuZXcgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1PdXRwdXRSZWZlcmVuY2UodGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICAgIHJldHVybiBgbmV3ICR7dGhpcy5zdG9yZWRDbGFzc1R5cGV9KHRoaXMsIFwiJHtuYW1lfVwiLCB0cnVlKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYG5ldyBjZGt0bi4ke3VwcGVyY2FzZUZpcnN0KFxuICAgICAgICAgIHRoaXMuc3RvcmVkQ2xhc3NUeXBlLFxuICAgICAgICApfSh0aGlzLCBcIiR7bmFtZX1cIiwgdHJ1ZSlgO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzdG9yZWRDbGFzc1R5cGUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfUxpc3RgO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50VHlwZS5pbnB1dFR5cGVEZWZpbml0aW9uO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gXCJBcnJheTxib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU+IHwgY2RrdG4uSVJlc29sdmFibGVcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9W10gfCBjZGt0bi5JUmVzb2x2YWJsZWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVsZW1lbnRUeXBlLnR5cGVNb2RlbFR5cGUgIT09IFwic2ltcGxlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb259W10gfCBjZGt0bi5JUmVzb2x2YWJsZWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb259W11gO1xuICAgIH1cbiAgfVxuXG4gIGdldEF0dHJpYnV0ZUFjY2Vzc0Z1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIGBjZGt0bi5Gbi50b2xpc3QodGhpcy5nZXRMaXN0QXR0cmlidXRlKCcke25hbWV9JykpYDtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIGBjZGt0bi5Ub2tlbi5hc051bWJlckxpc3QoY2RrdG4uRm4udG9saXN0KHRoaXMuZ2V0TnVtYmVyTGlzdEF0dHJpYnV0ZSgnJHtuYW1lfScpKSlgO1xuICAgIH1cblxuICAgIC8vIFRva2VuLmFzQW55IGlzIHJlcXVpcmVkIGJlY2F1c2UgdG9saXN0IHJldHVybnMgYW4gQXJyYXkgZW5jb2RlZCB0b2tlbiB3aGljaCB0aGUgbGlzdE1hcHBlclxuICAgIC8vIHdvdWxkIHRyeSB0byBtYXAgb3ZlciB3aGVuIHRoaXMgaXMgcGFzc2VkIHRvIGFub3RoZXIgcmVzb3VyY2UuIFdpdGggVG9rZW4uYXNBbnkoKSBpdCBpcyBsZWZ0XG4gICAgLy8gYXMgaXMgYnkgdGhlIGxpc3RNYXBwZXIgYW5kIGlzIGxhdGVyIHByb3Blcmx5IHJlc29sdmVkIHRvIGEgcmVmZXJlbmNlXG4gICAgLy8gKHRoaXMgb25seSB3b3JrcyBpbiBUeXBlU2NyaXB0IGN1cnJlbnRseSwgc2FtZSBhcyBmb3IgcmVmZXJlbmNpbmcgbGlzdHNcbiAgICAvLyBbc2VlIFwiaW50ZXJwb2xhdGlvbkZvckF0dHJpYnV0ZSguLi4pXCIgZnVydGhlciBiZWxvd10pXG4gICAgcmV0dXJuIGBjZGt0bi5Ub2tlbi5hc0FueShjZGt0bi5Gbi50b2xpc3QodGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKCcke25hbWV9JykpKWA7XG4gIH1cblxuICBnZXQgdG9UZXJyYWZvcm1GdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1NpbmdsZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnRvVGVycmFmb3JtRnVuY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgY2RrdG4ubGlzdE1hcHBlcigke3RoaXMuZWxlbWVudFR5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0sICR7dGhpcy5pc0Jsb2NrfSlgO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGBjZGt0bi5saXN0TWFwcGVySGNsKCR7dGhpcy5lbGVtZW50VHlwZS50b0hjbFRlcnJhZm9ybUZ1bmN0aW9ufSwgJHt0aGlzLmlzQmxvY2t9KWA7XG4gIH1cblxuICBnZXQgaGFzUmVmZXJlbmNlQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTaW5nbGVJdGVtIHx8IHRoaXMuaXNDb21wbGV4O1xuICB9XG5cbiAgZ2V0IGlzVG9rZW5pemFibGUoKSB7XG4gICAgc3dpdGNoICh0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNYXBBdHRyaWJ1dGVUeXBlTW9kZWwgaW1wbGVtZW50cyBDb2xsZWN0aW9uQXR0cmlidXRlVHlwZU1vZGVsIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRUeXBlOiBBdHRyaWJ1dGVUeXBlTW9kZWwpIHt9XG5cbiAgZ2V0IHR5cGVNb2RlbFR5cGUoKSB7XG4gICAgcmV0dXJuIFwibWFwXCI7XG4gIH1cblxuICBnZXQgc3RydWN0KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRUeXBlLnN0cnVjdDtcbiAgfVxuXG4gIGdldCBpc0NvbXBsZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUuaXNDb21wbGV4O1xuICB9XG5cbiAgZ2V0U3RvcmVkQ2xhc3NJbml0aWFsaXplcihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgIHJldHVybiBgbmV3ICR7dGhpcy5zdG9yZWRDbGFzc1R5cGV9KHRoaXMsIFwiJHtuYW1lfVwiKWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgbmV3IGNka3RuLiR7dXBwZXJjYXNlRmlyc3QoXG4gICAgICAgIHRoaXMuc3RvcmVkQ2xhc3NUeXBlLFxuICAgICAgKX0odGhpcywgXCIke25hbWV9XCIpYDtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RvcmVkQ2xhc3NUeXBlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmVsZW1lbnRUeXBlLnN0b3JlZENsYXNzVHlwZX1NYXBgO1xuICB9XG5cbiAgZ2V0IGlucHV0VHlwZURlZmluaXRpb24oKSB7XG4gICAgLy8gbWFwIG9mIGJvb2xlYW5zIGhhcyB0b2tlbiBzdXBwb3J0LCBidXQgYm9vbGVhbnMgZG9uJ3RcbiAgICBpZiAodGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogKCR7dGhpcy5lbGVtZW50VHlwZS5zdG9yZWRDbGFzc1R5cGV9IHwgY2RrdG4uSVJlc29sdmFibGUpIH1gO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXgpIHtcbiAgICAgIHJldHVybiBgeyBba2V5OiBzdHJpbmddOiAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfSB9IHwgY2RrdG4uSVJlc29sdmFibGVgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50VHlwZS50eXBlTW9kZWxUeXBlICE9PSBcInNpbXBsZVwiKSB7XG4gICAgICByZXR1cm4gYHsgW2tleTogc3RyaW5nXTogJHt0aGlzLmVsZW1lbnRUeXBlLmlucHV0VHlwZURlZmluaXRpb259IH0gfCBjZGt0bi5JUmVzb2x2YWJsZWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgeyBba2V5OiBzdHJpbmddOiAke3RoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlfSB9YDtcbiAgICB9XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVBY2Nlc3NGdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNDb21wbGV4ICYmIHRoaXMuZWxlbWVudFR5cGUudHlwZU1vZGVsVHlwZSAhPT0gXCJzaW1wbGVcIikge1xuICAgICAgcmV0dXJuIGB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoJyR7bmFtZX0nKWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGB0aGlzLmdldCR7dXBwZXJjYXNlRmlyc3QoXG4gICAgICB0aGlzLnN0b3JlZENsYXNzVHlwZSxcbiAgICApfUF0dHJpYnV0ZSgnJHtuYW1lfScpYDtcbiAgfVxuXG4gIGdldCB0b1RlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uaGFzaE1hcHBlcigke3RoaXMuZWxlbWVudFR5cGUudG9UZXJyYWZvcm1GdW5jdGlvbn0pYDtcbiAgfVxuXG4gIGdldCB0b0hjbFRlcnJhZm9ybUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgY2RrdG4uaGFzaE1hcHBlckhjbCgke3RoaXMuZWxlbWVudFR5cGUudG9IY2xUZXJyYWZvcm1GdW5jdGlvbn0pYDtcbiAgfVxuXG4gIGdldCBoYXNSZWZlcmVuY2VDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbXBsZXg7XG4gIH1cblxuICBnZXQgaXNUb2tlbml6YWJsZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUuc3RvcmVkQ2xhc3NUeXBlKSB7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBcImFueVwiOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -3,3 +3,4 @@ export * from "./attribute-type-model";
3
3
  export * from "./resource-model";
4
4
  export * from "./scope";
5
5
  export * from "./struct";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -21,4 +21,4 @@ __exportStar(require("./attribute-type-model"), exports);
21
21
  __exportStar(require("./resource-model"), exports);
22
22
  __exportStar(require("./scope"), exports);
23
23
  __exportStar(require("./struct"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLG1EQUFpQztBQUNqQywwQ0FBd0I7QUFDeEIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmV4cG9ydCAqIGZyb20gXCIuL2F0dHJpYnV0ZS1tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXR0cmlidXRlLXR5cGUtbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlLW1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zY29wZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RydWN0XCI7XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsb0RBQWtDO0FBQ2xDLHlEQUF1QztBQUN2QyxtREFBaUM7QUFDakMsMENBQXdCO0FBQ3hCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgKiBmcm9tIFwiLi9hdHRyaWJ1dGUtbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F0dHJpYnV0ZS10eXBlLW1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZS1tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2NvcGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cnVjdFwiO1xuIl19
@@ -58,3 +58,4 @@ export declare class ResourceModel {
58
58
  private escapeSchema;
59
59
  }
60
60
  export {};
61
+ //# sourceMappingURL=resource-model.d.ts.map
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ResourceModel = exports.STRUCT_SHARDING_THRESHOLD = void 0;
7
+ // Copyright (c) HashiCorp, Inc
8
+ // SPDX-License-Identifier: MPL-2.0
9
+ const codemaker_1 = require("codemaker");
10
+ const path_1 = __importDefault(require("path"));
11
+ const provider_schema_1 = require("@cdktn/provider-schema");
12
+ const struct_1 = require("./struct");
13
+ // Limit is 1200 to prevent stack size error.
14
+ // Could increase now that calculation is more accurate;
15
+ // however, probably better to have smaller
16
+ exports.STRUCT_SHARDING_THRESHOLD = 400;
17
+ class ResourceModel {
18
+ constructor(options) {
19
+ this.recursiveAttributePaths = {};
20
+ this.className = options.className;
21
+ this.filePath = options.filePath;
22
+ this.terraformType = options.terraformType;
23
+ this.baseName = options.baseName;
24
+ this.attributes = options.attributes;
25
+ this.schema = options.schema;
26
+ this.fqpn = options.fqpn;
27
+ this.provider = (0, provider_schema_1.parseFQPN)(options.fqpn).name;
28
+ this.terraformProviderName = this.provider;
29
+ this.fileName = options.fileName;
30
+ this._structs = options.structs;
31
+ this.terraformSchemaType = options.terraformSchemaType;
32
+ this.configStructName = options.configStructName;
33
+ this.dependencies = [
34
+ `import { Construct } from 'constructs';`,
35
+ `import * as cdktn from 'cdktn';`,
36
+ ];
37
+ this.structsRequireSharding =
38
+ this._structs.reduce((partialSum, s) => partialSum + s.exportCount, 0) >
39
+ exports.STRUCT_SHARDING_THRESHOLD;
40
+ }
41
+ get structs() {
42
+ return [this.configStruct, ...this._structs];
43
+ }
44
+ get configStruct() {
45
+ return new struct_1.ConfigStruct(this.configStructName, this.attributes);
46
+ }
47
+ get synthesizableAttributes() {
48
+ return this.configStruct.assignableAttributes;
49
+ }
50
+ get importStatements() {
51
+ return this.dependencies;
52
+ }
53
+ get schemaAsJson() {
54
+ return this.escapeSchema(JSON.stringify(this.schema, undefined, 2));
55
+ }
56
+ get linkToDocs() {
57
+ const { hostname, namespace, name } = (0, provider_schema_1.parseFQPN)(this.fqpn);
58
+ const version = this.providerVersion || "latest";
59
+ const base = `https://${hostname}/providers/${namespace}/${name}/${version}/docs`;
60
+ if (this.isProvider)
61
+ return base;
62
+ if (this.isDataSource)
63
+ return `${base}/data-sources/${this.terraformDocName}`;
64
+ return `${base}/resources/${this.terraformDocName}`;
65
+ }
66
+ get isProvider() {
67
+ return this.terraformSchemaType === "provider";
68
+ }
69
+ get isDataSource() {
70
+ return this.terraformSchemaType === "data_source";
71
+ }
72
+ get parentClassName() {
73
+ return this.isProvider
74
+ ? "TerraformProvider"
75
+ : this.isDataSource
76
+ ? "TerraformDataSource"
77
+ : "TerraformResource";
78
+ }
79
+ get terraformResourceType() {
80
+ return this.isProvider
81
+ ? this.terraformProviderName
82
+ : this.isDataSource
83
+ ? this.terraformType.replace(/^data_/, "")
84
+ : this.terraformType;
85
+ }
86
+ get terraformDocName() {
87
+ return (0, codemaker_1.toSnakeCase)(this.terraformResourceType.replace(new RegExp(`^${this.provider}_`, "i"), ""));
88
+ }
89
+ get referencedTypes() {
90
+ return this.configStruct.referencedTypes;
91
+ }
92
+ get structsFolderName() {
93
+ return `${path_1.default.basename(this.fileName, ".ts")}-structs`;
94
+ }
95
+ get structsFolderPath() {
96
+ return path_1.default.join(this.namespaceFolderPath, this.structsFolderName);
97
+ }
98
+ get namespaceFolderPath() {
99
+ return this.filePath.split("/").slice(0, -1).join("/");
100
+ }
101
+ escapeSchema(schema) {
102
+ return schema.replace(/(\*\/)/gi, `*\\/`);
103
+ }
104
+ }
105
+ exports.ResourceModel = ResourceModel;
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvcmVzb3VyY2UtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx5Q0FBd0M7QUFDeEMsZ0RBQXdCO0FBQ3hCLDREQUF1RTtBQUV2RSxxQ0FBZ0Q7QUFHaEQsNkNBQTZDO0FBQzdDLHdEQUF3RDtBQUN4RCwyQ0FBMkM7QUFDOUIsUUFBQSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFpQjdDLE1BQWEsYUFBYTtJQXlCeEIsWUFBWSxPQUE2QjtRQUZsQyw0QkFBdUIsR0FBNEMsRUFBRSxDQUFDO1FBRzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsMkJBQVMsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIseUNBQXlDO1lBQ3pDLGlDQUFpQztTQUNsQyxDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQjtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDdEUsaUNBQXlCLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxxQkFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsMkJBQVMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxRQUFRLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsV0FBVyxRQUFRLGNBQWMsU0FBUyxJQUFJLElBQUksSUFBSSxPQUFPLE9BQU8sQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUNuQixPQUFPLEdBQUcsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekQsT0FBTyxHQUFHLElBQUksY0FBYyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixLQUFLLFVBQVUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixLQUFLLGFBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVU7WUFDcEIsQ0FBQyxDQUFDLG1CQUFtQjtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ2pCLENBQUMsQ0FBQyxxQkFBcUI7Z0JBQ3ZCLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVTtZQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFBLHVCQUFXLEVBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQ2hDLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUNyQyxFQUFFLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLEdBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQWM7UUFDakMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFuSUQsc0NBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IHRvU25ha2VDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEZRUE4sIHBhcnNlRlFQTiwgUHJvdmlkZXJOYW1lIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1zY2hlbWFcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZU1vZGVsIH0gZnJvbSBcIi4vYXR0cmlidXRlLW1vZGVsXCI7XG5pbXBvcnQgeyBTdHJ1Y3QsIENvbmZpZ1N0cnVjdCB9IGZyb20gXCIuL3N0cnVjdFwiO1xuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5cbi8vIExpbWl0IGlzIDEyMDAgdG8gcHJldmVudCBzdGFjayBzaXplIGVycm9yLlxuLy8gQ291bGQgaW5jcmVhc2Ugbm93IHRoYXQgY2FsY3VsYXRpb24gaXMgbW9yZSBhY2N1cmF0ZTtcbi8vIGhvd2V2ZXIsIHByb2JhYmx5IGJldHRlciB0byBoYXZlIHNtYWxsZXJcbmV4cG9ydCBjb25zdCBTVFJVQ1RfU0hBUkRJTkdfVEhSRVNIT0xEID0gNDAwO1xuXG5pbnRlcmZhY2UgUmVzb3VyY2VNb2RlbE9wdGlvbnMge1xuICB0ZXJyYWZvcm1UeXBlOiBzdHJpbmc7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBiYXNlTmFtZTogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdO1xuICBzdHJ1Y3RzOiBTdHJ1Y3RbXTtcbiAgZnFwbjogRlFQTjtcbiAgc2NoZW1hOiBTY2hlbWE7XG4gIHRlcnJhZm9ybVNjaGVtYVR5cGU6IHN0cmluZztcbiAgY29uZmlnU3RydWN0TmFtZTogc3RyaW5nO1xufVxuXG50eXBlIERlZmluaXRpb25QYXRoID0gc3RyaW5nO1xuZXhwb3J0IGNsYXNzIFJlc291cmNlTW9kZWwge1xuICBwdWJsaWMgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBmaWxlUGF0aDogc3RyaW5nO1xuICBwdWJsaWMgdGVycmFmb3JtVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgYmFzZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHByb3ZpZGVyOiBQcm92aWRlck5hbWU7XG4gIHB1YmxpYyBmcXBuOiBGUVBOO1xuICBwdWJsaWMgcHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludD86IHN0cmluZztcbiAgcHVibGljIHByb3ZpZGVyVmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIHRlcnJhZm9ybVByb3ZpZGVyU291cmNlPzogc3RyaW5nO1xuICAvKlxuICAgKiB1c3VhbGx5IHNhbWUgYXMgcHJvdmlkZXIsIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBpZiB1c2VyIHBpY2tzIGEgZGlmZmVyZW50IG5hbWVcbiAgICogdG8gYmUgYWJsZSB0byB1c2UgdHdvIHByb3ZpZGVycyB3aXRoIHRoZSBzYW1lIG5hbWVcbiAgICovXG4gIHB1YmxpYyB0ZXJyYWZvcm1Qcm92aWRlck5hbWU6IHN0cmluZztcbiAgcHVibGljIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNb2RlbFtdO1xuICBwdWJsaWMgc2NoZW1hOiBTY2hlbWE7XG4gIHByaXZhdGUgX3N0cnVjdHM6IFN0cnVjdFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogc3RyaW5nW107XG4gIHByaXZhdGUgdGVycmFmb3JtU2NoZW1hVHlwZTogc3RyaW5nO1xuICBwcml2YXRlIGNvbmZpZ1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHN0cnVjdHNSZXF1aXJlU2hhcmRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyByZWN1cnNpdmVBdHRyaWJ1dGVQYXRoczogeyBbdXNhZ2VQYXRoOiBzdHJpbmddOiBEZWZpbml0aW9uUGF0aCB9ID0ge307XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVzb3VyY2VNb2RlbE9wdGlvbnMpIHtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3NOYW1lO1xuICAgIHRoaXMuZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoO1xuICAgIHRoaXMudGVycmFmb3JtVHlwZSA9IG9wdGlvbnMudGVycmFmb3JtVHlwZTtcbiAgICB0aGlzLmJhc2VOYW1lID0gb3B0aW9ucy5iYXNlTmFtZTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXM7XG4gICAgdGhpcy5zY2hlbWEgPSBvcHRpb25zLnNjaGVtYTtcbiAgICB0aGlzLmZxcG4gPSBvcHRpb25zLmZxcG47XG4gICAgdGhpcy5wcm92aWRlciA9IHBhcnNlRlFQTihvcHRpb25zLmZxcG4pLm5hbWU7XG4gICAgdGhpcy50ZXJyYWZvcm1Qcm92aWRlck5hbWUgPSB0aGlzLnByb3ZpZGVyO1xuICAgIHRoaXMuZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lO1xuICAgIHRoaXMuX3N0cnVjdHMgPSBvcHRpb25zLnN0cnVjdHM7XG4gICAgdGhpcy50ZXJyYWZvcm1TY2hlbWFUeXBlID0gb3B0aW9ucy50ZXJyYWZvcm1TY2hlbWFUeXBlO1xuICAgIHRoaXMuY29uZmlnU3RydWN0TmFtZSA9IG9wdGlvbnMuY29uZmlnU3RydWN0TmFtZTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IFtcbiAgICAgIGBpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztgLFxuICAgICAgYGltcG9ydCAqIGFzIGNka3RuIGZyb20gJ2Nka3RuJztgLFxuICAgIF07XG5cbiAgICB0aGlzLnN0cnVjdHNSZXF1aXJlU2hhcmRpbmcgPVxuICAgICAgdGhpcy5fc3RydWN0cy5yZWR1Y2UoKHBhcnRpYWxTdW0sIHMpID0+IHBhcnRpYWxTdW0gKyBzLmV4cG9ydENvdW50LCAwKSA+XG4gICAgICBTVFJVQ1RfU0hBUkRJTkdfVEhSRVNIT0xEO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzKCk6IFN0cnVjdFtdIHtcbiAgICByZXR1cm4gW3RoaXMuY29uZmlnU3RydWN0LCAuLi50aGlzLl9zdHJ1Y3RzXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29uZmlnU3RydWN0KCkge1xuICAgIHJldHVybiBuZXcgQ29uZmlnU3RydWN0KHRoaXMuY29uZmlnU3RydWN0TmFtZSwgdGhpcy5hdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ludGhlc2l6YWJsZUF0dHJpYnV0ZXMoKTogQXR0cmlidXRlTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RydWN0LmFzc2lnbmFibGVBdHRyaWJ1dGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBpbXBvcnRTdGF0ZW1lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNjaGVtYUFzSnNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVzY2FwZVNjaGVtYShKU09OLnN0cmluZ2lmeSh0aGlzLnNjaGVtYSwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxpbmtUb0RvY3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGhvc3RuYW1lLCBuYW1lc3BhY2UsIG5hbWUgfSA9IHBhcnNlRlFQTih0aGlzLmZxcG4pO1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLnByb3ZpZGVyVmVyc2lvbiB8fCBcImxhdGVzdFwiO1xuICAgIGNvbnN0IGJhc2UgPSBgaHR0cHM6Ly8ke2hvc3RuYW1lfS9wcm92aWRlcnMvJHtuYW1lc3BhY2V9LyR7bmFtZX0vJHt2ZXJzaW9ufS9kb2NzYDtcbiAgICBpZiAodGhpcy5pc1Byb3ZpZGVyKSByZXR1cm4gYmFzZTtcbiAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2UpXG4gICAgICByZXR1cm4gYCR7YmFzZX0vZGF0YS1zb3VyY2VzLyR7dGhpcy50ZXJyYWZvcm1Eb2NOYW1lfWA7XG4gICAgcmV0dXJuIGAke2Jhc2V9L3Jlc291cmNlcy8ke3RoaXMudGVycmFmb3JtRG9jTmFtZX1gO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1Byb3ZpZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwicHJvdmlkZXJcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEYXRhU291cmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlcnJhZm9ybVNjaGVtYVR5cGUgPT09IFwiZGF0YV9zb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyZW50Q2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm92aWRlclxuICAgICAgPyBcIlRlcnJhZm9ybVByb3ZpZGVyXCJcbiAgICAgIDogdGhpcy5pc0RhdGFTb3VyY2VcbiAgICAgICAgPyBcIlRlcnJhZm9ybURhdGFTb3VyY2VcIlxuICAgICAgICA6IFwiVGVycmFmb3JtUmVzb3VyY2VcIjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtUmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNQcm92aWRlclxuICAgICAgPyB0aGlzLnRlcnJhZm9ybVByb3ZpZGVyTmFtZVxuICAgICAgOiB0aGlzLmlzRGF0YVNvdXJjZVxuICAgICAgICA/IHRoaXMudGVycmFmb3JtVHlwZS5yZXBsYWNlKC9eZGF0YV8vLCBcIlwiKVxuICAgICAgICA6IHRoaXMudGVycmFmb3JtVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtRG9jTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b1NuYWtlQ2FzZShcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2VUeXBlLnJlcGxhY2UoXG4gICAgICAgIG5ldyBSZWdFeHAoYF4ke3RoaXMucHJvdmlkZXJ9X2AsIFwiaVwiKSxcbiAgICAgICAgXCJcIixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmZXJlbmNlZFR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdHJ1Y3QucmVmZXJlbmNlZFR5cGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJ1Y3RzRm9sZGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZU5hbWUsIFwiLnRzXCIpfS1zdHJ1Y3RzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RydWN0c0ZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMubmFtZXNwYWNlRm9sZGVyUGF0aCwgdGhpcy5zdHJ1Y3RzRm9sZGVyTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWVzcGFjZUZvbGRlclBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWxlUGF0aC5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIvXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTY2hlbWEoc2NoZW1hOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzY2hlbWEucmVwbGFjZSgvKFxcKlxcLykvZ2ksIGAqXFxcXC9gKTtcbiAgfVxufVxuIl19
@@ -22,3 +22,4 @@ export declare class Scope {
22
22
  fullName(attributeName: string): string;
23
23
  get baseName(): string;
24
24
  }
25
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scope = void 0;
4
+ class Scope {
5
+ constructor(props) {
6
+ var _a, _b, _c, _d, _e;
7
+ this.name = props.name;
8
+ this.parent = props.parent;
9
+ this.isProvider = props.isProvider;
10
+ this.isComputed = (_a = props.isComputed) !== null && _a !== void 0 ? _a : false;
11
+ this.isOptional = (_b = props.isOptional) !== null && _b !== void 0 ? _b : true;
12
+ this.isRequired = (_c = props.isRequired) !== null && _c !== void 0 ? _c : false;
13
+ this.inBlockType = (_d = props.inBlockType) !== null && _d !== void 0 ? _d : false;
14
+ this.isNestedType = (_e = props.isNestedType) !== null && _e !== void 0 ? _e : false;
15
+ }
16
+ fullName(attributeName) {
17
+ return `${this.baseName}.${attributeName}`;
18
+ }
19
+ get baseName() {
20
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
21
+ let scope = this;
22
+ let name = "";
23
+ while (scope) {
24
+ if (name === "") {
25
+ name = scope.name;
26
+ }
27
+ else {
28
+ name = `${scope.name}.${name}`;
29
+ }
30
+ scope = scope.parent;
31
+ }
32
+ return name;
33
+ }
34
+ }
35
+ exports.Scope = Scope;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ2V0L2dlbmVyYXRvci9tb2RlbHMvc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYUEsTUFBYSxLQUFLO0lBV2hCLFlBQVksS0FBaUI7O1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBQSxLQUFLLENBQUMsVUFBVSxtQ0FBSSxLQUFLLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEtBQUssQ0FBQyxVQUFVLG1DQUFJLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUEsS0FBSyxDQUFDLFVBQVUsbUNBQUksS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBQSxLQUFLLENBQUMsV0FBVyxtQ0FBSSxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFBLEtBQUssQ0FBQyxZQUFZLG1DQUFJLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRU0sUUFBUSxDQUFDLGFBQXFCO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsNERBQTREO1FBQzVELElBQUksS0FBSyxHQUFzQixJQUFJLENBQUM7UUFDcEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBeENELHNCQXdDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlUHJvcHMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzUHJvdmlkZXI6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzQ29tcHV0ZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGluQmxvY2tUeXBlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNOZXN0ZWRUeXBlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGFyZW50PzogU2NvcGU7XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBwcm92aWRlcj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhcmVudD86IFNjb3BlO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcm92aWRlcjogYm9vbGVhbjtcbiAgcHVibGljIGlzQ29tcHV0ZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBpc09wdGlvbmFsOiBib29sZWFuO1xuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgcHVibGljIGluQmxvY2tUeXBlOiBib29sZWFuO1xuICBwdWJsaWMgaXNOZXN0ZWRUeXBlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTY29wZVByb3BzKSB7XG4gICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZTtcbiAgICB0aGlzLnBhcmVudCA9IHByb3BzLnBhcmVudDtcbiAgICB0aGlzLmlzUHJvdmlkZXIgPSBwcm9wcy5pc1Byb3ZpZGVyO1xuICAgIHRoaXMuaXNDb21wdXRlZCA9IHByb3BzLmlzQ29tcHV0ZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5pc09wdGlvbmFsID0gcHJvcHMuaXNPcHRpb25hbCA/PyB0cnVlO1xuICAgIHRoaXMuaXNSZXF1aXJlZCA9IHByb3BzLmlzUmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5pbkJsb2NrVHlwZSA9IHByb3BzLmluQmxvY2tUeXBlID8/IGZhbHNlO1xuICAgIHRoaXMuaXNOZXN0ZWRUeXBlID0gcHJvcHMuaXNOZXN0ZWRUeXBlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGZ1bGxOYW1lKGF0dHJpYnV0ZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VOYW1lfS4ke2F0dHJpYnV0ZU5hbWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmFzZU5hbWUoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgbGV0IHNjb3BlOiBTY29wZSB8IHVuZGVmaW5lZCA9IHRoaXM7XG4gICAgbGV0IG5hbWUgPSBcIlwiO1xuICAgIHdoaWxlIChzY29wZSkge1xuICAgICAgaWYgKG5hbWUgPT09IFwiXCIpIHtcbiAgICAgICAgbmFtZSA9IHNjb3BlLm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1lID0gYCR7c2NvcGUubmFtZX0uJHtuYW1lfWA7XG4gICAgICB9XG4gICAgICBzY29wZSA9IHNjb3BlLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbn1cbiJdfQ==
@@ -28,3 +28,4 @@ export declare class Struct {
28
28
  export declare class ConfigStruct extends Struct {
29
29
  get extends(): string;
30
30
  }
31
+ //# sourceMappingURL=struct.d.ts.map