@cdktn/provider-generator 0.25.0-pre.6 → 0.25.0-pre.61

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 (58) hide show
  1. package/README.md +12 -0
  2. package/build/__tests__/edge-provider-schema/builder.js +3 -3
  3. package/build/__tests__/edge-provider-schema/cli.js +18 -8
  4. package/build/__tests__/edge-provider-schema.test.js +18 -8
  5. package/build/__tests__/provider.test.js +44 -16
  6. package/build/get/__tests__/constructs-maker.test.js +91 -8
  7. package/build/get/__tests__/generator/complex-computed-types.test.js +18 -8
  8. package/build/get/__tests__/generator/deep-nested-attributes.test.js +18 -8
  9. package/build/get/__tests__/generator/description-escaping.test.js +18 -8
  10. package/build/get/__tests__/generator/empty-provider-resources.test.js +18 -8
  11. package/build/get/__tests__/generator/ephemeral-resources.test.js +18 -8
  12. package/build/get/__tests__/generator/export-sharding.test.js +18 -8
  13. package/build/get/__tests__/generator/import-style.test.js +18 -8
  14. package/build/get/__tests__/generator/module-generator.test.js +18 -8
  15. package/build/get/__tests__/generator/nested-types.test.js +18 -8
  16. package/build/get/__tests__/generator/provider-functions-name-collision.test.d.ts +2 -0
  17. package/build/get/__tests__/generator/provider-functions-name-collision.test.js +89 -0
  18. package/build/get/__tests__/generator/provider-functions.test.js +18 -8
  19. package/build/get/__tests__/generator/provider.test.js +18 -8
  20. package/build/get/__tests__/generator/resource-types.test.js +18 -8
  21. package/build/get/__tests__/generator/skipped-attributes.test.js +18 -8
  22. package/build/get/__tests__/generator/types.test.js +18 -8
  23. package/build/get/__tests__/generator/versions-file.test.js +25 -10
  24. package/build/get/__tests__/generator/write-only.test.js +18 -8
  25. package/build/get/__tests__/target-versions.test.js +18 -8
  26. package/build/get/__tests__/util.js +20 -11
  27. package/build/get/constructs-maker.d.ts +17 -0
  28. package/build/get/constructs-maker.js +68 -10
  29. package/build/get/generator/emitter/struct-emitter.js +20 -10
  30. package/build/get/generator/loop-detection.js +2 -3
  31. package/build/get/generator/models/attribute-model.js +3 -3
  32. package/build/get/generator/models/attribute-type-model.js +3 -3
  33. package/build/get/generator/models/provider-function-model.js +3 -4
  34. package/build/get/generator/models/resource-model.d.ts +5 -1
  35. package/build/get/generator/models/resource-model.js +20 -10
  36. package/build/get/generator/models/supported-stored-classes.js +2 -3
  37. package/build/get/generator/provider-generator.d.ts +15 -1
  38. package/build/get/generator/provider-generator.js +20 -5
  39. package/build/get/generator/resource-parser.d.ts +3 -1
  40. package/build/get/generator/resource-parser.js +16 -7
  41. package/build/get/generator/sanitized-comments.js +2 -3
  42. package/build/get/generator/skipped-attributes.js +2 -3
  43. package/build/index.js +3 -3
  44. package/build/util.js +3 -4
  45. package/package.json +36 -13
  46. package/src/__tests__/__snapshots__/provider.test.ts.snap +1309 -3206
  47. package/src/__tests__/provider.test.ts +31 -8
  48. package/src/get/__tests__/constructs-maker.test.ts +125 -1
  49. package/src/get/__tests__/generator/fixtures/provider-functions-name-collision.test.fixture.json +42 -0
  50. package/src/get/__tests__/generator/provider-functions-name-collision.test.ts +84 -0
  51. package/src/get/__tests__/generator/versions-file.test.ts +10 -5
  52. package/src/get/constructs-maker.ts +65 -0
  53. package/src/get/generator/emitter/struct-emitter.ts +2 -2
  54. package/src/get/generator/models/attribute-type-model.ts +1 -2
  55. package/src/get/generator/models/resource-model.ts +32 -9
  56. package/src/get/generator/provider-generator.ts +27 -4
  57. package/src/get/generator/resource-parser.ts +21 -3
  58. package/tsconfig.json +4 -0
@@ -11,6 +11,7 @@ import {
11
11
  isAttributeNestedType,
12
12
  isNestedTypeAttribute,
13
13
  Schema,
14
+ TerraformTargetVersions,
14
15
  } from "@cdktn/commons";
15
16
  import { ProviderName, FQPN, parseFQPN } from "@cdktn/provider-schema";
16
17
  import {
@@ -82,8 +83,17 @@ export function sanitizeClassOrNamespaceName(
82
83
  isProvider = false,
83
84
  ) {
84
85
  const resourceIsNamedProvider = !isProvider && baseName === "provider";
85
-
86
- if (isReservedClassOrNamespaceName(baseName) || resourceIsNamedProvider) {
86
+ // A resource named `<provider>_provider_functions` maps to the same
87
+ // providers/<provider>/provider-functions/ directory that the provider's
88
+ // functions submodule is emitted to, and would silently overwrite it.
89
+ const resourceIsNamedProviderFunctions =
90
+ !isProvider && baseName === "provider_functions";
91
+
92
+ if (
93
+ isReservedClassOrNamespaceName(baseName) ||
94
+ resourceIsNamedProvider ||
95
+ resourceIsNamedProviderFunctions
96
+ ) {
87
97
  return `${baseName}_resource`;
88
98
  } else {
89
99
  return baseName;
@@ -114,6 +124,7 @@ class Parser {
114
124
  constructor(
115
125
  private classNames: string[],
116
126
  private usedBaseNames: Map<string, string>,
127
+ private targetVersions?: TerraformTargetVersions,
117
128
  ) {}
118
129
 
119
130
  private uniqueClassName(className: string): string {
@@ -285,6 +296,7 @@ class Parser {
285
296
  terraformSchemaType,
286
297
  structs: this.structs,
287
298
  configStructName,
299
+ targetVersions: this.targetVersions,
288
300
  });
289
301
 
290
302
  return resourceModel;
@@ -718,6 +730,8 @@ export class ResourceParser {
718
730
  private uniqueBaseNames: Map<string, string> = new Map();
719
731
  private resources: Record<string, ResourceModel> = {};
720
732
 
733
+ constructor(private readonly targetVersions?: TerraformTargetVersions) {}
734
+
721
735
  public parse(
722
736
  fqpn: FQPN,
723
737
  type: string,
@@ -729,7 +743,11 @@ export class ResourceParser {
729
743
  return this.resources[type];
730
744
  }
731
745
 
732
- const parser = new Parser(this.uniqueClassnames, this.uniqueBaseNames);
746
+ const parser = new Parser(
747
+ this.uniqueClassnames,
748
+ this.uniqueBaseNames,
749
+ this.targetVersions,
750
+ );
733
751
  const resource = parser.resourceFrom(
734
752
  fqpn,
735
753
  type,
package/tsconfig.json CHANGED
@@ -24,6 +24,10 @@
24
24
  "stripInternal": true,
25
25
  "skipLibCheck": true,
26
26
  "target": "ES2018",
27
+ "types": [
28
+ "node",
29
+ "jest"
30
+ ],
27
31
  "incremental": true,
28
32
  "esModuleInterop": true,
29
33
  "rootDir": "./src",