From c0dd55bc941b990559d0d529d7521fc83844f6ac Mon Sep 17 00:00:00 2001 From: willclarktech Date: Thu, 14 Jan 2021 11:02:27 +0000 Subject: [PATCH] =?UTF-8?q?proto-signing:=20Remove=20functionality=20ts-pr?= =?UTF-8?q?oto=20won=E2=80=99t=20support=20:fire:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/proto-signing/src/decorator.spec.ts | 98 -------------------- packages/proto-signing/src/decorator.ts | 40 -------- packages/proto-signing/src/magic.spec.ts | 89 ------------------ packages/proto-signing/src/msgs.spec.ts | 35 ------- packages/proto-signing/src/msgs.ts | 28 ------ packages/proto-signing/types/decorator.d.ts | 21 ----- packages/proto-signing/types/msgs.d.ts | 12 --- 7 files changed, 323 deletions(-) delete mode 100644 packages/proto-signing/src/decorator.spec.ts delete mode 100644 packages/proto-signing/src/decorator.ts delete mode 100644 packages/proto-signing/src/magic.spec.ts delete mode 100644 packages/proto-signing/src/msgs.spec.ts delete mode 100644 packages/proto-signing/src/msgs.ts delete mode 100644 packages/proto-signing/types/decorator.d.ts delete mode 100644 packages/proto-signing/types/msgs.d.ts diff --git a/packages/proto-signing/src/decorator.spec.ts b/packages/proto-signing/src/decorator.spec.ts deleted file mode 100644 index a3fc6f13..00000000 --- a/packages/proto-signing/src/decorator.spec.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import { assert } from "@cosmjs/utils"; -import Long from "long"; -import { Message } from "protobufjs"; - -import { cosmos, google } from "./codec"; -import { cosmosField, registered } from "./decorator"; -import { Registry } from "./registry"; - -const { TxBody } = cosmos.tx.v1beta1; -const { Any } = google.protobuf; - -describe("decorator demo", () => { - it("works with a custom msg", () => { - const nestedTypeUrl = "/demo.MsgNestedDemo"; - const typeUrl = "/demo.MsgDemo"; - const myRegistry = new Registry(); - - @registered(myRegistry, nestedTypeUrl) - class MsgNestedDemo extends Message { - @cosmosField.string(1) - public readonly foo?: string; - } - - @registered(myRegistry, typeUrl) - // eslint-disable-next-line @typescript-eslint/no-unused-vars - class MsgDemo extends Message { - @cosmosField.boolean(1) - public readonly booleanDemo?: boolean; - - @cosmosField.string(2) - public readonly stringDemo?: string; - - @cosmosField.bytes(3) - public readonly bytesDemo?: Uint8Array; - - @cosmosField.int64(4) - public readonly int64Demo?: number; - - @cosmosField.uint64(5) - public readonly uint64Demo?: number; - - @cosmosField.repeatedString(6) - public readonly listDemo?: readonly string[]; - - @cosmosField.message(7, MsgNestedDemo) - public readonly nestedDemo?: MsgNestedDemo; - } - - const MsgNestedDemoT = myRegistry.lookupType(nestedTypeUrl)!; - const MsgDemoT = myRegistry.lookupType(typeUrl)!; - - const msgNestedDemoFields = { - foo: "bar", - }; - const msgNestedDemo = MsgNestedDemoT.create(msgNestedDemoFields); - - const msgDemoFields = { - booleanDemo: true, - stringDemo: "example text", - bytesDemo: Uint8Array.from([1, 2, 3, 4, 5, 6, 7, 8]), - int64Demo: -123, - uint64Demo: 123, - listDemo: ["this", "is", "a", "list"], - nestedDemo: msgNestedDemo, - }; - const msgDemo = MsgDemoT.create(msgDemoFields); - const msgDemoBytes = MsgDemoT.encode(msgDemo).finish(); - const msgDemoWrapped = Any.create({ - type_url: typeUrl, - value: msgDemoBytes, - }); - const txBody = TxBody.create({ - messages: [msgDemoWrapped], - memo: "Some memo", - timeoutHeight: Long.fromNumber(9999), - extensionOptions: [], - }); - const txBodyBytes = TxBody.encode(txBody).finish(); - - const txBodyDecoded = TxBody.decode(txBodyBytes); - const msg = txBodyDecoded.messages[0]; - assert(msg.type_url); - assert(msg.value); - - const msgDemoDecoded = MsgDemoT.decode(msg.value); - expect(msgDemoDecoded.booleanDemo).toEqual(msgDemoFields.booleanDemo); - expect(msgDemoDecoded.stringDemo).toEqual(msgDemoFields.stringDemo); - // bytesDemo decodes to a Buffer in Node - expect(Uint8Array.from(msgDemoDecoded.bytesDemo)).toEqual(msgDemoFields.bytesDemo); - // int64Demo and uint64Demo decode to Long in Node - expect(Number(msgDemoDecoded.int64Demo)).toEqual(msgDemoFields.int64Demo); - expect(Number(msgDemoDecoded.uint64Demo)).toEqual(msgDemoFields.uint64Demo); - - expect(msgDemoDecoded.listDemo).toEqual(msgDemoFields.listDemo); - expect(msgDemoDecoded.nestedDemo).toEqual(msgDemoFields.nestedDemo); - }); -}); diff --git a/packages/proto-signing/src/decorator.ts b/packages/proto-signing/src/decorator.ts deleted file mode 100644 index fd8245ef..00000000 --- a/packages/proto-signing/src/decorator.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Constructor, Field, Message, TypeDecorator, util } from "protobufjs"; - -import { Registry } from "./registry"; - -function getTypeName(typeUrl: string): string { - const parts = typeUrl.split("."); - return parts[parts.length - 1]; -} - -/** - * A class decorator to register this type under the given type URL - * in the given registry. - */ -export function registered(registry: Registry, typeUrl: string): TypeDecorator { - return (ctor: Constructor>) => { - const typeName = getTypeName(typeUrl); - const generatedType = util.decorateType(ctor, typeName); - registry.register(typeUrl, generatedType); - }; -} - -/** - * Like PropertyDecorator from lib.es5.d.ts but without symbol support in propertyKey. - */ -export type FieldDecorator = (target: any, propertyKey: string) => void; - -export const cosmosField = { - boolean: (id: number): FieldDecorator => Field.d(id, "bool"), - - string: (id: number): FieldDecorator => Field.d(id, "string"), - bytes: (id: number): FieldDecorator => Field.d(id, "bytes"), - - int64: (id: number): FieldDecorator => Field.d(id, "int64"), - uint64: (id: number): FieldDecorator => Field.d(id, "uint64"), - - message: (id: number, ctor: Constructor): FieldDecorator => Field.d(id, ctor), - - repeatedString: (id: number): FieldDecorator => Field.d(id, "string", "repeated"), - repeatedMessage: (id: number, ctor: Constructor): FieldDecorator => Field.d(id, ctor, "repeated"), -}; diff --git a/packages/proto-signing/src/magic.spec.ts b/packages/proto-signing/src/magic.spec.ts deleted file mode 100644 index 2a3d3ac3..00000000 --- a/packages/proto-signing/src/magic.spec.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import Long from "long"; -import { Message } from "protobufjs"; - -import { cosmosField, registered } from "./decorator"; -import { Registry } from "./registry"; - -describe("registry magic demo", () => { - it("works with a custom msg", () => { - const nestedTypeUrl = "/demo.MsgNestedMagic"; - const typeUrl = "/demo.MsgMagic"; - const myRegistry = new Registry(); - - @registered(myRegistry, nestedTypeUrl) - class MsgNestedMagic extends Message { - @cosmosField.string(1) - public readonly foo?: string; - } - - @registered(myRegistry, typeUrl) - class MsgMagic extends Message { - @cosmosField.boolean(1) - public readonly booleanDemo?: boolean; - - @cosmosField.string(2) - public readonly stringDemo?: string; - - @cosmosField.bytes(3) - public readonly bytesDemo?: Uint8Array; - - @cosmosField.int64(4) - public readonly int64Demo?: Long; - - @cosmosField.uint64(5) - public readonly uint64Demo?: Long; - - @cosmosField.repeatedString(6) - public readonly listDemo?: readonly string[]; - - @cosmosField.message(7, MsgNestedMagic) - public readonly nestedDemo?: MsgNestedMagic; - } - - const msgNestedDemoFields = { - foo: "bar", - }; - const msgDemoFields = { - booleanDemo: true, - stringDemo: "example text", - bytesDemo: Uint8Array.from([1, 2, 3, 4, 5, 6, 7, 8]), - int64Demo: -123, - uint64Demo: 123, - listDemo: ["this", "is", "a", "list"], - nestedDemo: msgNestedDemoFields, - }; - const txBodyFields = { - messages: [{ typeUrl: typeUrl, value: msgDemoFields }], - memo: "Some memo", - timeoutHeight: 9999, - extensionOptions: [], - }; - const txBodyBytes = myRegistry.encode({ - typeUrl: "/cosmos.tx.v1beta1.TxBody", - value: txBodyFields, - }); - - const txBodyDecoded = myRegistry.decode({ - typeUrl: "/cosmos.tx.v1beta1.TxBody", - value: txBodyBytes, - }); - expect(txBodyDecoded.memo).toEqual(txBodyFields.memo); - // int64Demo and uint64Demo decode to Long - expect(txBodyDecoded.timeoutHeight).toEqual(Long.fromNumber(txBodyFields.timeoutHeight, true)); - expect(txBodyDecoded.extensionOptions).toEqual(txBodyFields.extensionOptions); - - const msgDemoDecoded = txBodyDecoded.messages[0] as MsgMagic; - expect(msgDemoDecoded).toBeInstanceOf(MsgMagic); - expect(msgDemoDecoded.booleanDemo).toEqual(msgDemoFields.booleanDemo); - expect(msgDemoDecoded.stringDemo).toEqual(msgDemoFields.stringDemo); - expect(msgDemoDecoded.bytesDemo).toEqual(msgDemoFields.bytesDemo); - // int64Demo and uint64Demo decode to Long - expect(msgDemoDecoded.int64Demo).toEqual(Long.fromNumber(msgDemoFields.int64Demo)); - expect(msgDemoDecoded.uint64Demo).toEqual(Long.fromNumber(msgDemoFields.uint64Demo, true)); - expect(msgDemoDecoded.listDemo).toEqual(msgDemoFields.listDemo); - - expect(msgDemoDecoded.nestedDemo).toBeInstanceOf(MsgNestedMagic); - expect(msgDemoDecoded.nestedDemo!.foo).toEqual(msgDemoFields.nestedDemo.foo); - }); -}); diff --git a/packages/proto-signing/src/msgs.spec.ts b/packages/proto-signing/src/msgs.spec.ts deleted file mode 100644 index a2c94c22..00000000 --- a/packages/proto-signing/src/msgs.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import { cosmos } from "./codec"; -import { Coin, MsgSend } from "./msgs"; - -describe("msgs", () => { - it("encodes decorated MsgSend equally to static code", () => { - const alice = "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6"; - const bob = "cosmos1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu"; - const amount = [ - new Coin({ denom: "utoken", amount: "123" }), - new Coin({ denom: "ustake", amount: "654" }), - ]; - const donation = new MsgSend({ from_address: alice, to_address: bob, amount }); - - const expected = cosmos.bank.v1beta1.MsgSend.encode( - cosmos.bank.v1beta1.MsgSend.create({ - fromAddress: alice, - toAddress: bob, - amount: [ - cosmos.base.v1beta1.Coin.create({ - denom: "utoken", - amount: "123", - }), - cosmos.base.v1beta1.Coin.create({ - denom: "ustake", - amount: "654", - }), - ], - }), - ).finish(); - - const encoded = MsgSend.encode(donation).finish(); - expect(encoded).toEqual(expected); - }); -}); diff --git a/packages/proto-signing/src/msgs.ts b/packages/proto-signing/src/msgs.ts deleted file mode 100644 index e9be32e7..00000000 --- a/packages/proto-signing/src/msgs.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -import { Message } from "protobufjs"; - -import { cosmosField, registered } from "./decorator"; -import { Registry } from "./registry"; - -export const defaultRegistry = new Registry(); - -@registered(defaultRegistry, "/cosmos.base.v1beta1.Coin") -export class Coin extends Message { - @cosmosField.string(1) - public readonly denom?: string; - - @cosmosField.string(2) - public readonly amount?: string; -} - -@registered(defaultRegistry, "/cosmos.bank.v1beta1.MsgSend") -export class MsgSend extends Message { - @cosmosField.string(1) - public readonly from_address?: string; - - @cosmosField.string(2) - public readonly to_address?: string; - - @cosmosField.repeatedMessage(3, Coin) - public readonly amount?: readonly Coin[]; -} diff --git a/packages/proto-signing/types/decorator.d.ts b/packages/proto-signing/types/decorator.d.ts deleted file mode 100644 index c59c9878..00000000 --- a/packages/proto-signing/types/decorator.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Constructor, Message, TypeDecorator } from "protobufjs"; -import { Registry } from "./registry"; -/** - * A class decorator to register this type under the given type URL - * in the given registry. - */ -export declare function registered(registry: Registry, typeUrl: string): TypeDecorator; -/** - * Like PropertyDecorator from lib.es5.d.ts but without symbol support in propertyKey. - */ -export declare type FieldDecorator = (target: any, propertyKey: string) => void; -export declare const cosmosField: { - boolean: (id: number) => FieldDecorator; - string: (id: number) => FieldDecorator; - bytes: (id: number) => FieldDecorator; - int64: (id: number) => FieldDecorator; - uint64: (id: number) => FieldDecorator; - message: (id: number, ctor: Constructor) => FieldDecorator; - repeatedString: (id: number) => FieldDecorator; - repeatedMessage: (id: number, ctor: Constructor) => FieldDecorator; -}; diff --git a/packages/proto-signing/types/msgs.d.ts b/packages/proto-signing/types/msgs.d.ts deleted file mode 100644 index cd2fc811..00000000 --- a/packages/proto-signing/types/msgs.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Message } from "protobufjs"; -import { Registry } from "./registry"; -export declare const defaultRegistry: Registry; -export declare class Coin extends Message { - readonly denom?: string; - readonly amount?: string; -} -export declare class MsgSend extends Message { - readonly from_address?: string; - readonly to_address?: string; - readonly amount?: readonly Coin[]; -}