From 6f005798b7c95a770584f161cd690444b2da7eed Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 20 Jan 2021 15:38:10 +0000 Subject: [PATCH] stargate: Update proto scripts --- packages/stargate/package.json | 7 +-- packages/stargate/scripts/define-proto.sh | 50 ++++++++++++---- packages/stargate/scripts/predefine-proto.sh | 60 -------------------- 3 files changed, 43 insertions(+), 74 deletions(-) delete mode 100755 packages/stargate/scripts/predefine-proto.sh diff --git a/packages/stargate/package.json b/packages/stargate/package.json index 6eda83c7..6c9087ed 100644 --- a/packages/stargate/package.json +++ b/packages/stargate/package.json @@ -28,10 +28,10 @@ "format-text": "prettier --write --prose-wrap always --print-width 80 \"./*.md\"", "lint": "eslint --max-warnings 0 \"**/*.{js,ts}\"", "lint-fix": "eslint --max-warnings 0 \"**/*.{js,ts}\" --fix", - "move-types": "shx rm -rf ./types/* && shx mv build/types/* ./types && shx rm -rf ./types/testdata ./types/*.spec.d.ts ./types/*/*.spec.d.ts", + "move-types": "shx rm -rf ./types/* && shx mv build/types/* ./types && shx rm -rf ./types/testdata ./types/**/*.spec.d.ts \"./types/codec/**/*[!.d].ts\"", "format-types": "prettier --write --loglevel warn \"./types/**/*.d.ts\"", "prebuild": "shx rm -rf ./build", - "build": "tsc && shx mkdir -p build/codec/generated && shx cp ./src/codec/generated/*.js ./build/codec/generated", + "build": "tsc && shx cp -R ./src/codec ./build/ && shx mkdir -p ./build/types/codec && shx cp -R ./src/codec ./build/types/", "postbuild": "shx mkdir -p ./build/types/codec/generated && shx cp ./src/codec/generated/*.d.ts ./build/types/codec/generated && yarn move-types && yarn format-types", "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build", "test-node": "node jasmine-testrunner.js", @@ -42,9 +42,8 @@ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js", "preget-proto": "shx rm -rf proto", "get-proto": "REF=v0.40.0 ./scripts/get-proto.sh", - "predefine-proto": "./scripts/predefine-proto.sh", "define-proto": "./scripts/define-proto.sh", - "postdefine-proto": "prettier --write \"src/codec/generated/codecimpl.*\"" + "postdefine-proto": "prettier --write \"src/codec/**/*.ts\"" }, "dependencies": { "@confio/ics23": "^0.6.3", diff --git a/packages/stargate/scripts/define-proto.sh b/packages/stargate/scripts/define-proto.sh index ac077ff0..321d45fd 100755 --- a/packages/stargate/scripts/define-proto.sh +++ b/packages/stargate/scripts/define-proto.sh @@ -2,15 +2,45 @@ set -o errexit -o nounset -o pipefail command -v shellcheck >/dev/null && shellcheck "$0" -TMP_DIR="./tmp" -JS_SOURCE_FILE="$TMP_DIR/codecimpl.js" -DEFINITIONS_FILE="$TMP_DIR/codecimpl.d.ts" -OUTPUT_DIR="./src/codec/generated/" +ROOT_PROTO_DIR="./proto/cosmos/cosmos-sdk" +COSMOS_PROTO_DIR="$ROOT_PROTO_DIR/proto" +THIRD_PARTY_PROTO_DIR="$ROOT_PROTO_DIR/third_party/proto" +OUT_DIR="./src/codec/" -yarn pbts "$JS_SOURCE_FILE" -o "$DEFINITIONS_FILE" -# Remove comments after using them for the .d.ts -# Note "When input files are specified on the command line, tsconfig.json files are ignored." (https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) -yarn tsc --removeComments --target es2017 --module commonjs --outDir "$OUTPUT_DIR" --allowJs "$JS_SOURCE_FILE" +mkdir -p "$OUT_DIR" -cp "$DEFINITIONS_FILE" "$OUTPUT_DIR" -rm "$DEFINITIONS_FILE" "$JS_SOURCE_FILE" +protoc \ + --plugin="$(yarn bin protoc-gen-ts_proto)" \ + --ts_proto_out="$OUT_DIR" \ + --proto_path="$COSMOS_PROTO_DIR" \ + --proto_path="$THIRD_PARTY_PROTO_DIR" \ + --ts_proto_opt="forceLong=long,useOptionals=true" \ + "$COSMOS_PROTO_DIR/cosmos/auth/v1beta1/auth.proto" \ + "$COSMOS_PROTO_DIR/cosmos/auth/v1beta1/query.proto" \ + "$COSMOS_PROTO_DIR/cosmos/bank/v1beta1/bank.proto" \ + "$COSMOS_PROTO_DIR/cosmos/bank/v1beta1/query.proto" \ + "$COSMOS_PROTO_DIR/cosmos/bank/v1beta1/tx.proto" \ + "$COSMOS_PROTO_DIR/cosmos/base/abci/v1beta1/abci.proto" \ + "$COSMOS_PROTO_DIR/cosmos/base/query/v1beta1/pagination.proto" \ + "$COSMOS_PROTO_DIR/cosmos/base/v1beta1/coin.proto" \ + "$COSMOS_PROTO_DIR/cosmos/crypto/multisig/v1beta1/multisig.proto" \ + "$COSMOS_PROTO_DIR/cosmos/crypto/secp256k1/keys.proto" \ + "$COSMOS_PROTO_DIR/cosmos/staking/v1beta1/staking.proto" \ + "$COSMOS_PROTO_DIR/cosmos/staking/v1beta1/tx.proto" \ + "$COSMOS_PROTO_DIR/cosmos/tx/signing/v1beta1/signing.proto" \ + "$COSMOS_PROTO_DIR/cosmos/tx/v1beta1/tx.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/channel/v1/channel.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/channel/v1/query.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/client/v1/client.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/commitment/v1/commitment.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/connection/v1/connection.proto" \ + "$COSMOS_PROTO_DIR/ibc/core/connection/v1/query.proto" \ + "$THIRD_PARTY_PROTO_DIR/confio/proofs.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/abci/types.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/crypto/keys.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/crypto/proof.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/libs/bits/types.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/types/params.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/types/types.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/types/validator.proto" \ + "$THIRD_PARTY_PROTO_DIR/tendermint/version/types.proto" diff --git a/packages/stargate/scripts/predefine-proto.sh b/packages/stargate/scripts/predefine-proto.sh deleted file mode 100755 index 5776bc7f..00000000 --- a/packages/stargate/scripts/predefine-proto.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -set -o errexit -o nounset -o pipefail -command -v shellcheck >/dev/null && shellcheck "$0" - -GENERATED_DIR="./tmp" -ROOT_PROTO_DIR="./proto/cosmos/cosmos-sdk" -COSMOS_PROTO_DIR="$ROOT_PROTO_DIR/proto/cosmos" -IBC_PROTO_DIR="$ROOT_PROTO_DIR/proto/ibc" -CONFIO_PROTO_DIR="$ROOT_PROTO_DIR/third_party/proto/confio" -TENDERMINT_PROTO_DIR="$ROOT_PROTO_DIR/third_party/proto/tendermint" - -mkdir -p "$GENERATED_DIR" -# Can't use --sparse for some reason. Seems related to https://github.com/protobufjs/protobuf.js/issues/1165 -yarn pbjs \ - -t static-module \ - --es6 \ - -w commonjs \ - -o "$GENERATED_DIR/codecimpl.js" \ - --no-beautify \ - --no-delimited \ - --no-verify \ - --no-convert \ - --force-long \ - "$COSMOS_PROTO_DIR/auth/v1beta1/auth.proto" \ - "$COSMOS_PROTO_DIR/auth/v1beta1/query.proto" \ - "$COSMOS_PROTO_DIR/bank/v1beta1/bank.proto" \ - "$COSMOS_PROTO_DIR/bank/v1beta1/query.proto" \ - "$COSMOS_PROTO_DIR/bank/v1beta1/tx.proto" \ - "$COSMOS_PROTO_DIR/base/abci/v1beta1/abci.proto" \ - "$COSMOS_PROTO_DIR/base/query/v1beta1/pagination.proto" \ - "$COSMOS_PROTO_DIR/base/v1beta1/coin.proto" \ - "$COSMOS_PROTO_DIR/crypto/multisig/v1beta1/multisig.proto" \ - "$COSMOS_PROTO_DIR/crypto/secp256k1/keys.proto" \ - "$COSMOS_PROTO_DIR/distribution/v1beta1/distribution.proto" \ - "$COSMOS_PROTO_DIR/distribution/v1beta1/query.proto" \ - "$COSMOS_PROTO_DIR/distribution/v1beta1/tx.proto" \ - "$COSMOS_PROTO_DIR/staking/v1beta1/query.proto" \ - "$COSMOS_PROTO_DIR/staking/v1beta1/staking.proto" \ - "$COSMOS_PROTO_DIR/staking/v1beta1/tx.proto" \ - "$COSMOS_PROTO_DIR/tx/signing/v1beta1/signing.proto" \ - "$COSMOS_PROTO_DIR/tx/v1beta1/tx.proto" \ - "$IBC_PROTO_DIR/core/channel/v1/channel.proto" \ - "$IBC_PROTO_DIR/core/channel/v1/query.proto" \ - "$IBC_PROTO_DIR/core/client/v1/client.proto" \ - "$IBC_PROTO_DIR/core/commitment/v1/commitment.proto" \ - "$IBC_PROTO_DIR/core/connection/v1/connection.proto" \ - "$IBC_PROTO_DIR/core/connection/v1/query.proto" \ - "$CONFIO_PROTO_DIR/proofs.proto" \ - "$TENDERMINT_PROTO_DIR/abci/types.proto" \ - "$TENDERMINT_PROTO_DIR/crypto/keys.proto" \ - "$TENDERMINT_PROTO_DIR/crypto/proof.proto" \ - "$TENDERMINT_PROTO_DIR/libs/bits/types.proto" \ - "$TENDERMINT_PROTO_DIR/types/params.proto" \ - "$TENDERMINT_PROTO_DIR/types/types.proto" \ - "$TENDERMINT_PROTO_DIR/types/validator.proto" \ - "$TENDERMINT_PROTO_DIR/version/types.proto" - -# Work around https://github.com/protobufjs/protobuf.js/issues/1477 -# shellcheck disable=SC2016 -sed -i "" -e 's/^const \$root =.*$/const \$root = {};/' "$GENERATED_DIR/codecimpl.js"