@cdktn/provider-generator 0.23.0-pre.8 → 0.23.1

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 (198) 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 +43 -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 +51 -0
  18. package/build/get/__tests__/generator/description-escaping.test.d.ts +2 -0
  19. package/build/get/__tests__/generator/description-escaping.test.js +66 -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 +41 -0
  22. package/build/get/__tests__/generator/export-sharding.test.d.ts +2 -0
  23. package/build/get/__tests__/generator/export-sharding.test.js +83 -0
  24. package/build/get/__tests__/generator/module-generator.test.d.ts +2 -0
  25. package/build/get/__tests__/generator/module-generator.test.js +477 -0
  26. package/build/get/__tests__/generator/nested-types.test.d.ts +2 -0
  27. package/build/get/__tests__/generator/nested-types.test.js +52 -0
  28. package/build/get/__tests__/generator/provider.test.d.ts +2 -0
  29. package/build/get/__tests__/generator/provider.test.js +52 -0
  30. package/build/get/__tests__/generator/resource-types.test.d.ts +2 -0
  31. package/build/get/__tests__/generator/resource-types.test.js +79 -0
  32. package/build/get/__tests__/generator/skipped-attributes.test.d.ts +2 -0
  33. package/build/get/__tests__/generator/skipped-attributes.test.js +56 -0
  34. package/build/get/__tests__/generator/types.test.d.ts +2 -0
  35. package/build/get/__tests__/generator/types.test.js +312 -0
  36. package/build/get/__tests__/generator/versions-file.test.d.ts +2 -0
  37. package/build/get/__tests__/generator/versions-file.test.js +75 -0
  38. package/build/get/__tests__/util.d.ts +11 -0
  39. package/build/get/__tests__/util.js +81 -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 +2 -0
  71. package/build/get/generator/resource-parser.js +523 -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/eslint.config.mjs +13 -0
  81. package/package.json +13 -15
  82. package/{lib → src}/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +1 -1
  83. package/{lib → src}/__tests__/__snapshots__/provider.test.ts.snap +14953 -890
  84. package/{lib → src}/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +1 -1
  85. package/{lib → src}/get/__tests__/generator/__snapshots__/description-escaping.test.ts.snap +1 -1
  86. package/{lib → src}/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +1 -1
  87. package/{lib → src}/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +10 -10
  88. package/{lib → src}/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +1 -1
  89. package/{lib → src}/get/__tests__/generator/__snapshots__/provider.test.ts.snap +1 -1
  90. package/{lib → src}/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +1 -1
  91. package/{lib → src}/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +1 -1
  92. package/{lib → src}/get/__tests__/generator/__snapshots__/types.test.ts.snap +700 -1
  93. package/src/get/__tests__/generator/fixtures/case-insensitive-base-name-collision.test.fixture.json +82 -0
  94. package/src/get/__tests__/generator/fixtures/map-of-map-of-string.test.fixture.json +27 -0
  95. package/tsconfig.json +6 -3
  96. package/lib/__tests__/edge-provider-schema/builder.js +0 -106
  97. package/lib/__tests__/edge-provider-schema/cli.d.ts +0 -1
  98. package/lib/__tests__/edge-provider-schema/cli.js +0 -67
  99. package/lib/__tests__/edge-provider-schema/index.js +0 -154
  100. package/lib/__tests__/edge-provider-schema.test.d.ts +0 -1
  101. package/lib/__tests__/edge-provider-schema.test.js +0 -46
  102. package/lib/__tests__/provider.test.d.ts +0 -1
  103. package/lib/__tests__/provider.test.js +0 -158
  104. package/lib/get/__tests__/constructs-maker.test.d.ts +0 -1
  105. package/lib/get/__tests__/constructs-maker.test.js +0 -113
  106. package/lib/get/__tests__/generator/complex-computed-types.test.d.ts +0 -1
  107. package/lib/get/__tests__/generator/complex-computed-types.test.js +0 -42
  108. package/lib/get/__tests__/generator/deep-nested-attributes.test.d.ts +0 -1
  109. package/lib/get/__tests__/generator/deep-nested-attributes.test.js +0 -50
  110. package/lib/get/__tests__/generator/description-escaping.test.d.ts +0 -1
  111. package/lib/get/__tests__/generator/description-escaping.test.js +0 -65
  112. package/lib/get/__tests__/generator/empty-provider-resources.test.d.ts +0 -1
  113. package/lib/get/__tests__/generator/empty-provider-resources.test.js +0 -40
  114. package/lib/get/__tests__/generator/export-sharding.test.d.ts +0 -1
  115. package/lib/get/__tests__/generator/export-sharding.test.js +0 -82
  116. package/lib/get/__tests__/generator/module-generator.test.d.ts +0 -1
  117. package/lib/get/__tests__/generator/module-generator.test.js +0 -476
  118. package/lib/get/__tests__/generator/nested-types.test.d.ts +0 -1
  119. package/lib/get/__tests__/generator/nested-types.test.js +0 -51
  120. package/lib/get/__tests__/generator/provider.test.d.ts +0 -1
  121. package/lib/get/__tests__/generator/provider.test.js +0 -51
  122. package/lib/get/__tests__/generator/resource-types.test.d.ts +0 -1
  123. package/lib/get/__tests__/generator/resource-types.test.js +0 -78
  124. package/lib/get/__tests__/generator/skipped-attributes.test.d.ts +0 -1
  125. package/lib/get/__tests__/generator/skipped-attributes.test.js +0 -55
  126. package/lib/get/__tests__/generator/types.test.d.ts +0 -1
  127. package/lib/get/__tests__/generator/types.test.js +0 -280
  128. package/lib/get/__tests__/generator/versions-file.test.d.ts +0 -1
  129. package/lib/get/__tests__/generator/versions-file.test.js +0 -74
  130. package/lib/get/__tests__/util.d.ts +0 -1
  131. package/lib/get/__tests__/util.js +0 -59
  132. package/lib/get/generator/custom-defaults.js +0 -403
  133. package/lib/get/generator/emitter/attributes-emitter.js +0 -161
  134. package/lib/get/generator/emitter/resource-emitter.js +0 -144
  135. package/lib/get/generator/emitter/struct-emitter.js +0 -500
  136. package/lib/get/generator/loop-detection.js +0 -56
  137. package/lib/get/generator/models/attribute-model.js +0 -160
  138. package/lib/get/generator/models/attribute-type-model.js +0 -376
  139. package/lib/get/generator/models/resource-model.js +0 -106
  140. package/lib/get/generator/models/scope.js +0 -36
  141. package/lib/get/generator/models/struct.js +0 -90
  142. package/lib/get/generator/module-generator.js +0 -184
  143. package/lib/get/generator/provider-generator.js +0 -225
  144. package/lib/get/generator/resource-parser.js +0 -497
  145. package/lib/get/generator/sanitized-comments.js +0 -44
  146. package/lib/get/generator/skipped-attributes.js +0 -29
  147. package/lib/util.js +0 -30
  148. /package/{lib → src}/get/__tests__/generator/fixtures/aws-provider.test.fixture.json +0 -0
  149. /package/{lib → src}/get/__tests__/generator/fixtures/aws_acm_certificate.test.fixture.json +0 -0
  150. /package/{lib → src}/get/__tests__/generator/fixtures/aws_cloudfront_distribution.test.fixture.json +0 -0
  151. /package/{lib → src}/get/__tests__/generator/fixtures/aws_fms_admin_account.test.fixture.json +0 -0
  152. /package/{lib → src}/get/__tests__/generator/fixtures/aws_quicksight_template.test.fixture.json +0 -0
  153. /package/{lib → src}/get/__tests__/generator/fixtures/aws_s3_bucket.test.fixture.json +0 -0
  154. /package/{lib → src}/get/__tests__/generator/fixtures/aws_security_group.test.fixture.json +0 -0
  155. /package/{lib → src}/get/__tests__/generator/fixtures/aws_wafv2_web_acl.test.fixture.json +0 -0
  156. /package/{lib → src}/get/__tests__/generator/fixtures/block-type-nested-computed-list.test.fixture.json +0 -0
  157. /package/{lib → src}/get/__tests__/generator/fixtures/block-type-set-list.test.fixture.json +0 -0
  158. /package/{lib → src}/get/__tests__/generator/fixtures/boolean-list.test.fixture.json +0 -0
  159. /package/{lib → src}/get/__tests__/generator/fixtures/boolean-map.test.fixture.json +0 -0
  160. /package/{lib → src}/get/__tests__/generator/fixtures/comment-ending-sequence.test.fixture.json +0 -0
  161. /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex-nested.test.fixture.json +0 -0
  162. /package/{lib → src}/get/__tests__/generator/fixtures/computed-complex.test.fixture.json +0 -0
  163. /package/{lib → src}/get/__tests__/generator/fixtures/computed-optional-complex.test.fixture.json +0 -0
  164. /package/{lib → src}/get/__tests__/generator/fixtures/data_aws_quicksight_analysis.fixture.json +0 -0
  165. /package/{lib → src}/get/__tests__/generator/fixtures/datadog_dashboard.test.fixture.json +0 -0
  166. /package/{lib → src}/get/__tests__/generator/fixtures/datadog_spans_metric.test.fixture.json +0 -0
  167. /package/{lib → src}/get/__tests__/generator/fixtures/deep-attributes.test.fixture.json +0 -0
  168. /package/{lib → src}/get/__tests__/generator/fixtures/deeply-nested-block-types.test.fixture.json +0 -0
  169. /package/{lib → src}/get/__tests__/generator/fixtures/description-escaping.test.fixture.json +0 -0
  170. /package/{lib → src}/get/__tests__/generator/fixtures/elasticstack-provider.test.fixture.json +0 -0
  171. /package/{lib → src}/get/__tests__/generator/fixtures/empty-provider-resources.test.fixture.json +0 -0
  172. /package/{lib → src}/get/__tests__/generator/fixtures/ignored-attributes.test.fixture.json +0 -0
  173. /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-attribute-names.test.fixture.json +0 -0
  174. /package/{lib → src}/get/__tests__/generator/fixtures/incompatible-resource-names.test.fixture.json +0 -0
  175. /package/{lib → src}/get/__tests__/generator/fixtures/list-list-object.test.fixture.json +0 -0
  176. /package/{lib → src}/get/__tests__/generator/fixtures/list-list-string.test.fixture.json +0 -0
  177. /package/{lib → src}/get/__tests__/generator/fixtures/list-of-string-map.test.fixture.json +0 -0
  178. /package/{lib → src}/get/__tests__/generator/fixtures/map-of-string-list.test.fixture.json +0 -0
  179. /package/{lib → src}/get/__tests__/generator/fixtures/markdown-description-with-code-blocks.test.fixture.json +0 -0
  180. /package/{lib → src}/get/__tests__/generator/fixtures/module-get-x.test.fixture.tf +0 -0
  181. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-1.test.fixture.tf +0 -0
  182. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-newline-2.test.fixture.tf +0 -0
  183. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-outputs.test.fixture.tf +0 -0
  184. /package/{lib → src}/get/__tests__/generator/fixtures/module-no-variable-type.test.fixture.tf +0 -0
  185. /package/{lib → src}/get/__tests__/generator/fixtures/module-with-star-default.test.fixture.tf +0 -0
  186. /package/{lib → src}/get/__tests__/generator/fixtures/name-conflict.test.fixture.json +0 -0
  187. /package/{lib → src}/get/__tests__/generator/fixtures/nested-type-without-attributes.test.fixture.json +0 -0
  188. /package/{lib → src}/get/__tests__/generator/fixtures/nested-types.test.fixture.json +0 -0
  189. /package/{lib → src}/get/__tests__/generator/fixtures/number-list.test.fixture.json +0 -0
  190. /package/{lib → src}/get/__tests__/generator/fixtures/number-map.test.fixture.json +0 -0
  191. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-boolean.test.fixture.json +0 -0
  192. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-dynamic.test.fixture.json +0 -0
  193. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-number.test.fixture.json +0 -0
  194. /package/{lib → src}/get/__tests__/generator/fixtures/primitive-string.test.fixture.json +0 -0
  195. /package/{lib → src}/get/__tests__/generator/fixtures/single-block-type.test.fixture.json +0 -0
  196. /package/{lib → src}/get/__tests__/generator/fixtures/string-list.test.fixture.json +0 -0
  197. /package/{lib → src}/get/__tests__/generator/fixtures/string-map.test.fixture.json +0 -0
  198. /package/{lib → src}/get/__tests__/generator/fixtures/stripe-schema.test.fixture.json +0 -0
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`boolean list attribute 1`] = `
4
4
  "// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/boolean_list
@@ -295,6 +295,614 @@ export class BooleanMap extends cdktn.TerraformResource {
295
295
  "
296
296
  `;
297
297
 
298
+ exports[`case-insensitive base name collision: data-oci-devops-repository-mirror-record 1`] = `
299
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirror_record
300
+ // generated from terraform resource schema
301
+
302
+ import { Construct } from 'constructs';
303
+ import * as cdktn from 'cdktn';
304
+
305
+ // Configuration
306
+
307
+ export interface DataOciDevopsRepositoryMirrorRecordConfig extends cdktn.TerraformMetaArguments {
308
+ }
309
+
310
+ /**
311
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirror_record oci_devops_repository_mirror_record}
312
+ */
313
+ export class DataOciDevopsRepositoryMirrorRecord extends cdktn.TerraformDataSource {
314
+
315
+ // =================
316
+ // STATIC PROPERTIES
317
+ // =================
318
+ public static readonly tfResourceType = "oci_devops_repository_mirror_record";
319
+
320
+ // ==============
321
+ // STATIC Methods
322
+ // ==============
323
+ /**
324
+ * Generates CDKTN code for importing a DataOciDevopsRepositoryMirrorRecord resource upon running "cdktn plan <stack-name>"
325
+ * @param scope The scope in which to define this construct
326
+ * @param importToId The construct id used in the generated config for the DataOciDevopsRepositoryMirrorRecord to import
327
+ * @param importFromId The id of the existing DataOciDevopsRepositoryMirrorRecord that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirror_record#import import section} in the documentation of this resource for the id to use
328
+ * @param provider? Optional instance of the provider where the DataOciDevopsRepositoryMirrorRecord to import is found
329
+ */
330
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
331
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_devops_repository_mirror_record", importId: importFromId, provider });
332
+ }
333
+
334
+ // ===========
335
+ // INITIALIZER
336
+ // ===========
337
+
338
+ /**
339
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirror_record oci_devops_repository_mirror_record} Data Source
340
+ *
341
+ * @param scope The scope in which to define this construct
342
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
343
+ * @param options DataOciDevopsRepositoryMirrorRecordConfig = {}
344
+ */
345
+ public constructor(scope: Construct, id: string, config: DataOciDevopsRepositoryMirrorRecordConfig = {}) {
346
+ super(scope, id, {
347
+ terraformResourceType: 'oci_devops_repository_mirror_record',
348
+ terraformGeneratorMetadata: {
349
+ providerName: 'oci'
350
+ },
351
+ provider: config.provider,
352
+ dependsOn: config.dependsOn,
353
+ count: config.count,
354
+ lifecycle: config.lifecycle,
355
+ provisioners: config.provisioners,
356
+ connection: config.connection,
357
+ forEach: config.forEach
358
+ });
359
+ }
360
+
361
+ // ==========
362
+ // ATTRIBUTES
363
+ // ==========
364
+
365
+ // id - computed: true, optional: false, required: false
366
+ public get id() {
367
+ return this.getStringAttribute('id');
368
+ }
369
+
370
+ // =========
371
+ // SYNTHESIS
372
+ // =========
373
+
374
+ protected synthesizeAttributes(): { [name: string]: any } {
375
+ return {
376
+ };
377
+ }
378
+
379
+ protected synthesizeHclAttributes(): { [name: string]: any } {
380
+ const attrs = {
381
+ };
382
+ return attrs;
383
+ }
384
+ }
385
+ "
386
+ `;
387
+
388
+ exports[`case-insensitive base name collision: data-oci-devops-repository-mirrorrecord-history 1`] = `
389
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirrorrecord_history
390
+ // generated from terraform resource schema
391
+
392
+ import { Construct } from 'constructs';
393
+ import * as cdktn from 'cdktn';
394
+
395
+ // Configuration
396
+
397
+ export interface DataOciDevopsRepositoryMirrorrecordHistoryConfig extends cdktn.TerraformMetaArguments {
398
+ }
399
+
400
+ /**
401
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirrorrecord_history oci_devops_repository_mirrorrecord_history}
402
+ */
403
+ export class DataOciDevopsRepositoryMirrorrecordHistory extends cdktn.TerraformDataSource {
404
+
405
+ // =================
406
+ // STATIC PROPERTIES
407
+ // =================
408
+ public static readonly tfResourceType = "oci_devops_repository_mirrorrecord_history";
409
+
410
+ // ==============
411
+ // STATIC Methods
412
+ // ==============
413
+ /**
414
+ * Generates CDKTN code for importing a DataOciDevopsRepositoryMirrorrecordHistory resource upon running "cdktn plan <stack-name>"
415
+ * @param scope The scope in which to define this construct
416
+ * @param importToId The construct id used in the generated config for the DataOciDevopsRepositoryMirrorrecordHistory to import
417
+ * @param importFromId The id of the existing DataOciDevopsRepositoryMirrorrecordHistory that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirrorrecord_history#import import section} in the documentation of this resource for the id to use
418
+ * @param provider? Optional instance of the provider where the DataOciDevopsRepositoryMirrorrecordHistory to import is found
419
+ */
420
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
421
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_devops_repository_mirrorrecord_history", importId: importFromId, provider });
422
+ }
423
+
424
+ // ===========
425
+ // INITIALIZER
426
+ // ===========
427
+
428
+ /**
429
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/devops_repository_mirrorrecord_history oci_devops_repository_mirrorrecord_history} Data Source
430
+ *
431
+ * @param scope The scope in which to define this construct
432
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
433
+ * @param options DataOciDevopsRepositoryMirrorrecordHistoryConfig = {}
434
+ */
435
+ public constructor(scope: Construct, id: string, config: DataOciDevopsRepositoryMirrorrecordHistoryConfig = {}) {
436
+ super(scope, id, {
437
+ terraformResourceType: 'oci_devops_repository_mirrorrecord_history',
438
+ terraformGeneratorMetadata: {
439
+ providerName: 'oci'
440
+ },
441
+ provider: config.provider,
442
+ dependsOn: config.dependsOn,
443
+ count: config.count,
444
+ lifecycle: config.lifecycle,
445
+ provisioners: config.provisioners,
446
+ connection: config.connection,
447
+ forEach: config.forEach
448
+ });
449
+ }
450
+
451
+ // ==========
452
+ // ATTRIBUTES
453
+ // ==========
454
+
455
+ // id - computed: true, optional: false, required: false
456
+ public get id() {
457
+ return this.getStringAttribute('id');
458
+ }
459
+
460
+ // =========
461
+ // SYNTHESIS
462
+ // =========
463
+
464
+ protected synthesizeAttributes(): { [name: string]: any } {
465
+ return {
466
+ };
467
+ }
468
+
469
+ protected synthesizeHclAttributes(): { [name: string]: any } {
470
+ const attrs = {
471
+ };
472
+ return attrs;
473
+ }
474
+ }
475
+ "
476
+ `;
477
+
478
+ exports[`case-insensitive base name collision: data-oci-load-balancer-backend-sets 1`] = `
479
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backend_sets
480
+ // generated from terraform resource schema
481
+
482
+ import { Construct } from 'constructs';
483
+ import * as cdktn from 'cdktn';
484
+
485
+ // Configuration
486
+
487
+ export interface DataOciLoadBalancerBackendSetsConfig extends cdktn.TerraformMetaArguments {
488
+ }
489
+
490
+ /**
491
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backend_sets oci_load_balancer_backend_sets}
492
+ */
493
+ export class DataOciLoadBalancerBackendSets extends cdktn.TerraformDataSource {
494
+
495
+ // =================
496
+ // STATIC PROPERTIES
497
+ // =================
498
+ public static readonly tfResourceType = "oci_load_balancer_backend_sets";
499
+
500
+ // ==============
501
+ // STATIC Methods
502
+ // ==============
503
+ /**
504
+ * Generates CDKTN code for importing a DataOciLoadBalancerBackendSets resource upon running "cdktn plan <stack-name>"
505
+ * @param scope The scope in which to define this construct
506
+ * @param importToId The construct id used in the generated config for the DataOciLoadBalancerBackendSets to import
507
+ * @param importFromId The id of the existing DataOciLoadBalancerBackendSets that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backend_sets#import import section} in the documentation of this resource for the id to use
508
+ * @param provider? Optional instance of the provider where the DataOciLoadBalancerBackendSets to import is found
509
+ */
510
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
511
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_load_balancer_backend_sets", importId: importFromId, provider });
512
+ }
513
+
514
+ // ===========
515
+ // INITIALIZER
516
+ // ===========
517
+
518
+ /**
519
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backend_sets oci_load_balancer_backend_sets} Data Source
520
+ *
521
+ * @param scope The scope in which to define this construct
522
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
523
+ * @param options DataOciLoadBalancerBackendSetsConfig = {}
524
+ */
525
+ public constructor(scope: Construct, id: string, config: DataOciLoadBalancerBackendSetsConfig = {}) {
526
+ super(scope, id, {
527
+ terraformResourceType: 'oci_load_balancer_backend_sets',
528
+ terraformGeneratorMetadata: {
529
+ providerName: 'oci'
530
+ },
531
+ provider: config.provider,
532
+ dependsOn: config.dependsOn,
533
+ count: config.count,
534
+ lifecycle: config.lifecycle,
535
+ provisioners: config.provisioners,
536
+ connection: config.connection,
537
+ forEach: config.forEach
538
+ });
539
+ }
540
+
541
+ // ==========
542
+ // ATTRIBUTES
543
+ // ==========
544
+
545
+ // id - computed: true, optional: false, required: false
546
+ public get id() {
547
+ return this.getStringAttribute('id');
548
+ }
549
+
550
+ // =========
551
+ // SYNTHESIS
552
+ // =========
553
+
554
+ protected synthesizeAttributes(): { [name: string]: any } {
555
+ return {
556
+ };
557
+ }
558
+
559
+ protected synthesizeHclAttributes(): { [name: string]: any } {
560
+ const attrs = {
561
+ };
562
+ return attrs;
563
+ }
564
+ }
565
+ "
566
+ `;
567
+
568
+ exports[`case-insensitive base name collision: data-oci-load-balancer-backendsets-a 1`] = `
569
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backendsets
570
+ // generated from terraform resource schema
571
+
572
+ import { Construct } from 'constructs';
573
+ import * as cdktn from 'cdktn';
574
+
575
+ // Configuration
576
+
577
+ export interface DataOciLoadBalancerBackendsetsAConfig extends cdktn.TerraformMetaArguments {
578
+ }
579
+
580
+ /**
581
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backendsets oci_load_balancer_backendsets}
582
+ */
583
+ export class DataOciLoadBalancerBackendsetsA extends cdktn.TerraformDataSource {
584
+
585
+ // =================
586
+ // STATIC PROPERTIES
587
+ // =================
588
+ public static readonly tfResourceType = "oci_load_balancer_backendsets";
589
+
590
+ // ==============
591
+ // STATIC Methods
592
+ // ==============
593
+ /**
594
+ * Generates CDKTN code for importing a DataOciLoadBalancerBackendsetsA resource upon running "cdktn plan <stack-name>"
595
+ * @param scope The scope in which to define this construct
596
+ * @param importToId The construct id used in the generated config for the DataOciLoadBalancerBackendsetsA to import
597
+ * @param importFromId The id of the existing DataOciLoadBalancerBackendsetsA that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backendsets#import import section} in the documentation of this resource for the id to use
598
+ * @param provider? Optional instance of the provider where the DataOciLoadBalancerBackendsetsA to import is found
599
+ */
600
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
601
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_load_balancer_backendsets", importId: importFromId, provider });
602
+ }
603
+
604
+ // ===========
605
+ // INITIALIZER
606
+ // ===========
607
+
608
+ /**
609
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/load_balancer_backendsets oci_load_balancer_backendsets} Data Source
610
+ *
611
+ * @param scope The scope in which to define this construct
612
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
613
+ * @param options DataOciLoadBalancerBackendsetsAConfig = {}
614
+ */
615
+ public constructor(scope: Construct, id: string, config: DataOciLoadBalancerBackendsetsAConfig = {}) {
616
+ super(scope, id, {
617
+ terraformResourceType: 'oci_load_balancer_backendsets',
618
+ terraformGeneratorMetadata: {
619
+ providerName: 'oci'
620
+ },
621
+ provider: config.provider,
622
+ dependsOn: config.dependsOn,
623
+ count: config.count,
624
+ lifecycle: config.lifecycle,
625
+ provisioners: config.provisioners,
626
+ connection: config.connection,
627
+ forEach: config.forEach
628
+ });
629
+ }
630
+
631
+ // ==========
632
+ // ATTRIBUTES
633
+ // ==========
634
+
635
+ // id - computed: true, optional: false, required: false
636
+ public get id() {
637
+ return this.getStringAttribute('id');
638
+ }
639
+
640
+ // =========
641
+ // SYNTHESIS
642
+ // =========
643
+
644
+ protected synthesizeAttributes(): { [name: string]: any } {
645
+ return {
646
+ };
647
+ }
648
+
649
+ protected synthesizeHclAttributes(): { [name: string]: any } {
650
+ const attrs = {
651
+ };
652
+ return attrs;
653
+ }
654
+ }
655
+ "
656
+ `;
657
+
658
+ exports[`case-insensitive base name collision: index.ts 1`] = `
659
+ "// generated by cdktn get
660
+ export * as loadBalancerBackendSet from './load-balancer-backend-set';
661
+ export * as loadBalancerBackendsetA from './load-balancer-backendset-a';
662
+ export * as dataOciDevopsRepositoryMirrorRecord from './data-oci-devops-repository-mirror-record';
663
+ export * as dataOciDevopsRepositoryMirrorrecordHistory from './data-oci-devops-repository-mirrorrecord-history';
664
+ export * as dataOciLoadBalancerBackendSets from './data-oci-load-balancer-backend-sets';
665
+ export * as dataOciLoadBalancerBackendsetsA from './data-oci-load-balancer-backendsets-a';
666
+
667
+ "
668
+ `;
669
+
670
+ exports[`case-insensitive base name collision: lazy-index.ts 1`] = `
671
+ "// generated by cdktn get
672
+ Object.defineProperty(exports, 'loadBalancerBackendSet', { get: function () { return require('./load-balancer-backend-set'); } });
673
+ Object.defineProperty(exports, 'loadBalancerBackendsetA', { get: function () { return require('./load-balancer-backendset-a'); } });
674
+ Object.defineProperty(exports, 'dataOciDevopsRepositoryMirrorRecord', { get: function () { return require('./data-oci-devops-repository-mirror-record'); } });
675
+ Object.defineProperty(exports, 'dataOciDevopsRepositoryMirrorrecordHistory', { get: function () { return require('./data-oci-devops-repository-mirrorrecord-history'); } });
676
+ Object.defineProperty(exports, 'dataOciLoadBalancerBackendSets', { get: function () { return require('./data-oci-load-balancer-backend-sets'); } });
677
+ Object.defineProperty(exports, 'dataOciLoadBalancerBackendsetsA', { get: function () { return require('./data-oci-load-balancer-backendsets-a'); } });
678
+
679
+ "
680
+ `;
681
+
682
+ exports[`case-insensitive base name collision: load-balancer-backend-set 1`] = `
683
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backend_set
684
+ // generated from terraform resource schema
685
+
686
+ import { Construct } from 'constructs';
687
+ import * as cdktn from 'cdktn';
688
+
689
+ // Configuration
690
+
691
+ export interface LoadBalancerBackendSetConfig extends cdktn.TerraformMetaArguments {
692
+ /**
693
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backend_set#name LoadBalancerBackendSet#name}
694
+ */
695
+ readonly name: string;
696
+ }
697
+
698
+ /**
699
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backend_set oci_load_balancer_backend_set}
700
+ */
701
+ export class LoadBalancerBackendSet extends cdktn.TerraformResource {
702
+
703
+ // =================
704
+ // STATIC PROPERTIES
705
+ // =================
706
+ public static readonly tfResourceType = "oci_load_balancer_backend_set";
707
+
708
+ // ==============
709
+ // STATIC Methods
710
+ // ==============
711
+ /**
712
+ * Generates CDKTN code for importing a LoadBalancerBackendSet resource upon running "cdktn plan <stack-name>"
713
+ * @param scope The scope in which to define this construct
714
+ * @param importToId The construct id used in the generated config for the LoadBalancerBackendSet to import
715
+ * @param importFromId The id of the existing LoadBalancerBackendSet that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backend_set#import import section} in the documentation of this resource for the id to use
716
+ * @param provider? Optional instance of the provider where the LoadBalancerBackendSet to import is found
717
+ */
718
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
719
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_load_balancer_backend_set", importId: importFromId, provider });
720
+ }
721
+
722
+ // ===========
723
+ // INITIALIZER
724
+ // ===========
725
+
726
+ /**
727
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backend_set oci_load_balancer_backend_set} Resource
728
+ *
729
+ * @param scope The scope in which to define this construct
730
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
731
+ * @param options LoadBalancerBackendSetConfig
732
+ */
733
+ public constructor(scope: Construct, id: string, config: LoadBalancerBackendSetConfig) {
734
+ super(scope, id, {
735
+ terraformResourceType: 'oci_load_balancer_backend_set',
736
+ terraformGeneratorMetadata: {
737
+ providerName: 'oci'
738
+ },
739
+ provider: config.provider,
740
+ dependsOn: config.dependsOn,
741
+ count: config.count,
742
+ lifecycle: config.lifecycle,
743
+ provisioners: config.provisioners,
744
+ connection: config.connection,
745
+ forEach: config.forEach
746
+ });
747
+ this._name = config.name;
748
+ }
749
+
750
+ // ==========
751
+ // ATTRIBUTES
752
+ // ==========
753
+
754
+ // name - computed: false, optional: false, required: true
755
+ private _name?: string;
756
+ public get name() {
757
+ return this.getStringAttribute('name');
758
+ }
759
+ public set name(value: string) {
760
+ this._name = value;
761
+ }
762
+ // Temporarily expose input value. Use with caution.
763
+ public get nameInput() {
764
+ return this._name;
765
+ }
766
+
767
+ // =========
768
+ // SYNTHESIS
769
+ // =========
770
+
771
+ protected synthesizeAttributes(): { [name: string]: any } {
772
+ return {
773
+ name: cdktn.stringToTerraform(this._name),
774
+ };
775
+ }
776
+
777
+ protected synthesizeHclAttributes(): { [name: string]: any } {
778
+ const attrs = {
779
+ name: {
780
+ value: cdktn.stringToHclTerraform(this._name),
781
+ isBlock: false,
782
+ type: "simple",
783
+ storageClassType: "string",
784
+ },
785
+ };
786
+
787
+ // remove undefined attributes
788
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined ))
789
+ }
790
+ }
791
+ "
792
+ `;
793
+
794
+ exports[`case-insensitive base name collision: load-balancer-backendset-a 1`] = `
795
+ "// https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backendset
796
+ // generated from terraform resource schema
797
+
798
+ import { Construct } from 'constructs';
799
+ import * as cdktn from 'cdktn';
800
+
801
+ // Configuration
802
+
803
+ export interface LoadBalancerBackendsetAConfig extends cdktn.TerraformMetaArguments {
804
+ /**
805
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backendset#name LoadBalancerBackendsetA#name}
806
+ */
807
+ readonly name: string;
808
+ }
809
+
810
+ /**
811
+ * Represents a {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backendset oci_load_balancer_backendset}
812
+ */
813
+ export class LoadBalancerBackendsetA extends cdktn.TerraformResource {
814
+
815
+ // =================
816
+ // STATIC PROPERTIES
817
+ // =================
818
+ public static readonly tfResourceType = "oci_load_balancer_backendset";
819
+
820
+ // ==============
821
+ // STATIC Methods
822
+ // ==============
823
+ /**
824
+ * Generates CDKTN code for importing a LoadBalancerBackendsetA resource upon running "cdktn plan <stack-name>"
825
+ * @param scope The scope in which to define this construct
826
+ * @param importToId The construct id used in the generated config for the LoadBalancerBackendsetA to import
827
+ * @param importFromId The id of the existing LoadBalancerBackendsetA that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backendset#import import section} in the documentation of this resource for the id to use
828
+ * @param provider? Optional instance of the provider where the LoadBalancerBackendsetA to import is found
829
+ */
830
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
831
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "oci_load_balancer_backendset", importId: importFromId, provider });
832
+ }
833
+
834
+ // ===========
835
+ // INITIALIZER
836
+ // ===========
837
+
838
+ /**
839
+ * Create a new {@link https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/load_balancer_backendset oci_load_balancer_backendset} Resource
840
+ *
841
+ * @param scope The scope in which to define this construct
842
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
843
+ * @param options LoadBalancerBackendsetAConfig
844
+ */
845
+ public constructor(scope: Construct, id: string, config: LoadBalancerBackendsetAConfig) {
846
+ super(scope, id, {
847
+ terraformResourceType: 'oci_load_balancer_backendset',
848
+ terraformGeneratorMetadata: {
849
+ providerName: 'oci'
850
+ },
851
+ provider: config.provider,
852
+ dependsOn: config.dependsOn,
853
+ count: config.count,
854
+ lifecycle: config.lifecycle,
855
+ provisioners: config.provisioners,
856
+ connection: config.connection,
857
+ forEach: config.forEach
858
+ });
859
+ this._name = config.name;
860
+ }
861
+
862
+ // ==========
863
+ // ATTRIBUTES
864
+ // ==========
865
+
866
+ // name - computed: false, optional: false, required: true
867
+ private _name?: string;
868
+ public get name() {
869
+ return this.getStringAttribute('name');
870
+ }
871
+ public set name(value: string) {
872
+ this._name = value;
873
+ }
874
+ // Temporarily expose input value. Use with caution.
875
+ public get nameInput() {
876
+ return this._name;
877
+ }
878
+
879
+ // =========
880
+ // SYNTHESIS
881
+ // =========
882
+
883
+ protected synthesizeAttributes(): { [name: string]: any } {
884
+ return {
885
+ name: cdktn.stringToTerraform(this._name),
886
+ };
887
+ }
888
+
889
+ protected synthesizeHclAttributes(): { [name: string]: any } {
890
+ const attrs = {
891
+ name: {
892
+ value: cdktn.stringToHclTerraform(this._name),
893
+ isBlock: false,
894
+ type: "simple",
895
+ storageClassType: "string",
896
+ },
897
+ };
898
+
899
+ // remove undefined attributes
900
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined ))
901
+ }
902
+ }
903
+ "
904
+ `;
905
+
298
906
  exports[`computed complex attribute 1`] = `
299
907
  "// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/computed_complex
300
908
  // generated from terraform resource schema
@@ -3967,6 +4575,97 @@ export class ListOfStringMap extends cdktn.TerraformResource {
3967
4575
  "
3968
4576
  `;
3969
4577
 
4578
+ exports[`map of map of string attribute 1`] = `
4579
+ "// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/map_of_map_of_string
4580
+ // generated from terraform resource schema
4581
+
4582
+ import { Construct } from 'constructs';
4583
+ import * as cdktn from 'cdktn';
4584
+
4585
+ // Configuration
4586
+
4587
+ export interface MapOfMapOfStringConfig extends cdktn.TerraformMetaArguments {
4588
+ }
4589
+
4590
+ /**
4591
+ * Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/map_of_map_of_string aws_map_of_map_of_string}
4592
+ */
4593
+ export class MapOfMapOfString extends cdktn.TerraformResource {
4594
+
4595
+ // =================
4596
+ // STATIC PROPERTIES
4597
+ // =================
4598
+ public static readonly tfResourceType = "aws_map_of_map_of_string";
4599
+
4600
+ // ==============
4601
+ // STATIC Methods
4602
+ // ==============
4603
+ /**
4604
+ * Generates CDKTN code for importing a MapOfMapOfString resource upon running "cdktn plan <stack-name>"
4605
+ * @param scope The scope in which to define this construct
4606
+ * @param importToId The construct id used in the generated config for the MapOfMapOfString to import
4607
+ * @param importFromId The id of the existing MapOfMapOfString that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/map_of_map_of_string#import import section} in the documentation of this resource for the id to use
4608
+ * @param provider? Optional instance of the provider where the MapOfMapOfString to import is found
4609
+ */
4610
+ public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
4611
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "aws_map_of_map_of_string", importId: importFromId, provider });
4612
+ }
4613
+
4614
+ // ===========
4615
+ // INITIALIZER
4616
+ // ===========
4617
+
4618
+ /**
4619
+ * Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/map_of_map_of_string aws_map_of_map_of_string} Resource
4620
+ *
4621
+ * @param scope The scope in which to define this construct
4622
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
4623
+ * @param options MapOfMapOfStringConfig = {}
4624
+ */
4625
+ public constructor(scope: Construct, id: string, config: MapOfMapOfStringConfig = {}) {
4626
+ super(scope, id, {
4627
+ terraformResourceType: 'aws_map_of_map_of_string',
4628
+ terraformGeneratorMetadata: {
4629
+ providerName: 'aws'
4630
+ },
4631
+ provider: config.provider,
4632
+ dependsOn: config.dependsOn,
4633
+ count: config.count,
4634
+ lifecycle: config.lifecycle,
4635
+ provisioners: config.provisioners,
4636
+ connection: config.connection,
4637
+ forEach: config.forEach
4638
+ });
4639
+ }
4640
+
4641
+ // ==========
4642
+ // ATTRIBUTES
4643
+ // ==========
4644
+
4645
+ // labels - computed: true, optional: false, required: false
4646
+ private _labels = new cdktn.StringMapMap(this, "labels");
4647
+ public get labels() {
4648
+ return this._labels;
4649
+ }
4650
+
4651
+ // =========
4652
+ // SYNTHESIS
4653
+ // =========
4654
+
4655
+ protected synthesizeAttributes(): { [name: string]: any } {
4656
+ return {
4657
+ };
4658
+ }
4659
+
4660
+ protected synthesizeHclAttributes(): { [name: string]: any } {
4661
+ const attrs = {
4662
+ };
4663
+ return attrs;
4664
+ }
4665
+ }
4666
+ "
4667
+ `;
4668
+
3970
4669
  exports[`map of string list attribute 1`] = `
3971
4670
  "// https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/map_of_string_list
3972
4671
  // generated from terraform resource schema