Skip to content

Commit 141bdc8

Browse files
committed
proto-loader: Output functions to serialize and deserialize messages
1 parent 179dbfa commit 141bdc8

File tree

5 files changed

+122
-66
lines changed

5 files changed

+122
-66
lines changed

packages/proto-loader/bin/proto-loader-gen-types.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -715,12 +715,12 @@ function generateDefinitionImports(formatter: TextFormatter, namespace: Protobuf
715715
}
716716
}
717717

718-
function generateServiceImports(formatter: TextFormatter, namespace: Protobuf.NamespaceBase, options: GeneratorOptions) {
718+
function generateDynamicImports(formatter: TextFormatter, namespace: Protobuf.NamespaceBase, options: GeneratorOptions) {
719719
for (const nested of namespace.nestedArray.sort(compareName)) {
720-
if (nested instanceof Protobuf.Service) {
720+
if (nested instanceof Protobuf.Service || nested instanceof Protobuf.Type) {
721721
formatter.writeLine(getImportLine(nested, undefined, options));
722-
} else if (isNamespaceBase(nested) && !(nested instanceof Protobuf.Type) && !(nested instanceof Protobuf.Enum)) {
723-
generateServiceImports(formatter, nested, options);
722+
} else if (isNamespaceBase(nested) && !(nested instanceof Protobuf.Enum)) {
723+
generateDynamicImports(formatter, nested, options);
724724
}
725725
}
726726
}
@@ -735,7 +735,9 @@ function generateSingleLoadedDefinitionType(formatter: TextFormatter, nested: Pr
735735
} else if (nested instanceof Protobuf.Enum) {
736736
formatter.writeLine(`${nested.name}: EnumTypeDefinition`);
737737
} else if (nested instanceof Protobuf.Type) {
738-
formatter.writeLine(`${nested.name}: MessageTypeDefinition`);
738+
const typeInterfaceName = getTypeInterfaceName(nested);
739+
const {inputName, outputName} = useNameFmter(options);
740+
formatter.writeLine(`${nested.name}: MessageTypeDefinition<${inputName(typeInterfaceName)}, ${outputName(typeInterfaceName)}>`);
739741
} else if (isNamespaceBase(nested)) {
740742
generateLoadedDefinitionTypes(formatter, nested, options);
741743
}
@@ -759,7 +761,7 @@ function generateRootFile(formatter: TextFormatter, root: Protobuf.Root, options
759761
generateDefinitionImports(formatter, root, options);
760762
formatter.writeLine('');
761763

762-
generateServiceImports(formatter, root, options);
764+
generateDynamicImports(formatter, root, options);
763765
formatter.writeLine('');
764766

765767
formatter.writeLine('type SubtypeConstructor<Constructor extends new (...args: any) => any, Subtype> = {');

0 commit comments

Comments
 (0)