@cdktn/provider-generator 0.24.0-pre.5 → 0.24.0-pre.50

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 (67) hide show
  1. package/.spec.swcrc +22 -0
  2. package/LICENSE +355 -0
  3. package/README.md +1 -1
  4. package/build/__tests__/edge-provider-schema/cli.js +8 -3
  5. package/build/get/__tests__/generator/import-style.test.d.ts +2 -0
  6. package/build/get/__tests__/generator/import-style.test.js +101 -0
  7. package/build/get/__tests__/generator/module-generator.test.js +12 -12
  8. package/build/get/constructs-maker.d.ts +5 -1
  9. package/build/get/constructs-maker.js +14 -6
  10. package/build/get/generator/emitter/struct-emitter.d.ts +2 -1
  11. package/build/get/generator/emitter/struct-emitter.js +14 -11
  12. package/build/get/generator/module-generator.js +3 -3
  13. package/build/get/generator/provider-generator.d.ts +9 -1
  14. package/build/get/generator/provider-generator.js +9 -6
  15. package/jest.config.js +16 -9
  16. package/package.json +24 -23
  17. package/package.sh +1 -1
  18. package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +8 -8
  19. package/src/__tests__/__snapshots__/provider.test.ts.snap +2951 -2951
  20. package/src/__tests__/edge-provider-schema/builder.ts +185 -0
  21. package/src/__tests__/edge-provider-schema/cli.ts +51 -0
  22. package/src/__tests__/edge-provider-schema/index.ts +161 -0
  23. package/src/__tests__/edge-provider-schema.test.ts +24 -0
  24. package/src/__tests__/provider.test.ts +180 -0
  25. package/src/get/__tests__/constructs-maker.test.ts +118 -0
  26. package/src/get/__tests__/generator/__snapshots__/complex-computed-types.test.ts.snap +5 -5
  27. package/src/get/__tests__/generator/__snapshots__/export-sharding.test.ts.snap +3310 -3310
  28. package/src/get/__tests__/generator/__snapshots__/module-generator.test.ts.snap +355 -355
  29. package/src/get/__tests__/generator/__snapshots__/nested-types.test.ts.snap +8 -8
  30. package/src/get/__tests__/generator/__snapshots__/provider.test.ts.snap +8 -8
  31. package/src/get/__tests__/generator/__snapshots__/resource-types.test.ts.snap +126 -126
  32. package/src/get/__tests__/generator/__snapshots__/skipped-attributes.test.ts.snap +17 -17
  33. package/src/get/__tests__/generator/__snapshots__/types.test.ts.snap +65 -65
  34. package/src/get/__tests__/generator/complex-computed-types.test.ts +28 -0
  35. package/src/get/__tests__/generator/deep-nested-attributes.test.ts +56 -0
  36. package/src/get/__tests__/generator/description-escaping.test.ts +84 -0
  37. package/src/get/__tests__/generator/empty-provider-resources.test.ts +26 -0
  38. package/src/get/__tests__/generator/export-sharding.test.ts +169 -0
  39. package/src/get/__tests__/generator/import-style.test.ts +129 -0
  40. package/src/get/__tests__/generator/module-generator.test.ts +528 -0
  41. package/src/get/__tests__/generator/nested-types.test.ts +54 -0
  42. package/src/get/__tests__/generator/provider.test.ts +51 -0
  43. package/src/get/__tests__/generator/resource-types.test.ts +118 -0
  44. package/src/get/__tests__/generator/skipped-attributes.test.ts +72 -0
  45. package/src/get/__tests__/generator/types.test.ts +611 -0
  46. package/src/get/__tests__/generator/versions-file.test.ts +72 -0
  47. package/src/get/__tests__/util.ts +75 -0
  48. package/src/get/constructs-maker.ts +822 -0
  49. package/src/get/generator/custom-defaults.ts +493 -0
  50. package/src/get/generator/emitter/attributes-emitter.ts +225 -0
  51. package/src/get/generator/emitter/index.ts +5 -0
  52. package/src/get/generator/emitter/resource-emitter.ts +226 -0
  53. package/src/get/generator/emitter/struct-emitter.ts +683 -0
  54. package/src/get/generator/loop-detection.ts +81 -0
  55. package/src/get/generator/models/attribute-model.ts +216 -0
  56. package/src/get/generator/models/attribute-type-model.ts +448 -0
  57. package/src/get/generator/models/index.ts +7 -0
  58. package/src/get/generator/models/resource-model.ts +161 -0
  59. package/src/get/generator/models/scope.ts +54 -0
  60. package/src/get/generator/models/struct.ts +116 -0
  61. package/src/get/generator/module-generator.ts +234 -0
  62. package/src/get/generator/provider-generator.ts +355 -0
  63. package/src/get/generator/resource-parser.ts +762 -0
  64. package/src/get/generator/sanitized-comments.ts +49 -0
  65. package/src/get/generator/skipped-attributes.ts +27 -0
  66. package/src/index.ts +40 -0
  67. package/src/util.ts +26 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ import { CodeMaker } from "codemaker";
7
+
8
+ export function sanitizedComment(code: CodeMaker) {
9
+ let wasSanitized = false;
10
+ code.line(`/**`);
11
+ return {
12
+ line: (comment: string | number | string[] | object) => {
13
+ // objects can not be valid comments
14
+ if (typeof comment === "object" && !Array.isArray(comment)) {
15
+ return;
16
+ }
17
+
18
+ const stringified = Array.isArray(comment)
19
+ ? comment.join("\n")
20
+ : comment.toLocaleString();
21
+
22
+ const sanitized =
23
+ typeof stringified === "string"
24
+ ? stringified.replace(/\*\//g, "* /")
25
+ : stringified;
26
+
27
+ if (sanitized === "") {
28
+ code.line(`*`);
29
+ return;
30
+ }
31
+
32
+ if (sanitized !== stringified) {
33
+ wasSanitized = true;
34
+ }
35
+ sanitized.split("\n").forEach((line) => {
36
+ code.line(`* ${line}`);
37
+ });
38
+ },
39
+ end: () => {
40
+ if (wasSanitized) {
41
+ code.line(` *`);
42
+ code.line(
43
+ "* Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.",
44
+ );
45
+ }
46
+ code.line(`*/`);
47
+ },
48
+ };
49
+ }
@@ -0,0 +1,27 @@
1
+ // Copyright (c) HashiCorp, Inc
2
+ // SPDX-License-Identifier: MPL-2.0
3
+
4
+ /**
5
+ * There are large attributes on little used resources that blow up the
6
+ * size and compile time of the generated providers by a lot.
7
+ * To mitigate this issue we replace their entire tree of attributes with
8
+ * a single any attribute. This can still be used, although less conveniently.
9
+ */
10
+ const SKIPPED_ATTRIBUTES: string[] = [
11
+ "aws.quicksight_template.definition",
12
+ "aws.quicksight_dashboard.definition",
13
+ "aws.quicksight_analysis.definition",
14
+ "aws.data_aws_quicksight_analysis.definition",
15
+ "aws.wafv2_web_acl.wafv2_web_acl_rule.statement",
16
+ "aws.wafv2_rule_group.wafv2_rule_group_rule.statement",
17
+
18
+ "oci.data_oci_objectstorage_private_endpoint.fqdns",
19
+ "oci.data_oci_objectstorage_private_endpoint_summaries.private_endpoint_summaries.fqdns",
20
+ ];
21
+
22
+ /**
23
+ * We skip some deeply nested attributes to shorten the generated code.
24
+ */
25
+ export function shouldSkipAttribute(terraformFullName: string) {
26
+ return SKIPPED_ATTRIBUTES.includes(terraformFullName);
27
+ }
package/src/index.ts ADDED
@@ -0,0 +1,40 @@
1
+ // Copyright (c) HashiCorp, Inc
2
+ // SPDX-License-Identifier: MPL-2.0
3
+ export * from "./get/constructs-maker";
4
+ export {
5
+ isRegistryModule,
6
+ TerraformModuleConstraint,
7
+ TerraformProviderConstraint,
8
+ isLocalModule,
9
+ } from "@cdktn/commons";
10
+ export { sanitizeClassOrNamespaceName } from "./get/generator/resource-parser";
11
+
12
+ import { CodeMaker } from "codemaker";
13
+ import {
14
+ GenerateJSIIOptions,
15
+ generateJsiiLanguage,
16
+ } from "./get/constructs-maker";
17
+ export { escapeAttributeName } from "./get/generator/models";
18
+ import { TerraformProviderGenerator } from "./get/generator/provider-generator";
19
+ import { ProviderSchema } from "@cdktn/commons";
20
+
21
+ export { TerraformProviderGenerator, CodeMaker };
22
+
23
+ // Used for testing only
24
+ export async function generateProviderBindingsFromSchema(
25
+ targetPath: string,
26
+ schemaJSON: ProviderSchema,
27
+ options?: GenerateJSIIOptions,
28
+ ): Promise<void> {
29
+ const code = new CodeMaker();
30
+ const generator = new TerraformProviderGenerator(code, schemaJSON);
31
+ generator.generateAll();
32
+
33
+ await code.save(targetPath);
34
+
35
+ if (options) {
36
+ await generateJsiiLanguage(code, options, targetPath);
37
+ }
38
+ }
39
+
40
+ // Used for convert
package/src/util.ts ADDED
@@ -0,0 +1,26 @@
1
+ // Copyright (c) HashiCorp, Inc
2
+ // SPDX-License-Identifier: MPL-2.0
3
+
4
+ /**
5
+ * Downcase the first character in a string.
6
+ *
7
+ * @param str the string to be processed.
8
+ */
9
+ export function downcaseFirst(str: string): string {
10
+ if (str === "") {
11
+ return str;
12
+ }
13
+ return `${str[0].toLocaleLowerCase()}${str.slice(1)}`;
14
+ }
15
+
16
+ /**
17
+ * Uppercase the first character in a string.
18
+ *
19
+ * @param str the string to be processed.
20
+ */
21
+ export function uppercaseFirst(str: string): string {
22
+ if (str === "") {
23
+ return str;
24
+ }
25
+ return `${str[0].toLocaleUpperCase()}${str.slice(1)}`;
26
+ }