Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: telescope integration #262

Draft
wants to merge 5 commits into
base: release/v0.50
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions setup-telescope.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
brew install yarn # macos

npm install -g @cosmology/telescope create-cosmos-app


cca --boilerplate telescope
11 changes: 11 additions & 0 deletions simapp/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -325,9 +325,20 @@ explorer:

.PHONY: generate-webapp
generate-webapp:
ifeq (, $(shell which create-cosmos-app))
# $(error "No create-cosmos-app in $(PATH), consider doing apt-get install lzop")
sudo npm install --global create-cosmos-app
endif
cca --name web -e spawn

.PHONY: generate-typescript
generate-typescript:
ifeq (, $(shell which telescope))
sudo npm install -g @cosmology/telescope
endif
echo "TODO: Run telescope here"


help:
@echo "Usage: make <target>"
@echo ""
Expand Down
73 changes: 73 additions & 0 deletions simapp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,76 @@ Generate the template base with spawn. Requires [npm](https://nodejs.org/en/down
- `make generate-webapp` *[Cosmology Webapp Template](https://github.com/cosmology-tech/create-cosmos-app)*

Start the testnet with `make testnet`, and open the webapp `cd ./web && yarn dev`

## Typescript Client

<https://cosmology.zone/learn/telescope/overview-of-telescope>

```bash

# Install Telescope

telescope generate --name chain-js # TODO: how do I default set other information? like the __CHAINNAME__ ?
```
? [__CHAINNAME__] Enter chain name in all lowercase, e.g. osmosis localchain
? [__USERFULLNAME__] Enter author full name reece williams
? [__USEREMAIL__] Enter author email [email protected]
? [__MODULENAME__] Enter the module name chain-js
? [__MODULEDESC__] Enter the module description desc of chain-js
? [__USERNAME__] Enter your github username reecepbcups
? [__ACCESS__] Module access? public
? [__LICENSE__] Which license? MIT
? [scoped] use npm scopes? Yes
```

cd chain-js

telescope install @protobufs/tendermint @protobufs/ibc @protobufs/google @protobufs/gogoproto @protobufs/cosmos_proto @protobufs/cosmos

cp -r ../proto/* ./proto # I dislike this step, why? Can't I use the parent package for my custom modules, but then relative for the installed ones?
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would require glob check support within the string[] type


telescope transpile --protoDirs=./proto --outPath=./src/codegen --config ../.telescope.json

yarn add @cosmology/lcd

# install package
yarn

# publish
npm publish
```


## Connect to a TS locally without publish

```bash
cd chain-js
yarn link

mkdir t # testing
cd t

npm i typescript --save-dev
npx tsc --init

touch index.ts

```ts
import {nameservice} from '@reecepbcups/chain-js';

console.log(`Hello world`);

const client = nameservice.ClientFactory.createRPCQueryClient({ rpcEndpoint: 'http://localhost:26657' });

client.then((client) => {
client.nameservice.v1.params().then((res) => {
console.log(res);
});
});
```

yarn link "@reecepbcups/chain-js" # TODO: just simlink directly with relative paths

npx ts-node index.ts

```
Loading