From e9193996a9230fe9411ec8d78a7ccd69c747b1fc Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 16 Jun 2020 16:19:09 +0100 Subject: [PATCH] demo-protobuf: Add shallow CosmosMessage decorator --- packages/demo-protobuf/src/decorator.ts | 11 ++++++++--- packages/demo-protobuf/src/registry.ts | 2 +- packages/demo-protobuf/types/registry.d.ts | 3 +-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/demo-protobuf/src/decorator.ts b/packages/demo-protobuf/src/decorator.ts index 16548ffeab..4f5ec5ecc0 100644 --- a/packages/demo-protobuf/src/decorator.ts +++ b/packages/demo-protobuf/src/decorator.ts @@ -1,13 +1,18 @@ import { Field, Message, Type } from "protobufjs"; -import { Registry } from "./registry"; +import { GeneratedType, Registry } from "./registry"; export const myRegistry = new Registry(); +function CosmosMessage(registry: Registry, typeUrl: string) { + return (generatedType: GeneratedType) => { + registry.register(typeUrl, generatedType); + }; +} + +@CosmosMessage(myRegistry, "/demo.MsgDemo") @Type.d("MsgDemo") export class MsgDemo extends Message<{}> { @Field.d(1, "string") public readonly example: string = ""; } - -myRegistry.register("/demo.MsgDemo", MsgDemo); diff --git a/packages/demo-protobuf/src/registry.ts b/packages/demo-protobuf/src/registry.ts index 9335a27e17..b826bf70b6 100644 --- a/packages/demo-protobuf/src/registry.ts +++ b/packages/demo-protobuf/src/registry.ts @@ -2,7 +2,7 @@ import protobuf from "protobufjs"; import { cosmos_sdk as cosmosSdk, google } from "./generated/codecimpl"; -interface GeneratedType { +export interface GeneratedType { readonly create: (properties?: { [k: string]: any }) => any; readonly encode: (message: any | { [k: string]: any }, writer?: protobuf.Writer) => protobuf.Writer; readonly decode: (reader: protobuf.Reader | Uint8Array, length?: number) => any; diff --git a/packages/demo-protobuf/types/registry.d.ts b/packages/demo-protobuf/types/registry.d.ts index 3cda7f19c0..09ca8bba5f 100644 --- a/packages/demo-protobuf/types/registry.d.ts +++ b/packages/demo-protobuf/types/registry.d.ts @@ -1,5 +1,5 @@ import protobuf from "protobufjs"; -interface GeneratedType { +export interface GeneratedType { readonly create: (properties?: { [k: string]: any }) => any; readonly encode: ( message: @@ -17,4 +17,3 @@ export declare class Registry { register(name: string, type: GeneratedType): void; lookupType(name: string): GeneratedType | undefined; } -export {};