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,205 +1,386 @@
1
- import { parseSchemaType } from "./schema.js";
2
- import { resourceTemplate, providerTemplate, dataSourceTemplate, configInterfaceTemplate, } from "./templates.js";
3
- const RESOURCE_IMPORTS = `import type { Construct, TokenString, TerraformResourceConfig, TfString, TfNumber, TfBoolean, TfStringList, TfNumberList, TfStringMap } from "tfts";
4
- import { TerraformResource } from "tfts";`;
5
- const DATASOURCE_IMPORTS = `import type { Construct, TokenString, TerraformDataSourceConfig, TfString, TfNumber, TfBoolean, TfStringList, TfNumberList, TfStringMap } from "tfts";
6
- import { TerraformDataSource } from "tfts";`;
7
- const PROVIDER_IMPORTS = `import type { Construct, TerraformProviderConfig, TfString, TfNumber, TfBoolean, TfStringList, TfNumberList, TfStringMap } from "tfts";
8
- import { TerraformProvider } from "tfts";`;
9
- // Properties defined in base classes that cannot be overridden
1
+ // --- Naming utilities ---
2
+ const snakeToCamelCase = (str) => str.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
3
+ const snakeToPascalCase = (str) => {
4
+ const camel = snakeToCamelCase(str);
5
+ return camel.charAt(0).toUpperCase() + camel.slice(1);
6
+ };
7
+ const snakeToKebabCase = (str) => str.replace(/_/g, "-");
8
+ const stripProviderPrefix = (name, providerName) => {
9
+ const prefix = `${providerName}_`;
10
+ return name.startsWith(prefix) ? name.slice(prefix.length) : name;
11
+ };
12
+ // --- Type mapping ---
13
+ const mapSchemaTypeToTsConfig = (type) => {
14
+ if (typeof type === "string") {
15
+ switch (type) {
16
+ case "string":
17
+ return "TfString";
18
+ case "number":
19
+ return "TfNumber";
20
+ case "bool":
21
+ return "TfBoolean";
22
+ case "dynamic":
23
+ return "unknown";
24
+ }
25
+ }
26
+ if (Array.isArray(type)) {
27
+ const [container, inner] = type;
28
+ switch (container) {
29
+ case "list":
30
+ if (inner === "string")
31
+ return "TfStringList";
32
+ if (inner === "number")
33
+ return "TfNumberList";
34
+ return `readonly ${mapSchemaTypeToTsConfig(inner)}[]`;
35
+ case "set":
36
+ if (inner === "string")
37
+ return "TfStringList";
38
+ if (inner === "number")
39
+ return "TfNumberList";
40
+ return `readonly ${mapSchemaTypeToTsConfig(inner)}[]`;
41
+ case "map":
42
+ if (inner === "string")
43
+ return "TfStringMap";
44
+ return `Readonly<Record<string, ${mapSchemaTypeToTsConfig(inner)}>>`;
45
+ case "object":
46
+ return "unknown";
47
+ case "tuple":
48
+ return "unknown";
49
+ }
50
+ }
51
+ return "unknown";
52
+ };
53
+ const createTypeNameRegistry = () => ({
54
+ usedNames: new Set(),
55
+ blockTypeNames: new Map(),
56
+ });
57
+ const registerTypeName = (registry, name) => {
58
+ let finalName = name;
59
+ while (registry.usedNames.has(finalName)) {
60
+ finalName = `${finalName}A`;
61
+ }
62
+ registry.usedNames.add(finalName);
63
+ return finalName;
64
+ };
65
+ const registerBlockTypeName = (registry, baseName) => {
66
+ const actualName = registerTypeName(registry, baseName);
67
+ registry.blockTypeNames.set(baseName, actualName);
68
+ return actualName;
69
+ };
70
+ const getBlockTypeName = (registry, baseName) => registry.blockTypeNames.get(baseName) ?? baseName;
71
+ const isPropertyOptional = (attr) => attr.required !== true || attr.optional === true || attr.computed === true;
72
+ const isInputAttribute = (attr) => attr.required === true || attr.optional === true;
73
+ const isBlockOptional = (block) => block.min_items === undefined || block.min_items === 0;
74
+ const getBlockPropertyType = (block, typeName) => {
75
+ if (block.nesting_mode === "single") {
76
+ return typeName;
77
+ }
78
+ if ((block.nesting_mode === "list" || block.nesting_mode === "set") && block.max_items === 1) {
79
+ return `${typeName} | readonly ${typeName}[]`;
80
+ }
81
+ return `readonly ${typeName}[]`;
82
+ };
83
+ const getBlockConstructorValue = (block, tfName, tsName) => {
84
+ if ((block.nesting_mode === "list" || block.nesting_mode === "set") && block.max_items === 1) {
85
+ return `${tfName}: config.${tsName} !== undefined ? (Array.isArray(config.${tsName}) ? config.${tsName} : [config.${tsName}]) : undefined,`;
86
+ }
87
+ return `${tfName}: config.${tsName},`;
88
+ };
89
+ // Reserved property names that should not have getters generated
10
90
  const RESERVED_NAMES = new Set([
11
91
  "node",
12
- "path",
13
- "terraformResourceType",
14
- "friendlyUniqueId",
15
- "terraformGeneratorMetadata",
16
- "connection",
17
- "count",
92
+ "provider",
18
93
  "dependsOn",
94
+ "count",
19
95
  "forEach",
20
96
  "lifecycle",
21
- "provider",
22
- "provisioners",
23
97
  "fqn",
98
+ "terraformResourceType",
99
+ "terraformGeneratorMetadata",
100
+ "connection",
101
+ "provisioners",
24
102
  ]);
25
- export const generateProviderFiles = (name, schema) => {
26
- const entries = Object.entries(schema.provider_schemas);
27
- if (entries.length === 0) {
28
- return new Map([["index.ts", `// No schema available for provider ${name}\nexport {};\n`]]);
103
+ const generateBlockTypes = (block, className, registry) => {
104
+ const result = [];
105
+ if (!block.block_types) {
106
+ return result;
29
107
  }
30
- const firstEntry = entries[0];
31
- if (firstEntry === undefined) {
32
- return new Map([["index.ts", `// No schema available for provider ${name}\nexport {};\n`]]);
108
+ for (const [name, blockType] of Object.entries(block.block_types)) {
109
+ const baseName = `${className}${snakeToPascalCase(name)}`;
110
+ const blockTypeName = registerBlockTypeName(registry, baseName);
111
+ // Recursively generate nested block types
112
+ const nestedTypes = generateBlockTypes(blockType.block, blockTypeName, registry);
113
+ result.push(...nestedTypes);
114
+ // Generate the block type itself
115
+ const properties = [];
116
+ if (blockType.block.attributes) {
117
+ for (const [attrName, attr] of Object.entries(blockType.block.attributes)) {
118
+ const tsName = snakeToCamelCase(attrName);
119
+ const tsType = mapSchemaTypeToTsConfig(attr.type);
120
+ const optional = isPropertyOptional(attr) ? "?" : "";
121
+ properties.push(` readonly ${tsName}${optional}: ${tsType};`);
122
+ }
123
+ }
124
+ if (blockType.block.block_types) {
125
+ for (const [nestedName, nestedBlock] of Object.entries(blockType.block.block_types)) {
126
+ const tsName = snakeToCamelCase(nestedName);
127
+ const nestedTypeName = `${blockTypeName}${snakeToPascalCase(nestedName)}`;
128
+ const propType = getBlockPropertyType(nestedBlock, nestedTypeName);
129
+ const optional = isBlockOptional(nestedBlock) ? "?" : "";
130
+ properties.push(` readonly ${tsName}${optional}: ${propType};`);
131
+ }
132
+ }
133
+ const code = `export type ${blockTypeName} = {
134
+ ${properties.join("\n")}
135
+ };`;
136
+ result.push({ typeName: blockTypeName, code });
33
137
  }
34
- const [source, entry] = firstEntry;
35
- const providerName = snakeToPascalCase(name);
36
- const files = new Map();
37
- const namespaceExports = [];
38
- // Provider file (in provider/ subdirectory)
39
- const providerConfig = generateConfigWithNestedTypes(`${providerName}ProviderConfig`, entry.provider, "TerraformProviderConfig");
40
- const providerClass = providerTemplate(providerName, source, providerConfig.props);
41
- const providerContent = [PROVIDER_IMPORTS, ...providerConfig.types, providerClass].join("\n\n");
42
- files.set("provider/index.ts", providerContent);
43
- namespaceExports.push(`export * as provider from "./provider/index.js";`);
44
- // Resource files (each in its own subdirectory)
45
- for (const [resourceName, resourceSchema] of Object.entries(entry.resource_schemas ?? {})) {
46
- const className = terraformNameToClassName(resourceName);
47
- const dirName = terraformNameToFileName(resourceName);
48
- const namespaceName = pascalToCamelCase(className);
49
- const config = generateConfigWithNestedTypes(`${className}Config`, resourceSchema.block, "TerraformResourceConfig");
50
- const resourceClass = resourceTemplate(className, resourceName, config.props, config.getters);
51
- const content = [RESOURCE_IMPORTS, ...config.types, resourceClass].join("\n\n");
52
- files.set(`${dirName}/index.ts`, content);
53
- namespaceExports.push(`export * as ${namespaceName} from "./${dirName}/index.js";`);
54
- }
55
- // Data source files (each in its own subdirectory)
56
- for (const [dataSourceName, dataSourceSchema] of Object.entries(entry.data_source_schemas ?? {})) {
57
- const baseClassName = terraformNameToClassName(dataSourceName);
58
- const className = `Data${baseClassName}`;
59
- const dirName = `data-${terraformNameToFileName(dataSourceName)}`;
60
- const namespaceName = `data${baseClassName}`;
61
- const config = generateConfigWithNestedTypes(`${className}Config`, dataSourceSchema.block, "TerraformDataSourceConfig");
62
- const dataSourceClass = dataSourceTemplate(className, dataSourceName, config.props, config.getters);
63
- const content = [DATASOURCE_IMPORTS, ...config.types, dataSourceClass].join("\n\n");
64
- files.set(`${dirName}/index.ts`, content);
65
- namespaceExports.push(`export * as ${namespaceName} from "./${dirName}/index.js";`);
66
- }
67
- // Index file with namespace exports
68
- files.set("index.ts", namespaceExports.join("\n") + "\n");
69
- return files;
138
+ return result;
70
139
  };
71
- // Legacy single-file generator (kept for backward compatibility)
72
- export const generateProvider = (name, schema) => {
73
- const files = generateProviderFiles(name, schema);
74
- // Combine all files except index.ts into one
75
- const parts = [];
76
- for (const [fileName, content] of files) {
77
- if (fileName !== "index.ts") {
78
- // Strip imports from non-first files to avoid duplicates
79
- if (parts.length === 0) {
80
- parts.push(content);
81
- }
82
- else {
83
- const lines = content.split("\n");
84
- const nonImportLines = lines.filter((line) => !line.startsWith("import ") && line.trim() !== "");
85
- parts.push(nonImportLines.join("\n"));
140
+ const generateImports = (baseClass, baseConfig, block, includeProvider = false) => {
141
+ const types = new Set(["Construct", "TokenString", baseConfig]);
142
+ types.add(baseClass);
143
+ if (includeProvider) {
144
+ types.add("TerraformProvider");
145
+ }
146
+ if (block.attributes) {
147
+ for (const attr of Object.values(block.attributes)) {
148
+ const tsType = mapSchemaTypeToTsConfig(attr.type);
149
+ if (tsType.startsWith("Tf") ||
150
+ tsType === "TfString" ||
151
+ tsType === "TfNumber" ||
152
+ tsType === "TfBoolean" ||
153
+ tsType === "TfStringList" ||
154
+ tsType === "TfNumberList" ||
155
+ tsType === "TfStringMap") {
156
+ types.add(tsType);
86
157
  }
87
158
  }
88
159
  }
89
- return parts.join("\n\n");
90
- };
91
- export const generateResource = (name, schema) => {
92
- const className = terraformNameToClassName(name);
93
- const config = generateConfigInterface(`${className}Config`, schema.block);
94
- return `${config.code}\n\n${resourceTemplate(className, name, config.props)}`;
95
- };
96
- export const generateDataSource = (name, schema) => {
97
- const className = `Data${terraformNameToClassName(name)}`;
98
- const config = generateConfigInterface(`${className}Config`, schema.block);
99
- return `${config.code}\n\n${dataSourceTemplate(className, name, config.props)}`;
100
- };
101
- export const generateConfig = (name, schema) => {
102
- return generateConfigInterface(name, schema).code;
103
- };
104
- const generateConfigInterface = (name, block) => {
105
- const attrEntries = Object.entries(block.attributes ?? {});
106
- const blockEntries = Object.entries(block.block_types ?? {});
107
- const attrProps = attrEntries.map(([attrName]) => ({
108
- tfName: toTfName(attrName),
109
- tsName: snakeToCamelCase(attrName),
110
- }));
111
- const attrLines = attrEntries.map(([attrName, attr]) => {
112
- const tsType = parseSchemaType(attr.type);
113
- const optional = attr.optional === true || attr.computed === true;
114
- const propName = snakeToCamelCase(attrName);
115
- return ` readonly ${propName}${optional ? "?" : ""}: ${tsType};`;
116
- });
117
- const blockProps = blockEntries.map(([blockName]) => ({
118
- tfName: toTfName(blockName),
119
- tsName: snakeToCamelCase(blockName),
120
- }));
121
- const blockLines = blockEntries.map(([blockName, blockType]) => {
122
- const nestedName = `${name}${snakeToPascalCase(blockName)}`;
123
- const propName = snakeToCamelCase(blockName);
124
- const isList = blockType.nesting_mode === "list" || blockType.nesting_mode === "set";
125
- const isOptional = blockType.min_items === undefined || blockType.min_items === 0;
126
- return isList
127
- ? ` readonly ${propName}${isOptional ? "?" : ""}: readonly ${nestedName}[];`
128
- : ` readonly ${propName}${isOptional ? "?" : ""}: ${nestedName};`;
129
- });
130
- return {
131
- code: configInterfaceTemplate(name, [...attrLines, ...blockLines]),
132
- props: [...attrProps, ...blockProps],
160
+ const collectBlockTypes = (b) => {
161
+ if (b.block_types) {
162
+ for (const blockType of Object.values(b.block_types)) {
163
+ if (blockType.block.attributes) {
164
+ for (const attr of Object.values(blockType.block.attributes)) {
165
+ const tsType = mapSchemaTypeToTsConfig(attr.type);
166
+ if (tsType.startsWith("Tf")) {
167
+ types.add(tsType);
168
+ }
169
+ }
170
+ }
171
+ collectBlockTypes(blockType.block);
172
+ }
173
+ }
133
174
  };
175
+ collectBlockTypes(block);
176
+ const sortedTypes = Array.from(types).sort();
177
+ return `import type { ${sortedTypes.join(", ")} } from "tfts";
178
+ import { ${baseClass} } from "tfts";`;
134
179
  };
135
- const generateConfigWithNestedTypes = (name, block, baseType) => {
136
- const attrEntries = Object.entries(block.attributes ?? {});
137
- const blockEntries = Object.entries(block.block_types ?? {});
138
- const attrProps = attrEntries.map(([attrName]) => ({
139
- tfName: toTfName(attrName),
140
- tsName: snakeToCamelCase(attrName),
141
- }));
142
- const attrLines = attrEntries.map(([attrName, attr]) => {
143
- const tsType = parseSchemaType(attr.type);
144
- const optional = attr.optional === true || attr.computed === true;
145
- const propName = snakeToCamelCase(attrName);
146
- return ` readonly ${propName}${optional ? "?" : ""}: ${tsType};`;
147
- });
148
- // Collect getters for computed attributes (excluding reserved names)
149
- const getters = attrEntries
150
- .filter(([attrName, attr]) => attr.computed === true && !RESERVED_NAMES.has(snakeToCamelCase(attrName)))
151
- .map(([attrName]) => ({ tfName: toTfName(attrName), tsName: snakeToCamelCase(attrName) }));
152
- const blockProps = blockEntries.map(([blockName]) => ({
153
- tfName: toTfName(blockName),
154
- tsName: snakeToCamelCase(blockName),
155
- }));
156
- const blockLines = blockEntries.map(([blockName, blockType]) => {
157
- const nestedName = `${name}${snakeToPascalCase(blockName)}`;
158
- const propName = snakeToCamelCase(blockName);
159
- const isList = blockType.nesting_mode === "list" || blockType.nesting_mode === "set";
160
- const isOptional = blockType.min_items === undefined || blockType.min_items === 0;
161
- return isList
162
- ? ` readonly ${propName}${isOptional ? "?" : ""}: readonly ${nestedName}[];`
163
- : ` readonly ${propName}${isOptional ? "?" : ""}: ${nestedName};`;
164
- });
165
- const nestedTypes = blockEntries.flatMap(([blockName, blockType]) => {
166
- const nestedName = `${name}${snakeToPascalCase(blockName)}`;
167
- return generateConfigWithNestedTypes(nestedName, blockType.block).types;
168
- });
169
- return {
170
- types: [...nestedTypes, configInterfaceTemplate(name, [...attrLines, ...blockLines], baseType)],
171
- props: [...attrProps, ...blockProps],
172
- getters,
173
- };
180
+ const generateConfigTypeWithName = (configTypeName, className, block, baseConfig, registry) => {
181
+ const properties = [];
182
+ if (block.attributes) {
183
+ for (const [name, attr] of Object.entries(block.attributes)) {
184
+ const tsName = snakeToCamelCase(name);
185
+ const tsType = mapSchemaTypeToTsConfig(attr.type);
186
+ const optional = isPropertyOptional(attr) ? "?" : "";
187
+ properties.push(` readonly ${tsName}${optional}: ${tsType};`);
188
+ }
189
+ }
190
+ if (block.block_types) {
191
+ for (const [name, blockType] of Object.entries(block.block_types)) {
192
+ const tsName = snakeToCamelCase(name);
193
+ const baseName = `${className}${snakeToPascalCase(name)}`;
194
+ const actualBlockTypeName = getBlockTypeName(registry, baseName);
195
+ const propType = getBlockPropertyType(blockType, actualBlockTypeName);
196
+ const optional = isBlockOptional(blockType) ? "?" : "";
197
+ properties.push(` readonly ${tsName}${optional}: ${propType};`);
198
+ }
199
+ }
200
+ return `export type ${configTypeName} = {
201
+ ${properties.join("\n")}
202
+ } & ${baseConfig};`;
174
203
  };
175
- const snakeToPascalCase = (s) => {
176
- return s
177
- .split(/[-_]/)
178
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
179
- .join("");
180
- };
181
- const snakeToCamelCase = (s) => {
182
- const pascal = snakeToPascalCase(s);
183
- return pascal.charAt(0).toLowerCase() + pascal.slice(1);
184
- };
185
- const pascalToCamelCase = (s) => {
186
- return s.charAt(0).toLowerCase() + s.slice(1);
187
- };
188
- const toTfName = (s) => {
189
- return s.replace(/-/g, "_");
190
- };
191
- const terraformNameToClassName = (name) => {
192
- // google_storage_bucket -> StorageBucket (strip provider prefix)
193
- // random_password -> Password
194
- const parts = name.split("_");
195
- // Remove first part (provider name)
196
- const withoutProvider = parts.slice(1).join("_");
197
- return snakeToPascalCase(withoutProvider || name);
198
- };
199
- const terraformNameToFileName = (name) => {
200
- // google_storage_bucket -> storage-bucket
201
- const parts = name.split("_");
202
- const withoutProvider = parts.slice(1).join("-");
203
- return withoutProvider || name.replace(/_/g, "-");
204
+ const generateConfigType = (className, block, baseConfig, registry) => {
205
+ const configTypeName = registerTypeName(registry, `${className}Config`);
206
+ return generateConfigTypeWithName(configTypeName, className, block, baseConfig, registry);
207
+ };
208
+ const generateConstructorBody = (block) => {
209
+ const lines = [];
210
+ if (block.attributes) {
211
+ for (const name of Object.keys(block.attributes)) {
212
+ const tsName = snakeToCamelCase(name);
213
+ lines.push(` ${name}: config.${tsName},`);
214
+ }
215
+ }
216
+ if (block.block_types) {
217
+ for (const [name, blockType] of Object.entries(block.block_types)) {
218
+ const tsName = snakeToCamelCase(name);
219
+ lines.push(` ${getBlockConstructorValue(blockType, name, tsName)}`);
220
+ }
221
+ }
222
+ return lines.join("\n");
223
+ };
224
+ const generateGetters = (block) => Object.keys(block.attributes ?? {})
225
+ .filter((name) => !RESERVED_NAMES.has(snakeToCamelCase(name)))
226
+ .map((name) => {
227
+ const tsName = snakeToCamelCase(name);
228
+ return ` get ${tsName}(): TokenString {
229
+ return this.getStringAttribute("${name}");
230
+ }`;
231
+ })
232
+ .join("\n\n");
233
+ const generateInputGetters = (block) => Object.entries(block.attributes ?? {})
234
+ .filter(([, attr]) => isInputAttribute(attr))
235
+ .map(([name, attr]) => {
236
+ const tsName = snakeToCamelCase(name);
237
+ const tsType = mapSchemaTypeToTsConfig(attr.type);
238
+ return ` get ${tsName}Input(): ${tsType} | undefined {
239
+ return this._config.${tsName};
240
+ }`;
241
+ })
242
+ .join("\n\n");
243
+ // --- Provider generation ---
244
+ const generateProviderClass = (providerName, source, block) => {
245
+ const className = `${snakeToPascalCase(providerName)}Provider`;
246
+ const registry = createTypeNameRegistry();
247
+ registry.usedNames.add(className);
248
+ const blockTypes = generateBlockTypes(block, className, registry);
249
+ const imports = generateImports("TerraformProvider", "TerraformProviderConfig", block);
250
+ const configType = generateConfigType(className, block, "TerraformProviderConfig", registry);
251
+ const constructorBody = generateConstructorBody(block);
252
+ const getters = generateGetters(block);
253
+ const blockTypeCode = blockTypes.length > 0 ? blockTypes.map((bt) => bt.code).join("\n\n") + "\n\n" : "";
254
+ const getterSection = getters ? `\n\n${getters}` : "";
255
+ return `${imports}
256
+
257
+ ${blockTypeCode}${configType}
258
+
259
+ export class ${className} extends TerraformProvider {
260
+ constructor(scope: Construct, id: string, config: ${className}Config = {}) {
261
+ super(scope, id, "${source}", {
262
+ ${constructorBody}
263
+ }, config);
264
+ }${getterSection}
265
+ }
266
+ `;
267
+ };
268
+ // --- Resource generation ---
269
+ const generateResourceClass = (resourceName, providerName, block) => {
270
+ const strippedName = stripProviderPrefix(resourceName, providerName);
271
+ const className = snakeToPascalCase(strippedName);
272
+ const registry = createTypeNameRegistry();
273
+ registry.usedNames.add(className);
274
+ // Reserve the config type name first so nested blocks get the A suffix if collision
275
+ registry.usedNames.add(`${className}Config`);
276
+ const blockTypes = generateBlockTypes(block, className, registry);
277
+ const imports = generateImports("TerraformResource", "TerraformResourceConfig", block, true);
278
+ const configType = generateConfigTypeWithName(`${className}Config`, className, block, "TerraformResourceConfig", registry);
279
+ const constructorBody = generateConstructorBody(block);
280
+ const getters = generateGetters(block);
281
+ const inputGetters = generateInputGetters(block);
282
+ const blockTypeCode = blockTypes.length > 0 ? blockTypes.map((bt) => bt.code).join("\n\n") + "\n\n" : "";
283
+ const allGetters = [getters, inputGetters].filter(Boolean).join("\n\n");
284
+ const getterSection = allGetters ? `\n\n${allGetters}` : "";
285
+ return `${imports}
286
+
287
+ ${blockTypeCode}${configType}
288
+
289
+ export class ${className} extends TerraformResource {
290
+ private readonly _config: ${className}Config;
291
+
292
+ constructor(scope: Construct, id: string, config: ${className}Config) {
293
+ super(scope, id, "${resourceName}", {
294
+ ${constructorBody}
295
+ }, config);
296
+ this._config = config;
297
+ }
298
+
299
+ static importFrom(scope: Construct, id: string, resourceId: TfString, provider?: TerraformProvider): ${className} {
300
+ return new ${className}(scope, id, { lifecycle: { importId: resourceId }, provider } as ${className}Config);
301
+ }${getterSection}
302
+ }
303
+ `;
304
+ };
305
+ // --- Data source generation ---
306
+ const generateDataSourceClass = (dataSourceName, providerName, block) => {
307
+ const strippedName = stripProviderPrefix(dataSourceName, providerName);
308
+ const className = `Data${snakeToPascalCase(strippedName)}`;
309
+ const registry = createTypeNameRegistry();
310
+ registry.usedNames.add(className);
311
+ const blockTypes = generateBlockTypes(block, className, registry);
312
+ const imports = generateImports("TerraformDataSource", "TerraformDataSourceConfig", block);
313
+ const configType = generateConfigType(className, block, "TerraformDataSourceConfig", registry);
314
+ const constructorBody = generateConstructorBody(block);
315
+ const getters = generateGetters(block);
316
+ const inputGetters = generateInputGetters(block);
317
+ const blockTypeCode = blockTypes.length > 0 ? blockTypes.map((bt) => bt.code).join("\n\n") + "\n\n" : "";
318
+ const allGetters = [getters, inputGetters].filter(Boolean).join("\n\n");
319
+ const getterSection = allGetters ? `\n\n${allGetters}` : "";
320
+ return `${imports}
321
+
322
+ ${blockTypeCode}${configType}
323
+
324
+ export class ${className} extends TerraformDataSource {
325
+ private readonly _config: ${className}Config;
326
+
327
+ constructor(scope: Construct, id: string, config: ${className}Config) {
328
+ super(scope, id, "${dataSourceName}", {
329
+ ${constructorBody}
330
+ }, config);
331
+ this._config = config;
332
+ }${getterSection}
333
+ }
334
+ `;
335
+ };
336
+ const generateIndexFile = (exports) => {
337
+ const lines = exports
338
+ .slice()
339
+ .sort((a, b) => a.namespace.localeCompare(b.namespace))
340
+ .map((e) => `export * as ${e.namespace} from "./${e.path}";`);
341
+ return lines.join("\n") + "\n";
342
+ };
343
+ // --- Main generator ---
344
+ export const generateProviderFiles = (name, schema) => {
345
+ const files = new Map();
346
+ const namespaceExports = [];
347
+ // Find the provider schema entry
348
+ const providerEntry = Object.entries(schema.provider_schemas).find(([source]) => source.includes(`/${name}`) || source.endsWith(`/${name}`));
349
+ if (!providerEntry) {
350
+ return files;
351
+ }
352
+ const [source, schemaEntry] = providerEntry;
353
+ // Generate provider
354
+ files.set("provider/index.ts", generateProviderClass(name, source, schemaEntry.provider));
355
+ namespaceExports.push({ namespace: "provider", path: "provider/index.js" });
356
+ // Generate resources
357
+ if (schemaEntry.resource_schemas) {
358
+ for (const [resourceName, resourceSchema] of Object.entries(schemaEntry.resource_schemas)) {
359
+ const strippedName = stripProviderPrefix(resourceName, name);
360
+ const kebabName = snakeToKebabCase(strippedName);
361
+ const path = `lib/${kebabName}/index.ts`;
362
+ files.set(path, generateResourceClass(resourceName, name, resourceSchema.block));
363
+ namespaceExports.push({
364
+ namespace: snakeToCamelCase(strippedName),
365
+ path: `lib/${kebabName}/index.js`,
366
+ });
367
+ }
368
+ }
369
+ // Generate data sources
370
+ if (schemaEntry.data_source_schemas) {
371
+ for (const [dataSourceName, dataSourceSchema] of Object.entries(schemaEntry.data_source_schemas)) {
372
+ const strippedName = stripProviderPrefix(dataSourceName, name);
373
+ const kebabName = snakeToKebabCase(strippedName);
374
+ const path = `lib/data-${kebabName}/index.ts`;
375
+ files.set(path, generateDataSourceClass(dataSourceName, name, dataSourceSchema.block));
376
+ namespaceExports.push({
377
+ namespace: `data${snakeToPascalCase(strippedName)}`,
378
+ path: `lib/data-${kebabName}/index.js`,
379
+ });
380
+ }
381
+ }
382
+ // Generate index file
383
+ files.set("index.ts", generateIndexFile(namespaceExports));
384
+ return files;
204
385
  };
205
386
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,4 @@ export type SchemaError = {
41
41
  readonly message: string;
42
42
  };
43
43
  export declare const parseProviderSchema: (data: unknown) => Result<ProviderSchema, SchemaError>;
44
- export declare const fetchProviderSchema: (source: string, version?: string) => Promise<Result<ProviderSchema, SchemaError>>;
45
- export declare const parseSchemaType: (type: SchemaType) => string;
46
44
  //# sourceMappingURL=schema.d.ts.map