tfts 0.2.2 → 0.2.4

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 (50) hide show
  1. package/dist/src/cli/get.d.ts.map +1 -1
  2. package/dist/src/cli/get.js +34 -1
  3. package/dist/src/cli/get.js.map +1 -1
  4. package/dist/src/codegen/__tests__/fixtures.d.ts +5 -0
  5. package/dist/src/codegen/__tests__/fixtures.d.ts.map +1 -0
  6. package/dist/src/codegen/__tests__/fixtures.js +133 -0
  7. package/dist/src/codegen/__tests__/fixtures.js.map +1 -0
  8. package/dist/src/codegen/__tests__/generator.spec.js +233 -29
  9. package/dist/src/codegen/__tests__/generator.spec.js.map +1 -1
  10. package/dist/src/codegen/fn-generator.d.ts +22 -0
  11. package/dist/src/codegen/fn-generator.d.ts.map +1 -0
  12. package/dist/src/codegen/fn-generator.js +203 -0
  13. package/dist/src/codegen/fn-generator.js.map +1 -0
  14. package/dist/src/codegen/generator.d.ts +1 -5
  15. package/dist/src/codegen/generator.d.ts.map +1 -1
  16. package/dist/src/codegen/generator.js +368 -187
  17. package/dist/src/codegen/generator.js.map +1 -1
  18. package/dist/src/codegen/schema.d.ts +0 -2
  19. package/dist/src/codegen/schema.d.ts.map +1 -1
  20. package/dist/src/codegen/schema.js +0 -97
  21. package/dist/src/codegen/schema.js.map +1 -1
  22. package/dist/src/core/tokens.d.ts +8 -14
  23. package/dist/src/core/tokens.d.ts.map +1 -1
  24. package/dist/src/core/tokens.js +3 -3
  25. package/dist/src/core/tokens.js.map +1 -1
  26. package/dist/src/facade/datasource.d.ts +2 -2
  27. package/dist/src/facade/datasource.d.ts.map +1 -1
  28. package/dist/src/facade/datasource.js +2 -2
  29. package/dist/src/facade/datasource.js.map +1 -1
  30. package/dist/src/facade/resource.d.ts +2 -2
  31. package/dist/src/facade/resource.d.ts.map +1 -1
  32. package/dist/src/facade/resource.js +2 -2
  33. package/dist/src/facade/resource.js.map +1 -1
  34. package/dist/src/facade/stack.d.ts +1 -2
  35. package/dist/src/facade/stack.d.ts.map +1 -1
  36. package/dist/src/facade/stack.js +3 -1
  37. package/dist/src/facade/stack.js.map +1 -1
  38. package/dist/src/generated/fn.d.ts +599 -0
  39. package/dist/src/generated/fn.d.ts.map +1 -0
  40. package/dist/src/generated/fn.js +998 -0
  41. package/dist/src/generated/fn.js.map +1 -0
  42. package/dist/src/index.d.ts +5 -4
  43. package/dist/src/index.d.ts.map +1 -1
  44. package/dist/src/index.js +4 -3
  45. package/dist/src/index.js.map +1 -1
  46. package/package.json +3 -2
  47. package/dist/src/codegen/templates.d.ts +0 -13
  48. package/dist/src/codegen/templates.d.ts.map +0 -1
  49. package/dist/src/codegen/templates.js +0 -58
  50. package/dist/src/codegen/templates.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,MAAM,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAgChF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACxE,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAoBhC,CAAC"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAMlD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAuB,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAuClG,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,eAAO,MAAM,MAAM,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAgChF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACxE,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAoBhC,CAAC"}
@@ -1,9 +1,42 @@
1
1
  import { ok, err } from "neverthrow";
2
2
  import * as fs from "node:fs/promises";
3
3
  import { join, dirname } from "node:path";
4
+ import { execFile } from "node:child_process";
5
+ import { promisify } from "node:util";
6
+ import { tmpdir } from "node:os";
4
7
  import { readConfig } from "./config.js";
5
8
  import { generateProviderFiles } from "../codegen/generator.js";
6
- import { fetchProviderSchema } from "../codegen/schema.js";
9
+ import { parseProviderSchema } from "../codegen/schema.js";
10
+ const execFileAsync = promisify(execFile);
11
+ const fetchProviderSchema = async (source, version) => {
12
+ const tempDir = await fs.mkdtemp(join(tmpdir(), "tfts-"));
13
+ try {
14
+ const tfConfig = `
15
+ terraform {
16
+ required_providers {
17
+ provider = {
18
+ source = "${source}"
19
+ version = "${version === "latest" ? ">= 0" : version}"
20
+ }
21
+ }
22
+ }
23
+ `;
24
+ await fs.writeFile(join(tempDir, "main.tf"), tfConfig);
25
+ await execFileAsync("terraform", ["init"], { cwd: tempDir });
26
+ const { stdout } = await execFileAsync("terraform", ["providers", "schema", "-json"], {
27
+ cwd: tempDir,
28
+ });
29
+ const data = JSON.parse(stdout);
30
+ return parseProviderSchema(data);
31
+ }
32
+ catch (e) {
33
+ const message = e instanceof Error ? e.message : String(e);
34
+ return err({ kind: "schema", message });
35
+ }
36
+ finally {
37
+ await fs.rm(tempDir, { recursive: true, force: true });
38
+ }
39
+ };
7
40
  export const runGet = async (options) => {
8
41
  const configPath = options.configPath ?? "cdktf.json";
9
42
  const configResult = await readConfig(configPath);
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ProviderSchema } from "../schema.js";
2
+ export declare const simpleProvider: ProviderSchema;
3
+ export declare const multiwordProvider: ProviderSchema;
4
+ export declare const nestingModesProvider: ProviderSchema;
5
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../src/codegen/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,cAyD5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAyB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,cA+ClC,CAAC"}
@@ -0,0 +1,133 @@
1
+ export const simpleProvider = {
2
+ format_version: "1.0",
3
+ provider_schemas: {
4
+ "registry.terraform.io/hashicorp/simple": {
5
+ provider: {
6
+ attributes: {
7
+ api_key: { type: "string", required: true },
8
+ region: { type: "string", optional: true },
9
+ },
10
+ },
11
+ resource_schemas: {
12
+ simple_resource: {
13
+ version: 0,
14
+ block: {
15
+ attributes: {
16
+ id: { type: "string", computed: true },
17
+ name: { type: "string", required: true },
18
+ enabled: { type: "bool", optional: true },
19
+ count: { type: "number", optional: true },
20
+ tags: { type: ["map", "string"], optional: true },
21
+ },
22
+ block_types: {
23
+ config: {
24
+ nesting_mode: "single",
25
+ block: {
26
+ attributes: {
27
+ key: { type: "string", required: true },
28
+ value: { type: "string", optional: true },
29
+ },
30
+ },
31
+ },
32
+ items: {
33
+ nesting_mode: "list",
34
+ min_items: 1,
35
+ block: {
36
+ attributes: {
37
+ name: { type: "string", required: true },
38
+ },
39
+ },
40
+ },
41
+ },
42
+ },
43
+ },
44
+ },
45
+ data_source_schemas: {
46
+ simple_data: {
47
+ version: 0,
48
+ block: {
49
+ attributes: {
50
+ id: { type: "string", required: true },
51
+ name: { type: "string", computed: true },
52
+ },
53
+ },
54
+ },
55
+ },
56
+ },
57
+ },
58
+ };
59
+ export const multiwordProvider = {
60
+ format_version: "1.0",
61
+ provider_schemas: {
62
+ "registry.terraform.io/hashicorp/google": {
63
+ provider: { attributes: {} },
64
+ resource_schemas: {
65
+ google_alloydb_cluster: {
66
+ version: 0,
67
+ block: {
68
+ attributes: {
69
+ id: { type: "string", computed: true },
70
+ },
71
+ },
72
+ },
73
+ google_storage_bucket: {
74
+ version: 0,
75
+ block: {
76
+ attributes: {
77
+ name: { type: "string", required: true },
78
+ },
79
+ },
80
+ },
81
+ },
82
+ },
83
+ },
84
+ };
85
+ export const nestingModesProvider = {
86
+ format_version: "1.0",
87
+ provider_schemas: {
88
+ "registry.terraform.io/test/test": {
89
+ provider: { attributes: {} },
90
+ resource_schemas: {
91
+ test_resource: {
92
+ version: 0,
93
+ block: {
94
+ attributes: {
95
+ id: { type: "string", computed: true },
96
+ name: { type: "string", required: true },
97
+ secret_id: { type: "string", computed: true },
98
+ location: { type: "string", computed: true },
99
+ },
100
+ block_types: {
101
+ single_block: {
102
+ nesting_mode: "single",
103
+ block: {
104
+ attributes: { value: { type: "string", required: true } },
105
+ },
106
+ },
107
+ list_block: {
108
+ nesting_mode: "list",
109
+ block: {
110
+ attributes: { value: { type: "string", required: true } },
111
+ },
112
+ },
113
+ single_item_list: {
114
+ nesting_mode: "list",
115
+ max_items: 1,
116
+ block: {
117
+ attributes: { value: { type: "string", required: true } },
118
+ },
119
+ },
120
+ set_block: {
121
+ nesting_mode: "set",
122
+ block: {
123
+ attributes: { value: { type: "string", required: true } },
124
+ },
125
+ },
126
+ },
127
+ },
128
+ },
129
+ },
130
+ },
131
+ },
132
+ };
133
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../../src/codegen/__tests__/fixtures.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,239 @@
1
1
  import { test, expect, describe } from "bun:test";
2
- import { readFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { generateProvider, generateProviderFiles } from "../generator.js";
5
- import { parseProviderSchema } from "../schema.js";
6
- const loadFixture = (name) => {
7
- const path = join(import.meta.dir, "fixtures", `${name}.json`);
8
- const json = JSON.parse(readFileSync(path, "utf-8"));
9
- const result = parseProviderSchema(json);
10
- if (result.isErr()) {
11
- throw new Error(`Failed to parse fixture ${name}: ${result.error.message}`);
2
+ import { generateProviderFiles } from "../generator.js";
3
+ import { simpleProvider, multiwordProvider, nestingModesProvider } from "./fixtures.js";
4
+ const getContent = (files, path) => {
5
+ const content = files.get(path);
6
+ if (content === undefined) {
7
+ throw new Error(`File not found: ${path}`);
12
8
  }
13
- return result.value;
9
+ return content;
14
10
  };
15
- describe("generateProvider", () => {
16
- test("generates provider with resources and data sources", () => {
17
- const schema = loadFixture("simple-provider");
18
- const result = generateProvider("simple", schema);
19
- expect(result).toMatchSnapshot();
20
- });
21
- });
22
- describe("generateProviderFiles", () => {
23
- test("generates camelCase namespace names for multi-word resources", () => {
24
- const schema = loadFixture("multiword-provider");
25
- const files = generateProviderFiles("google", schema);
26
- const indexContent = files.get("index.ts");
27
- // Namespace names should be camelCase: alloydbCluster, storageBucket
28
- expect(indexContent).toContain("export * as alloydbCluster from");
29
- expect(indexContent).toContain("export * as storageBucket from");
30
- // Should NOT be all lowercase
31
- expect(indexContent).not.toContain("export * as alloydbcluster from");
32
- expect(indexContent).not.toContain("export * as storagebucket from");
11
+ describe("file structure", () => {
12
+ test("generates provider at provider/index.ts", () => {
13
+ const files = generateProviderFiles("simple", simpleProvider);
14
+ expect(files.has("provider/index.ts")).toBe(true);
15
+ });
16
+ test("generates resources at lib/{name}/index.ts", () => {
17
+ const files = generateProviderFiles("google", multiwordProvider);
18
+ expect(files.has("lib/alloydb-cluster/index.ts")).toBe(true);
19
+ expect(files.has("lib/storage-bucket/index.ts")).toBe(true);
20
+ });
21
+ test("generates data sources at lib/data-{name}/index.ts", () => {
22
+ const files = generateProviderFiles("simple", simpleProvider);
23
+ expect(files.has("lib/data-data/index.ts")).toBe(true);
24
+ });
25
+ test("generates index.ts with namespace exports", () => {
26
+ const files = generateProviderFiles("google", multiwordProvider);
27
+ const index = getContent(files, "index.ts");
28
+ expect(index).toContain('export * as provider from "./provider/index.js"');
29
+ expect(index).toContain('export * as alloydbCluster from "./lib/alloydb-cluster/index.js"');
30
+ expect(index).toContain('export * as storageBucket from "./lib/storage-bucket/index.js"');
31
+ });
32
+ });
33
+ describe("class naming", () => {
34
+ test("provider class: {Provider}Provider", () => {
35
+ const files = generateProviderFiles("simple", simpleProvider);
36
+ const content = getContent(files, "provider/index.ts");
37
+ expect(content).toContain("export class SimpleProvider extends TerraformProvider");
38
+ });
39
+ test("resource class: strips provider prefix, PascalCase", () => {
40
+ const files = generateProviderFiles("google", multiwordProvider);
41
+ const content = getContent(files, "lib/alloydb-cluster/index.ts");
42
+ expect(content).toContain("export class AlloydbCluster extends TerraformResource");
43
+ });
44
+ test("data source class: Data{Name}", () => {
45
+ const files = generateProviderFiles("simple", simpleProvider);
46
+ const content = getContent(files, "lib/data-data/index.ts");
47
+ expect(content).toContain("export class DataData extends TerraformDataSource");
48
+ });
49
+ });
50
+ describe("type naming", () => {
51
+ test("config type: {ClassName}Config", () => {
52
+ const files = generateProviderFiles("test", nestingModesProvider);
53
+ const content = getContent(files, "lib/resource/index.ts");
54
+ expect(content).toContain("export type ResourceConfig = {");
55
+ });
56
+ test("nested block type: {ClassName}{BlockName} (not {ClassName}Config{BlockName})", () => {
57
+ const files = generateProviderFiles("test", nestingModesProvider);
58
+ const content = getContent(files, "lib/resource/index.ts");
59
+ // Correct: ResourceSingleBlock
60
+ expect(content).toContain("export type ResourceSingleBlock = {");
61
+ expect(content).toContain("export type ResourceListBlock = {");
62
+ expect(content).toContain("export type ResourceSingleItemList = {");
63
+ expect(content).toContain("export type ResourceSetBlock = {");
64
+ // Wrong: ResourceConfigSingleBlock
65
+ expect(content).not.toContain("ResourceConfigSingleBlock");
66
+ expect(content).not.toContain("ResourceConfigListBlock");
67
+ });
68
+ test("collision: append A when type name exists", () => {
69
+ const files = generateProviderFiles("simple", simpleProvider);
70
+ const content = getContent(files, "lib/resource/index.ts");
71
+ // ResourceConfig exists for the config type
72
+ // Nested block "config" would also be ResourceConfig -> becomes ResourceConfigA
73
+ expect(content).toContain("export type ResourceConfigA = {");
74
+ expect(content).toContain("readonly config?: ResourceConfigA;");
75
+ });
76
+ });
77
+ describe("property naming", () => {
78
+ test("converts snake_case to camelCase", () => {
79
+ const files = generateProviderFiles("test", nestingModesProvider);
80
+ const content = getContent(files, "lib/resource/index.ts");
81
+ expect(content).toContain("readonly secretId?:");
82
+ expect(content).toContain("readonly singleBlock?:");
83
+ expect(content).toContain("readonly listBlock?:");
84
+ expect(content).toContain("readonly singleItemList?:");
85
+ expect(content).toContain("readonly setBlock?:");
86
+ });
87
+ test("uses snake_case in terraform attribute mapping", () => {
88
+ const files = generateProviderFiles("test", nestingModesProvider);
89
+ const content = getContent(files, "lib/resource/index.ts");
90
+ expect(content).toContain("secret_id: config.secretId");
91
+ expect(content).toContain("single_block: config.singleBlock");
92
+ });
93
+ });
94
+ describe("block nesting modes", () => {
95
+ test("single: generates T", () => {
96
+ const files = generateProviderFiles("test", nestingModesProvider);
97
+ const content = getContent(files, "lib/resource/index.ts");
98
+ expect(content).toContain("readonly singleBlock?: ResourceSingleBlock;");
99
+ expect(content).not.toContain("readonly singleBlock?: ResourceSingleBlock |");
100
+ });
101
+ test("list without max_items=1: generates readonly T[]", () => {
102
+ const files = generateProviderFiles("test", nestingModesProvider);
103
+ const content = getContent(files, "lib/resource/index.ts");
104
+ expect(content).toContain("readonly listBlock?: readonly ResourceListBlock[];");
105
+ });
106
+ test("set: generates readonly T[]", () => {
107
+ const files = generateProviderFiles("test", nestingModesProvider);
108
+ const content = getContent(files, "lib/resource/index.ts");
109
+ expect(content).toContain("readonly setBlock?: readonly ResourceSetBlock[];");
110
+ });
111
+ test("list with max_items=1: generates T | readonly T[]", () => {
112
+ const files = generateProviderFiles("test", nestingModesProvider);
113
+ const content = getContent(files, "lib/resource/index.ts");
114
+ expect(content).toContain("readonly singleItemList?: ResourceSingleItemList | readonly ResourceSingleItemList[];");
115
+ });
116
+ });
117
+ describe("constructor body", () => {
118
+ test("regular properties: tf_name: config.tsName", () => {
119
+ const files = generateProviderFiles("test", nestingModesProvider);
120
+ const content = getContent(files, "lib/resource/index.ts");
121
+ expect(content).toContain("secret_id: config.secretId,");
122
+ expect(content).toContain("single_block: config.singleBlock,");
123
+ });
124
+ test("max_items=1 blocks: array normalization", () => {
125
+ const files = generateProviderFiles("test", nestingModesProvider);
126
+ const content = getContent(files, "lib/resource/index.ts");
127
+ expect(content).toContain("single_item_list: config.singleItemList !== undefined ? (Array.isArray(config.singleItemList) ? config.singleItemList : [config.singleItemList]) : undefined,");
128
+ });
129
+ });
130
+ describe("getters", () => {
131
+ test("generates getters for all attributes", () => {
132
+ const files = generateProviderFiles("test", nestingModesProvider);
133
+ const content = getContent(files, "lib/resource/index.ts");
134
+ expect(content).toContain("get id(): TokenString {");
135
+ expect(content).toContain("get name(): TokenString {");
136
+ expect(content).toContain("get secretId(): TokenString {");
137
+ expect(content).toContain("get location(): TokenString {");
138
+ });
139
+ test("getter format: return this.getStringAttribute(tf_name)", () => {
140
+ const files = generateProviderFiles("test", nestingModesProvider);
141
+ const content = getContent(files, "lib/resource/index.ts");
142
+ expect(content).toContain('return this.getStringAttribute("secret_id");');
143
+ });
144
+ });
145
+ describe("attribute type mappings", () => {
146
+ test("string -> TfString in config", () => {
147
+ const files = generateProviderFiles("simple", simpleProvider);
148
+ const content = getContent(files, "lib/resource/index.ts");
149
+ expect(content).toContain("readonly name: TfString;");
150
+ });
151
+ test("bool -> TfBoolean in config", () => {
152
+ const files = generateProviderFiles("simple", simpleProvider);
153
+ const content = getContent(files, "lib/resource/index.ts");
154
+ expect(content).toContain("readonly enabled?: TfBoolean;");
155
+ });
156
+ test("number -> TfNumber in config", () => {
157
+ const files = generateProviderFiles("simple", simpleProvider);
158
+ const content = getContent(files, "lib/resource/index.ts");
159
+ expect(content).toContain("readonly count?: TfNumber;");
160
+ });
161
+ test('["map", "string"] -> TfStringMap in config', () => {
162
+ const files = generateProviderFiles("simple", simpleProvider);
163
+ const content = getContent(files, "lib/resource/index.ts");
164
+ expect(content).toContain("readonly tags?: TfStringMap;");
165
+ });
166
+ });
167
+ describe("optionality", () => {
168
+ test("required: true -> required property", () => {
169
+ const files = generateProviderFiles("simple", simpleProvider);
170
+ const content = getContent(files, "lib/resource/index.ts");
171
+ expect(content).toContain("readonly name: TfString;"); // no ?
172
+ });
173
+ test("optional: true -> optional property", () => {
174
+ const files = generateProviderFiles("simple", simpleProvider);
175
+ const content = getContent(files, "lib/resource/index.ts");
176
+ expect(content).toContain("readonly enabled?: TfBoolean;");
177
+ });
178
+ test("computed: true -> optional property", () => {
179
+ const files = generateProviderFiles("simple", simpleProvider);
180
+ const content = getContent(files, "lib/resource/index.ts");
181
+ expect(content).toContain("readonly id?: TfString;");
182
+ });
183
+ test("block with min_items undefined or 0 -> optional", () => {
184
+ const files = generateProviderFiles("test", nestingModesProvider);
185
+ const content = getContent(files, "lib/resource/index.ts");
186
+ expect(content).toContain("readonly singleBlock?:");
187
+ expect(content).toContain("readonly listBlock?:");
188
+ });
189
+ test("block with min_items >= 1 -> required", () => {
190
+ const files = generateProviderFiles("simple", simpleProvider);
191
+ const content = getContent(files, "lib/resource/index.ts");
192
+ // items has min_items: 1
193
+ expect(content).toContain("readonly items: readonly ResourceItems[];");
194
+ });
195
+ });
196
+ describe("input getters", () => {
197
+ test("generates *Input getters for non-computed attributes", () => {
198
+ const files = generateProviderFiles("simple", simpleProvider);
199
+ const content = getContent(files, "lib/resource/index.ts");
200
+ // Should have nameInput for required attribute
201
+ expect(content).toContain("get nameInput():");
202
+ // Should have enabledInput for optional attribute
203
+ expect(content).toContain("get enabledInput():");
204
+ // Should have countInput for optional number attribute
205
+ expect(content).toContain("get countInput():");
206
+ // Should have tagsInput for optional map attribute
207
+ expect(content).toContain("get tagsInput():");
208
+ });
209
+ test("does not generate *Input getters for computed-only attributes", () => {
210
+ const files = generateProviderFiles("simple", simpleProvider);
211
+ const content = getContent(files, "lib/resource/index.ts");
212
+ // id is computed-only, should not have idInput
213
+ expect(content).not.toContain("get idInput():");
214
+ });
215
+ test("*Input getter returns the config value type", () => {
216
+ const files = generateProviderFiles("simple", simpleProvider);
217
+ const content = getContent(files, "lib/resource/index.ts");
218
+ expect(content).toContain("get nameInput(): TfString | undefined {");
219
+ expect(content).toContain("return this._config.name;");
220
+ });
221
+ });
222
+ describe("importFrom static method", () => {
223
+ test("generates importFrom static method on resources", () => {
224
+ const files = generateProviderFiles("simple", simpleProvider);
225
+ const content = getContent(files, "lib/resource/index.ts");
226
+ expect(content).toContain("static importFrom(");
227
+ });
228
+ test("importFrom has correct signature", () => {
229
+ const files = generateProviderFiles("simple", simpleProvider);
230
+ const content = getContent(files, "lib/resource/index.ts");
231
+ expect(content).toContain("static importFrom(scope: Construct, id: string, resourceId: TfString, provider?: TerraformProvider):");
232
+ });
233
+ test("importFrom returns instance with import lifecycle", () => {
234
+ const files = generateProviderFiles("simple", simpleProvider);
235
+ const content = getContent(files, "lib/resource/index.ts");
236
+ expect(content).toContain("lifecycle: { importId: resourceId }");
33
237
  });
34
238
  });
35
239
  //# sourceMappingURL=generator.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.spec.js","sourceRoot":"","sources":["../../../../src/codegen/__tests__/generator.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAuB,MAAM,cAAc,CAAC;AAExE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAkB,EAAE;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,qEAAqE;QACrE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAEjE,8BAA8B;QAC9B,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"generator.spec.js","sourceRoot":"","sources":["../../../../src/codegen/__tests__/generator.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ type ParameterType = "string" | "number" | "bool" | "dynamic" | readonly ["list", ParameterType] | readonly ["set", ParameterType] | readonly ["map", ParameterType] | readonly ["object", Readonly<Record<string, ParameterType>>] | readonly ["tuple", readonly ParameterType[]];
3
+ declare const FunctionsMetadataSchema: z.ZodObject<{
4
+ format_version: z.ZodString;
5
+ function_signatures: z.ZodRecord<z.ZodString, z.ZodObject<{
6
+ description: z.ZodString;
7
+ return_type: z.ZodType<ParameterType, unknown, z.core.$ZodTypeInternals<ParameterType, unknown>>;
8
+ parameters: z.ZodOptional<z.ZodArray<z.ZodObject<{
9
+ name: z.ZodString;
10
+ type: z.ZodType<ParameterType, unknown, z.core.$ZodTypeInternals<ParameterType, unknown>>;
11
+ }, z.core.$strip>>>;
12
+ variadic_parameter: z.ZodOptional<z.ZodObject<{
13
+ name: z.ZodString;
14
+ type: z.ZodType<ParameterType, unknown, z.core.$ZodTypeInternals<ParameterType, unknown>>;
15
+ }, z.core.$strip>>;
16
+ }, z.core.$strip>>;
17
+ }, z.core.$strip>;
18
+ export type FunctionsMetadata = z.infer<typeof FunctionsMetadataSchema>;
19
+ export declare const parseFunctionsMetadata: (data: unknown) => FunctionsMetadata;
20
+ export declare const generateFnClass: (metadata: FunctionsMetadata) => string;
21
+ export {};
22
+ //# sourceMappingURL=fn-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn-generator.d.ts","sourceRoot":"","sources":["../../../src/codegen/fn-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,aAAa,GACd,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,GAChC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAC/B,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,GAC/B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAC5D,SAAS,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC,CAAC;AA8BjD,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;iBAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,sBAAsB,GAAI,MAAM,OAAO,KAAG,iBAClB,CAAC;AA+KtC,eAAO,MAAM,eAAe,GAAI,UAAU,iBAAiB,KAAG,MAmB7D,CAAC"}