summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-29 10:07:04 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-29 10:07:04 +0100
commita0c7aa1008f31e969fe868edf1f5408f3eaa959a (patch)
treec6cba4fbe288b1542f83da0905360895fb290fca
parentfd608ec74299cba88f7af992069e07e3fd6b41d1 (diff)
Add stubbed generator for TypeScript types
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java4
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java9
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java11
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java47
4 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java
index 2373626..9af101e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java
@@ -7,6 +7,7 @@ import org.zwobble.hobgoblin.compiler.output.generators.javatransient0.JavaTrans
import org.zwobble.hobgoblin.compiler.output.generators.javatypes.JavaTypesGenerator;
import org.zwobble.hobgoblin.compiler.output.generators.rusttransient0.RustTransient0Generator;
import org.zwobble.hobgoblin.compiler.output.generators.rusttypes.RustTypesGenerator;
+import org.zwobble.hobgoblin.compiler.output.generators.typescripttypes.TypescriptTypesGenerator;
import org.zwobble.hobgoblin.compiler.sources.FileFragmentSource;
import org.zwobble.json5.reader.Json5ObjectReader;
import org.zwobble.sourcetext.SourceText;
@@ -56,6 +57,9 @@ public record ProjectConfig(
case RustTransient0Generator.NAME ->
RustTransient0Generator.parseGeneratorConfig(projectRoot, generatorJson, langsJson);
+ case TypescriptTypesGenerator.NAME ->
+ TypescriptTypesGenerator.parseGeneratorConfig(projectRoot, generatorJson, langsJson);
+
default ->
throw new UnknownGeneratorError(
generatorName.value(),
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java
new file mode 100644
index 0000000..ebc7166
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java
@@ -0,0 +1,9 @@
+package org.zwobble.hobgoblin.compiler.output.generators.typescript;
+
+public class TypescriptGenerator {
+ private final TypescriptGeneratorConfig config;
+
+ public TypescriptGenerator(TypescriptGeneratorConfig config) {
+ this.config = config;
+ }
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java
new file mode 100644
index 0000000..4026c14
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java
@@ -0,0 +1,11 @@
+package org.zwobble.hobgoblin.compiler.output.generators.typescript;
+
+import org.zwobble.json5.reader.Json5ObjectReader;
+
+public record TypescriptGeneratorConfig() {
+ public static TypescriptGeneratorConfig parseLangsConfig(Json5ObjectReader langsJson) {
+ var output = langsJson.getObject("typescript");
+
+ return new TypescriptGeneratorConfig();
+ }
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java
new file mode 100644
index 0000000..04278ea
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java
@@ -0,0 +1,47 @@
+package org.zwobble.hobgoblin.compiler.output.generators.typescripttypes;
+
+import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode;
+import org.zwobble.hobgoblin.compiler.config.OutputConfig;
+import org.zwobble.hobgoblin.compiler.output.generators.Generator;
+import org.zwobble.hobgoblin.compiler.output.generators.typescript.TypescriptGenerator;
+import org.zwobble.hobgoblin.compiler.output.generators.typescript.TypescriptGeneratorConfig;
+import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
+import org.zwobble.json5.reader.Json5ObjectReader;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.List;
+
+public class TypescriptTypesGenerator implements Generator {
+ public static final String NAME = "typescript-types";
+
+ public static OutputConfig parseGeneratorConfig(
+ Path projectRoot,
+ Json5ObjectReader generatorJson,
+ Json5ObjectReader langsJson
+ ) {
+ return () -> {
+ var relativeOutputPath = generatorJson.getString("path").value();
+ var outputPath = projectRoot.resolve(relativeOutputPath);
+
+ var typescriptConfig = TypescriptGeneratorConfig.parseLangsConfig(langsJson);
+
+ var typescriptGenerator = new TypescriptGenerator(typescriptConfig);
+
+ return new TypescriptTypesGenerator(outputPath, typescriptGenerator);
+ };
+ }
+
+ private final Path outputPath;
+ private final TypescriptGenerator typescriptGenerator;
+
+ public TypescriptTypesGenerator(Path outputPath, TypescriptGenerator typescriptGenerator) {
+ this.outputPath = outputPath;
+ this.typescriptGenerator = typescriptGenerator;
+ }
+
+ @Override
+ public void generate(List<TypedNamespaceNode> namespaces, TypesInfo typesInfo) throws IOException {
+
+ }
+}