tfts 0.2.0 → 0.2.2
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.
- package/dist/src/cli/get.d.ts.map +1 -1
- package/dist/src/cli/get.js +9 -7
- package/dist/src/cli/get.js.map +1 -1
- package/dist/src/codegen/__tests__/generator.spec.js +14 -1
- package/dist/src/codegen/__tests__/generator.spec.js.map +1 -1
- package/dist/src/codegen/generator.js +40 -37
- package/dist/src/codegen/generator.js.map +1 -1
- package/package.json +1 -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,
|
|
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"}
|
package/dist/src/cli/get.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ok, err } from "neverthrow";
|
|
2
2
|
import * as fs from "node:fs/promises";
|
|
3
|
-
import { join } from "node:path";
|
|
3
|
+
import { join, dirname } from "node:path";
|
|
4
4
|
import { readConfig } from "./config.js";
|
|
5
5
|
import { generateProviderFiles } from "../codegen/generator.js";
|
|
6
6
|
import { fetchProviderSchema } from "../codegen/schema.js";
|
|
@@ -21,9 +21,10 @@ export const runGet = async (options) => {
|
|
|
21
21
|
}
|
|
22
22
|
const files = generateProviderFiles(provider.name, schemaResult.value);
|
|
23
23
|
const providerDir = `${outdir}/providers/${provider.name}`;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
await fs.
|
|
24
|
+
for (const [filePath, content] of files) {
|
|
25
|
+
const fullPath = join(providerDir, filePath);
|
|
26
|
+
await fs.mkdir(dirname(fullPath), { recursive: true });
|
|
27
|
+
await fs.writeFile(fullPath, content);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
return ok(undefined);
|
|
@@ -37,9 +38,10 @@ export const generateBindings = async (providers, outdir) => {
|
|
|
37
38
|
}
|
|
38
39
|
const files = generateProviderFiles(provider.name, schemaResult.value);
|
|
39
40
|
const providerDir = `${outdir}/providers/${provider.name}`;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await fs.
|
|
41
|
+
for (const [filePath, content] of files) {
|
|
42
|
+
const fullPath = join(providerDir, filePath);
|
|
43
|
+
await fs.mkdir(dirname(fullPath), { recursive: true });
|
|
44
|
+
await fs.writeFile(fullPath, content);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
return ok(undefined);
|
package/dist/src/cli/get.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAe,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { test, expect, describe } from "bun:test";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { generateProvider } from "../generator.js";
|
|
4
|
+
import { generateProvider, generateProviderFiles } from "../generator.js";
|
|
5
5
|
import { parseProviderSchema } from "../schema.js";
|
|
6
6
|
const loadFixture = (name) => {
|
|
7
7
|
const path = join(import.meta.dir, "fixtures", `${name}.json`);
|
|
@@ -19,4 +19,17 @@ describe("generateProvider", () => {
|
|
|
19
19
|
expect(result).toMatchSnapshot();
|
|
20
20
|
});
|
|
21
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");
|
|
33
|
+
});
|
|
34
|
+
});
|
|
22
35
|
//# 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,MAAM,iBAAiB,CAAC;
|
|
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"}
|
|
@@ -32,40 +32,40 @@ export const generateProviderFiles = (name, schema) => {
|
|
|
32
32
|
return new Map([["index.ts", `// No schema available for provider ${name}\nexport {};\n`]]);
|
|
33
33
|
}
|
|
34
34
|
const [source, entry] = firstEntry;
|
|
35
|
-
const providerName =
|
|
35
|
+
const providerName = snakeToPascalCase(name);
|
|
36
36
|
const files = new Map();
|
|
37
|
-
const
|
|
38
|
-
// Provider file
|
|
37
|
+
const namespaceExports = [];
|
|
38
|
+
// Provider file (in provider/ subdirectory)
|
|
39
39
|
const providerConfig = generateConfigWithNestedTypes(`${providerName}ProviderConfig`, entry.provider, "TerraformProviderConfig");
|
|
40
40
|
const providerClass = providerTemplate(providerName, source, providerConfig.props);
|
|
41
41
|
const providerContent = [PROVIDER_IMPORTS, ...providerConfig.types, providerClass].join("\n\n");
|
|
42
|
-
files.set("provider.ts", providerContent);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// Resource files
|
|
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)
|
|
46
45
|
for (const [resourceName, resourceSchema] of Object.entries(entry.resource_schemas ?? {})) {
|
|
47
46
|
const className = terraformNameToClassName(resourceName);
|
|
48
|
-
const
|
|
47
|
+
const dirName = terraformNameToFileName(resourceName);
|
|
48
|
+
const namespaceName = pascalToCamelCase(className);
|
|
49
49
|
const config = generateConfigWithNestedTypes(`${className}Config`, resourceSchema.block, "TerraformResourceConfig");
|
|
50
50
|
const resourceClass = resourceTemplate(className, resourceName, config.props, config.getters);
|
|
51
51
|
const content = [RESOURCE_IMPORTS, ...config.types, resourceClass].join("\n\n");
|
|
52
|
-
files.set(`${
|
|
53
|
-
|
|
54
|
-
exports.push(`export type { ${className}Config } from "./${fileName}.js";`);
|
|
52
|
+
files.set(`${dirName}/index.ts`, content);
|
|
53
|
+
namespaceExports.push(`export * as ${namespaceName} from "./${dirName}/index.js";`);
|
|
55
54
|
}
|
|
56
|
-
// Data source files
|
|
55
|
+
// Data source files (each in its own subdirectory)
|
|
57
56
|
for (const [dataSourceName, dataSourceSchema] of Object.entries(entry.data_source_schemas ?? {})) {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
57
|
+
const baseClassName = terraformNameToClassName(dataSourceName);
|
|
58
|
+
const className = `Data${baseClassName}`;
|
|
59
|
+
const dirName = `data-${terraformNameToFileName(dataSourceName)}`;
|
|
60
|
+
const namespaceName = `data${baseClassName}`;
|
|
60
61
|
const config = generateConfigWithNestedTypes(`${className}Config`, dataSourceSchema.block, "TerraformDataSourceConfig");
|
|
61
62
|
const dataSourceClass = dataSourceTemplate(className, dataSourceName, config.props, config.getters);
|
|
62
63
|
const content = [DATASOURCE_IMPORTS, ...config.types, dataSourceClass].join("\n\n");
|
|
63
|
-
files.set(`${
|
|
64
|
-
|
|
65
|
-
exports.push(`export type { ${className}Config } from "./${fileName}.js";`);
|
|
64
|
+
files.set(`${dirName}/index.ts`, content);
|
|
65
|
+
namespaceExports.push(`export * as ${namespaceName} from "./${dirName}/index.js";`);
|
|
66
66
|
}
|
|
67
|
-
// Index file
|
|
68
|
-
files.set("index.ts",
|
|
67
|
+
// Index file with namespace exports
|
|
68
|
+
files.set("index.ts", namespaceExports.join("\n") + "\n");
|
|
69
69
|
return files;
|
|
70
70
|
};
|
|
71
71
|
// Legacy single-file generator (kept for backward compatibility)
|
|
@@ -106,21 +106,21 @@ const generateConfigInterface = (name, block) => {
|
|
|
106
106
|
const blockEntries = Object.entries(block.block_types ?? {});
|
|
107
107
|
const attrProps = attrEntries.map(([attrName]) => ({
|
|
108
108
|
tfName: toTfName(attrName),
|
|
109
|
-
tsName:
|
|
109
|
+
tsName: snakeToCamelCase(attrName),
|
|
110
110
|
}));
|
|
111
111
|
const attrLines = attrEntries.map(([attrName, attr]) => {
|
|
112
112
|
const tsType = parseSchemaType(attr.type);
|
|
113
113
|
const optional = attr.optional === true || attr.computed === true;
|
|
114
|
-
const propName =
|
|
114
|
+
const propName = snakeToCamelCase(attrName);
|
|
115
115
|
return ` readonly ${propName}${optional ? "?" : ""}: ${tsType};`;
|
|
116
116
|
});
|
|
117
117
|
const blockProps = blockEntries.map(([blockName]) => ({
|
|
118
118
|
tfName: toTfName(blockName),
|
|
119
|
-
tsName:
|
|
119
|
+
tsName: snakeToCamelCase(blockName),
|
|
120
120
|
}));
|
|
121
121
|
const blockLines = blockEntries.map(([blockName, blockType]) => {
|
|
122
|
-
const nestedName = `${name}${
|
|
123
|
-
const propName =
|
|
122
|
+
const nestedName = `${name}${snakeToPascalCase(blockName)}`;
|
|
123
|
+
const propName = snakeToCamelCase(blockName);
|
|
124
124
|
const isList = blockType.nesting_mode === "list" || blockType.nesting_mode === "set";
|
|
125
125
|
const isOptional = blockType.min_items === undefined || blockType.min_items === 0;
|
|
126
126
|
return isList
|
|
@@ -137,25 +137,25 @@ const generateConfigWithNestedTypes = (name, block, baseType) => {
|
|
|
137
137
|
const blockEntries = Object.entries(block.block_types ?? {});
|
|
138
138
|
const attrProps = attrEntries.map(([attrName]) => ({
|
|
139
139
|
tfName: toTfName(attrName),
|
|
140
|
-
tsName:
|
|
140
|
+
tsName: snakeToCamelCase(attrName),
|
|
141
141
|
}));
|
|
142
142
|
const attrLines = attrEntries.map(([attrName, attr]) => {
|
|
143
143
|
const tsType = parseSchemaType(attr.type);
|
|
144
144
|
const optional = attr.optional === true || attr.computed === true;
|
|
145
|
-
const propName =
|
|
145
|
+
const propName = snakeToCamelCase(attrName);
|
|
146
146
|
return ` readonly ${propName}${optional ? "?" : ""}: ${tsType};`;
|
|
147
147
|
});
|
|
148
148
|
// Collect getters for computed attributes (excluding reserved names)
|
|
149
149
|
const getters = attrEntries
|
|
150
|
-
.filter(([attrName, attr]) => attr.computed === true && !RESERVED_NAMES.has(
|
|
151
|
-
.map(([attrName]) => ({ tfName: toTfName(attrName), tsName:
|
|
150
|
+
.filter(([attrName, attr]) => attr.computed === true && !RESERVED_NAMES.has(snakeToCamelCase(attrName)))
|
|
151
|
+
.map(([attrName]) => ({ tfName: toTfName(attrName), tsName: snakeToCamelCase(attrName) }));
|
|
152
152
|
const blockProps = blockEntries.map(([blockName]) => ({
|
|
153
153
|
tfName: toTfName(blockName),
|
|
154
|
-
tsName:
|
|
154
|
+
tsName: snakeToCamelCase(blockName),
|
|
155
155
|
}));
|
|
156
156
|
const blockLines = blockEntries.map(([blockName, blockType]) => {
|
|
157
|
-
const nestedName = `${name}${
|
|
158
|
-
const propName =
|
|
157
|
+
const nestedName = `${name}${snakeToPascalCase(blockName)}`;
|
|
158
|
+
const propName = snakeToCamelCase(blockName);
|
|
159
159
|
const isList = blockType.nesting_mode === "list" || blockType.nesting_mode === "set";
|
|
160
160
|
const isOptional = blockType.min_items === undefined || blockType.min_items === 0;
|
|
161
161
|
return isList
|
|
@@ -163,7 +163,7 @@ const generateConfigWithNestedTypes = (name, block, baseType) => {
|
|
|
163
163
|
: ` readonly ${propName}${isOptional ? "?" : ""}: ${nestedName};`;
|
|
164
164
|
});
|
|
165
165
|
const nestedTypes = blockEntries.flatMap(([blockName, blockType]) => {
|
|
166
|
-
const nestedName = `${name}${
|
|
166
|
+
const nestedName = `${name}${snakeToPascalCase(blockName)}`;
|
|
167
167
|
return generateConfigWithNestedTypes(nestedName, blockType.block).types;
|
|
168
168
|
});
|
|
169
169
|
return {
|
|
@@ -172,16 +172,19 @@ const generateConfigWithNestedTypes = (name, block, baseType) => {
|
|
|
172
172
|
getters,
|
|
173
173
|
};
|
|
174
174
|
};
|
|
175
|
-
const
|
|
175
|
+
const snakeToPascalCase = (s) => {
|
|
176
176
|
return s
|
|
177
177
|
.split(/[-_]/)
|
|
178
|
-
.map((part) => part.charAt(0).toUpperCase() + part.slice(1)
|
|
178
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
179
179
|
.join("");
|
|
180
180
|
};
|
|
181
|
-
const
|
|
182
|
-
const pascal =
|
|
181
|
+
const snakeToCamelCase = (s) => {
|
|
182
|
+
const pascal = snakeToPascalCase(s);
|
|
183
183
|
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
184
184
|
};
|
|
185
|
+
const pascalToCamelCase = (s) => {
|
|
186
|
+
return s.charAt(0).toLowerCase() + s.slice(1);
|
|
187
|
+
};
|
|
185
188
|
const toTfName = (s) => {
|
|
186
189
|
return s.replace(/-/g, "_");
|
|
187
190
|
};
|
|
@@ -191,7 +194,7 @@ const terraformNameToClassName = (name) => {
|
|
|
191
194
|
const parts = name.split("_");
|
|
192
195
|
// Remove first part (provider name)
|
|
193
196
|
const withoutProvider = parts.slice(1).join("_");
|
|
194
|
-
return
|
|
197
|
+
return snakeToPascalCase(withoutProvider || name);
|
|
195
198
|
};
|
|
196
199
|
const terraformNameToFileName = (name) => {
|
|
197
200
|
// google_storage_bucket -> storage-bucket
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/codegen/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,GAGxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,gBAAgB,GAAG;0CACiB,CAAC;AAE3C,MAAM,kBAAkB,GAAG;4CACiB,CAAC;AAE7C,MAAM,gBAAgB,GAAG;0CACiB,CAAC;AAE3C,+DAA+D;AAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,MAAM;IACN,MAAM;IACN,uBAAuB;IACvB,kBAAkB;IAClB,4BAA4B;IAC5B,YAAY;IACZ,OAAO;IACP,WAAW;IACX,SAAS;IACT,WAAW;IACX,UAAU;IACV,cAAc;IACd,KAAK;CACN,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,MAAsB,EAAkB,EAAE;IAC5F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,uCAAuC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,uCAAuC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC;IACnC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
|