Skip to content
This repository was archived by the owner on Mar 7, 2023. It is now read-only.

Commit a00c16b

Browse files
authored
Set typescript package release tag (trustwallet#1090)
* separate typescript package ci and release * add slip44 to CoinType * generate all proto models * LATEST_TAG might be empty * remove displayName for bsc
1 parent 61c55bf commit a00c16b

File tree

23 files changed

+141
-83
lines changed

23 files changed

+141
-83
lines changed

.github/workflows/ts-ci.yml

-47
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,15 @@ name: Typescript CI
33
on:
44
push:
55
branches: [ master ]
6-
paths:
7-
- typescript/**
86
pull_request:
97
branches: [ master ]
10-
paths:
11-
- typescript/**
128

139
jobs:
1410
build:
1511
runs-on: ubuntu-latest
1612
strategy:
1713
matrix:
1814
node-version: [14.x]
19-
outputs:
20-
publish_npm: ${{ steps.version.outputs.publish_npm }}
21-
publish_gpr: ${{ steps.version.outputs.publish_gpr }}
2215
steps:
2316
- uses: actions/checkout@v2
2417
- name: Use Node.js ${{ matrix.node-version }}
@@ -30,43 +23,3 @@ jobs:
3023
- name: Build and test
3124
run: yarn build && yarn test
3225
working-directory: typescript
33-
- name: Check if needed to publish
34-
id: version
35-
run: |
36-
echo "::set-output name=publish_npm::$(tools/check-npm-version)"
37-
echo "::set-output name=publish_gpr::$(tools/check-gpr-version)"
38-
working-directory: typescript
39-
env:
40-
TOKEN: ${{secrets.GITHUB_TOKEN}}
41-
publish-npm:
42-
needs: build
43-
if: needs.build.outputs.publish_npm == 'true'
44-
runs-on: ubuntu-latest
45-
steps:
46-
- uses: actions/checkout@v2
47-
- uses: actions/setup-node@v1
48-
with:
49-
node-version: 14
50-
registry-url: https://registry.npmjs.org/
51-
- name: Publish
52-
run: |
53-
yarn install && yarn build && npm publish --access public
54-
working-directory: typescript
55-
env:
56-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
57-
publish-gpr:
58-
needs: build
59-
if: needs.build.outputs.publish_gpr == 'true'
60-
runs-on: ubuntu-latest
61-
steps:
62-
- uses: actions/checkout@v2
63-
- uses: actions/setup-node@v1
64-
with:
65-
node-version: 14
66-
registry-url: https://npm.pkg.github.com/
67-
- name: Publish
68-
run: |
69-
yarn install && yarn build && npm publish --access public
70-
working-directory: typescript
71-
env:
72-
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

.github/workflows/ts-release.yml

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Typescript Release
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
pull_request:
8+
tags:
9+
- '*'
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
strategy:
15+
matrix:
16+
node-version: [14.x]
17+
outputs:
18+
publish_npm: ${{ steps.version.outputs.publish_npm }}
19+
publish_gpr: ${{ steps.version.outputs.publish_gpr }}
20+
steps:
21+
- uses: actions/checkout@v2
22+
- name: Use Node.js ${{ matrix.node-version }}
23+
uses: actions/setup-node@v1
24+
with:
25+
node-version: ${{ matrix.node-version }}
26+
- run: yarn install
27+
working-directory: typescript
28+
- name: Build and test
29+
run: yarn build && yarn test
30+
working-directory: typescript
31+
- name: Check if needed to publish
32+
id: version
33+
run: |
34+
tools/set-tag-version
35+
echo "::set-output name=publish_npm::$(tools/check-npm-version)"
36+
echo "::set-output name=publish_gpr::$(tools/check-gpr-version)"
37+
working-directory: typescript
38+
env:
39+
TOKEN: ${{secrets.GITHUB_TOKEN}}
40+
publish-npm:
41+
needs: build
42+
if: needs.build.outputs.publish_npm == 'true'
43+
runs-on: ubuntu-latest
44+
steps:
45+
- uses: actions/checkout@v2
46+
- uses: actions/setup-node@v1
47+
with:
48+
node-version: 14
49+
registry-url: https://registry.npmjs.org/
50+
- name: Publish
51+
run: |
52+
tools/set-tag-version
53+
yarn install && yarn build && npm publish --access public
54+
working-directory: typescript
55+
env:
56+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
57+
publish-gpr:
58+
needs: build
59+
if: needs.build.outputs.publish_gpr == 'true'
60+
runs-on: ubuntu-latest
61+
steps:
62+
- uses: actions/checkout@v2
63+
- uses: actions/setup-node@v1
64+
with:
65+
node-version: 14
66+
registry-url: https://npm.pkg.github.com/
67+
- name: Publish
68+
run: |
69+
tools/set-tag-version
70+
yarn install && yarn build && npm publish --access public
71+
working-directory: typescript
72+
env:
73+
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

android/app/src/androidTest/java/com/trustwallet/core/app/blockchains/CoinAddressDerivationTests.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,6 @@ class CoinAddressDerivationTests {
8989
FILECOIN -> assertEquals("f1zzykebxldfcakj5wdb5n3n7priul522fnmjzori", address)
9090
ELROND -> assertEquals("erd1jfcy8aeru6vlx4fe6h3pc3vlpe2cnnur5zetxdhp879yagq7vqvs8na4f8", address)
9191
BANDCHAIN -> assertEquals("band1624hqgend0s3d94z68fyka2y5jak6vd7u0l50r", address)
92-
BINANCESMARTCHAIN -> assertEquals("0x49784f90176D8D9d4A3feCDE7C1373dAAb5b13b8", address)
92+
SMARTCHAIN -> assertEquals("0x49784f90176D8D9d4A3feCDE7C1373dAAb5b13b8", address)
9393
}
9494
}

android/app/src/androidTest/java/com/trustwallet/core/app/blockchains/binancesmartchain/TestBinanceSmartChainAddress.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class TestBinanceSmartChainAddress {
2323

2424
val key = PrivateKey("727f677b390c151caf9c206fd77f77918f56904b5504243db9b21e51182c4c06".toHexByteArray())
2525
val pubkey = key.getPublicKeySecp256k1(false)
26-
val address = AnyAddress(pubkey, CoinType.BINANCESMARTCHAIN)
27-
val expected = AnyAddress("0xf3d468DBb386aaD46E92FF222adDdf872C8CC064", CoinType.BINANCESMARTCHAIN)
26+
val address = AnyAddress(pubkey, CoinType.SMARTCHAIN)
27+
val expected = AnyAddress("0xf3d468DBb386aaD46E92FF222adDdf872C8CC064", CoinType.SMARTCHAIN)
2828

2929
assertEquals(address.description(), expected.description())
3030
}

codegen/bin/coins

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require 'json'
88
def self.format_name(n)
99
formatted = n
1010
formatted = formatted.sub(/^([a-z]+)/, &:upcase)
11-
formatted = formatted.sub(/\s/, '')
11+
formatted = formatted.gsub(/\s/, '')
1212
formatted
1313
end
1414

coins.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -1468,8 +1468,7 @@
14681468
},
14691469
{
14701470
"id": "bsc",
1471-
"name": "Binance SmartChain",
1472-
"displayName": "Smart Chain",
1471+
"name": "Smart Chain",
14731472
"coinId": 10000714,
14741473
"slip44": 714,
14751474
"symbol": "BNB",

docs/coins.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,4 @@ This list is generated from [./coins.json](../coins.json)
6464
| 19167 | Zelcash | ZEL | <img src="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/zelcash/info/logo.png" width="32" /> | <https://zel.cash> |
6565
| 5718350 | Wanchain | WAN | <img src="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/wanchain/info/logo.png" width="32" /> | <https://wanchain.org> |
6666
| 5741564 | Waves | WAVES | <img src="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/waves/info/logo.png" width="32" /> | <https://wavesplatform.com> |
67-
| 10000714 | Binance SmartChain | BNB | <img src="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bsc/info/logo.png" width="32" /> | <https://www.binance.org/en/smartChain> |
67+
| 10000714 | Smart Chain | BNB | <img src="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bsc/info/logo.png" width="32" /> | <https://www.binance.org/en/smartChain> |

include/TrustWalletCore/TWCoinType.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ enum TWCoinType {
8282
TWCoinTypeFilecoin = 461,
8383
TWCoinTypeElrond = 508,
8484
TWCoinTypeBandChain = 494,
85-
TWCoinTypeBinanceSmartChain = 10000714,
85+
TWCoinTypeSmartChain = 10000714,
8686
};
8787

8888
/// Returns the blockchain for a coin type.

src/Ethereum/Entry.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Entry: public CoinEntry {
2323
TWCoinTypePOANetwork,
2424
TWCoinTypeThunderToken,
2525
TWCoinTypeTomoChain,
26-
TWCoinTypeBinanceSmartChain,
26+
TWCoinTypeSmartChain,
2727
};
2828
}
2929
virtual bool validateAddress(TWCoinType coin, const std::string& address, TW::byte p2pkh, TW::byte p2sh, const char* hrp) const;

src/interface/TWAnyAddress.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ TWData* _Nonnull TWAnyAddressData(struct TWAnyAddress* _Nonnull address) {
144144
case TWCoinTypeTheta:
145145
case TWCoinTypeWanchain:
146146
case TWCoinTypeAion:
147-
case TWCoinTypeBinanceSmartChain:
147+
case TWCoinTypeSmartChain:
148148
data = parse_hex(string);
149149
break;
150150

swift/Tests/Blockchains/BinanceSmartChainTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class BinanceSmartChainTests: XCTestCase {
1212
func testAddress() {
1313
let key = PrivateKey(data: Data(hexString: "727f677b390c151caf9c206fd77f77918f56904b5504243db9b21e51182c4c06")!)!
1414
let pubkey = key.getPublicKeySecp256k1(compressed: false)
15-
let address = AnyAddress(publicKey: pubkey, coin: .binanceSmartChain)
16-
let expected = AnyAddress(string: "0xf3d468DBb386aaD46E92FF222adDdf872C8CC064", coin: .binanceSmartChain)!
15+
let address = AnyAddress(publicKey: pubkey, coin: .smartChain)
16+
let expected = AnyAddress(string: "0xf3d468DBb386aaD46E92FF222adDdf872C8CC064", coin: .smartChain)!
1717

1818
XCTAssertEqual(address.description, expected.description)
1919
}

swift/Tests/CoinAddressDerivationTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class CoinAddressDerivationTests: XCTestCase {
199199
case .elrond:
200200
let expectedResult = "erd1jfcy8aeru6vlx4fe6h3pc3vlpe2cnnur5zetxdhp879yagq7vqvs8na4f8"
201201
assertCoinDerivation(coin, expectedResult, derivedAddress, address)
202-
case .binanceSmartChain:
202+
case .smartChain:
203203
let expectedResult = "0x49784f90176D8D9d4A3feCDE7C1373dAAb5b13b8"
204204
assertCoinDerivation(coin, expectedResult, derivedAddress, address)
205205
@unknown default:

swift/Tests/Keystore/KeyStoreTests.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ class KeyStoreTests: XCTestCase {
8181
}
8282

8383
func testCreateHDWallet() throws {
84-
let coins = [CoinType.ethereum, .binance, .binanceSmartChain]
84+
let coins = [CoinType.ethereum, .binance, .smartChain]
8585
let keyStore = try KeyStore(keyDirectory: keyDirectory)
8686
let newWallet = try keyStore.createWallet(name: "name", password: "password", coins: coins)
8787

8888
XCTAssertEqual(newWallet.accounts.count, 3)
8989
XCTAssertEqual(keyStore.wallets.count, 5)
9090
XCTAssertNoThrow(try newWallet.getAccount(password: "password", coin: .ethereum))
9191
XCTAssertNoThrow(try newWallet.getAccount(password: "password", coin: .binance))
92-
XCTAssertNoThrow(try newWallet.getAccount(password: "password", coin: .binanceSmartChain))
92+
XCTAssertNoThrow(try newWallet.getAccount(password: "password", coin: .smartChain))
9393
}
9494

9595
func testUpdateKey() throws {
@@ -255,11 +255,11 @@ class KeyStoreTests: XCTestCase {
255255

256256
let password = "e28ddf66cec05c1fc09939a00628b230459202b2493fccac288038ef37815723"
257257
let keyStore = try KeyStore(keyDirectory: keyDirectory)
258-
_ = try keyStore.addAccounts(wallet: keyStore.bnbWallet, coins: [.binanceSmartChain], password: password)
258+
_ = try keyStore.addAccounts(wallet: keyStore.bnbWallet, coins: [.smartChain], password: password)
259259

260260
let account = keyStore.bnbWallet.accounts[3]
261261
XCTAssertEqual(keyStore.bnbWallet.accounts.count, 4)
262-
XCTAssertEqual(account.coin, CoinType.binanceSmartChain)
262+
XCTAssertEqual(account.coin, CoinType.smartChain)
263263
XCTAssertEqual(account.address, "0x5dEc7A9299360aEb44c83B8F730F2BF5Dd1688bC")
264264

265265
let saved = try String(contentsOf: keyStore.bnbWallet.keyURL)

tests/BinanceSmartChain/SignerTests.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ TEST(BinanceSmartChain, SignTokenTransfer) {
8383
const std::string expected = "f8ab1e8504a817c800830f424094ed24fc36d5ee211ea25a80239fb8c4cfd80f12ee80b844a9059cbb00000000000000000000000031be00eb1fc8e14a696dbc72f746ec3e95f49683000000000000000000000000000000000000000000000000002386f26fc1000081e6a0aa9d5e9a947e96f728fe5d3e6467000cd31a693c00270c33ec64b4abddc29516a00bf1d5646139b2bcca1ad64e6e79f45b7d1255de603b5a3765cbd9544ae148d0";
8484

8585
Proto::SigningOutput output;
86-
ANY_SIGN(input, TWCoinTypeBinanceSmartChain);
86+
ANY_SIGN(input, TWCoinTypeSmartChain);
8787

8888
EXPECT_EQ(hex(output.encoded()), expected);
8989
}

tests/BinanceSmartChain/TWAnyAddressTests.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ TEST(TWBinanceSmartChain, Address) {
1818
auto publicKey = TWPrivateKeyGetPublicKeySecp256k1(privateKey.get(), false);
1919
auto string = "0xf3d468DBb386aaD46E92FF222adDdf872C8CC064";
2020

21-
auto address = WRAP(TWAnyAddress, TWAnyAddressCreateWithPublicKey(publicKey, TWCoinTypeBinanceSmartChain));
22-
auto expected = WRAP(TWAnyAddress, TWAnyAddressCreateWithString(STRING(string).get(), TWCoinTypeBinanceSmartChain));
21+
auto address = WRAP(TWAnyAddress, TWAnyAddressCreateWithPublicKey(publicKey, TWCoinTypeSmartChain));
22+
auto expected = WRAP(TWAnyAddress, TWAnyAddressCreateWithString(STRING(string).get(), TWCoinTypeSmartChain));
2323

2424
auto addressString = WRAPS(TWAnyAddressDescription(address.get()));
2525
auto expectedString = WRAPS(TWAnyAddressDescription(expected.get()));

tests/BinanceSmartChain/TWCoinTypeTests.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@
1414

1515

1616
TEST(TWBinanceSmartChainCoinType, TWCoinType) {
17-
auto symbol = WRAPS(TWCoinTypeConfigurationGetSymbol(TWCoinTypeBinanceSmartChain));
17+
auto symbol = WRAPS(TWCoinTypeConfigurationGetSymbol(TWCoinTypeSmartChain));
1818
auto txId = TWStringCreateWithUTF8Bytes("0xb9ae2e808fe8e57171f303ad8f6e3fd17d949b0bfc7b4db6e8e30a71cc517d7e");
19-
auto txUrl = WRAPS(TWCoinTypeConfigurationGetTransactionURL(TWCoinTypeBinanceSmartChain, txId));
19+
auto txUrl = WRAPS(TWCoinTypeConfigurationGetTransactionURL(TWCoinTypeSmartChain, txId));
2020
auto accId = TWStringCreateWithUTF8Bytes("0x35552c16704d214347f29Fa77f77DA6d75d7C752");
21-
auto accUrl = WRAPS(TWCoinTypeConfigurationGetAccountURL(TWCoinTypeBinanceSmartChain, accId));
22-
auto id = WRAPS(TWCoinTypeConfigurationGetID(TWCoinTypeBinanceSmartChain));
23-
auto name = WRAPS(TWCoinTypeConfigurationGetName(TWCoinTypeBinanceSmartChain));
21+
auto accUrl = WRAPS(TWCoinTypeConfigurationGetAccountURL(TWCoinTypeSmartChain, accId));
22+
auto id = WRAPS(TWCoinTypeConfigurationGetID(TWCoinTypeSmartChain));
23+
auto name = WRAPS(TWCoinTypeConfigurationGetName(TWCoinTypeSmartChain));
2424

25-
ASSERT_EQ(TWCoinTypeConfigurationGetDecimals(TWCoinTypeBinanceSmartChain), 18);
26-
ASSERT_EQ(TWBlockchainEthereum, TWCoinTypeBlockchain(TWCoinTypeBinanceSmartChain));
27-
ASSERT_EQ(0x0, TWCoinTypeP2shPrefix(TWCoinTypeBinanceSmartChain));
28-
ASSERT_EQ(0x0, TWCoinTypeStaticPrefix(TWCoinTypeBinanceSmartChain));
25+
ASSERT_EQ(TWCoinTypeConfigurationGetDecimals(TWCoinTypeSmartChain), 18);
26+
ASSERT_EQ(TWBlockchainEthereum, TWCoinTypeBlockchain(TWCoinTypeSmartChain));
27+
ASSERT_EQ(0x0, TWCoinTypeP2shPrefix(TWCoinTypeSmartChain));
28+
ASSERT_EQ(0x0, TWCoinTypeStaticPrefix(TWCoinTypeSmartChain));
2929
assertStringsEqual(symbol, "BNB");
3030
assertStringsEqual(txUrl, "https://bscscan.com/tx/0xb9ae2e808fe8e57171f303ad8f6e3fd17d949b0bfc7b4db6e8e30a71cc517d7e");
3131
assertStringsEqual(accUrl, "https://bscscan.com/address/0x35552c16704d214347f29Fa77f77DA6d75d7C752");

tests/Keystore/StoredKeyTests.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const auto password = TW::data(string(passwordString));
2525
const auto mnemonic = "team engine square letter hero song dizzy scrub tornado fabric divert saddle";
2626
const TWCoinType coinTypeBc = TWCoinTypeBitcoin;
2727
const TWCoinType coinTypeBnb = TWCoinTypeBinance;
28-
const TWCoinType coinTypeBsc = TWCoinTypeBinanceSmartChain;
28+
const TWCoinType coinTypeBsc = TWCoinTypeSmartChain;
2929

3030
TEST(StoredKey, CreateWithMnemonic) {
3131
auto key = StoredKey::createWithMnemonic("name", password, mnemonic);

tests/interface/TWHDWalletTests.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ TEST(HDWallet, DeriveElrond) {
258258
TEST(HDWallet, DeriveBinance) {
259259
auto wallet = WRAP(TWHDWallet, TWHDWalletCreateWithMnemonic(words.get(), passphrase.get()));
260260
auto key = WRAP(TWPrivateKey, TWHDWalletGetKeyForCoin(wallet.get(), TWCoinTypeBinance));
261-
auto key2 = WRAP(TWPrivateKey, TWHDWalletGetKeyForCoin(wallet.get(), TWCoinTypeBinanceSmartChain));
261+
auto key2 = WRAP(TWPrivateKey, TWHDWalletGetKeyForCoin(wallet.get(), TWCoinTypeSmartChain));
262262
auto keyData = WRAPD(TWPrivateKeyData(key.get()));
263263
auto keyData2 = WRAPD(TWPrivateKeyData(key2.get()));
264264

typescript/codegen/bin/codegen

+8-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ const prettier = require("prettier");
77
const main = async () => {
88
const coins = require('../../../coins.json')
99
coins.forEach((coin) => {
10-
coin.slip44 = coin['derivationPath'].split('/')[2].replace('\'', '');
10+
if (!coin['slip44']) {
11+
coin.slip44 = Number(coin['derivationPath'].split('/')[2].replace('\'', ''));
12+
}
1113
})
1214
await generateCoinType(coins);
1315
};
@@ -38,6 +40,11 @@ const generateCoinType = async (coins) => {
3840
name: 'symbol',
3941
returnType: 'string',
4042
body: (coin) => `return '${coin.symbol}'`
43+
},
44+
{
45+
name: 'slip44',
46+
returnType: 'number',
47+
body: (coin) => `return ${coin.slip44}`
4148
}
4249
];
4350

typescript/codegen/templates/core_types.ejs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
export enum CoinType {
88
<% coins.forEach((coin) => { -%>
9-
<%-coin.id%> = <%-coin.slip44%>,
9+
<%-coin.id%> = <%-coin.coinId%>,
1010
<% }) %>
1111
}
1212

typescript/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
{
22
"name": "@trustwallet/wallet-core",
3-
"version": "0.0.6",
3+
"version": "2.2.9",
44
"description": "wallet core types and protobuf messages",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
77
"scripts": {
88
"test": "mocha -r ts-node/register tests/**/*.test.ts",
99
"generate": "yarn codegen:coin && yarn codegen:js && yarn codegen:ts",
1010
"codegen:coin": "codegen/bin/codegen",
11-
"codegen:js": "pbjs -t static-module ../src/proto/Ethereum.proto --no-delimited --force-long -o src/generated/core_proto.js",
11+
"codegen:js": "pbjs -t static-module '../src/proto/*.proto' --no-delimited --force-long -o src/generated/core_proto.js",
1212
"codegen:ts": "pbts -o src/generated/core_proto.d.ts src/generated/core_proto.js",
1313
"clean": "rm -rf dist src/generated && mkdir -p dist/generated src/generated",
14-
"build": "yarn clean && yarn generate && cp src/generated/core_proto.* dist/generated && tsc --skipLibCheck"
14+
"build": "yarn clean && yarn generate && cp src/generated/core_proto.d.ts src/generated/core_proto.js dist/generated && tsc --skipLibCheck"
1515
},
1616
"repository": {
1717
"type": "git",

0 commit comments

Comments
 (0)