diff --git a/packages/demo-protobuf/src/decorator.ts b/packages/demo-protobuf/src/decorator.ts index 4f5ec5ec..0ee99b97 100644 --- a/packages/demo-protobuf/src/decorator.ts +++ b/packages/demo-protobuf/src/decorator.ts @@ -1,17 +1,23 @@ -import { Field, Message, Type } from "protobufjs"; +import { Constructor, Field, Message, TypeDecorator, util } from "protobufjs"; -import { GeneratedType, Registry } from "./registry"; +import { Registry } from "./registry"; export const myRegistry = new Registry(); -function CosmosMessage(registry: Registry, typeUrl: string) { - return (generatedType: GeneratedType) => { +function getTypeName(typeUrl: string): string { + const parts = typeUrl.split("."); + return parts[parts.length - 1]; +} + +function CosmosMessage(registry: Registry, typeUrl: string): TypeDecorator { + return (constructor: Constructor>) => { + const typeName = getTypeName(typeUrl); + const generatedType = util.decorateType(constructor, typeName); registry.register(typeUrl, generatedType); }; } @CosmosMessage(myRegistry, "/demo.MsgDemo") -@Type.d("MsgDemo") export class MsgDemo extends Message<{}> { @Field.d(1, "string") public readonly example: string = "";