Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdf42368f7 | ||
|
|
36ab5ea5e2 | ||
|
|
c5c8469038 | ||
|
|
83d0121a28 | ||
|
|
aff74ebde3 | ||
|
|
be4619ba3d | ||
|
|
17bc2e9fa0 | ||
|
|
66e2382f26 | ||
|
|
6c299f81c6 | ||
|
|
a4fcba6ff6 | ||
|
|
1a3507366e | ||
|
|
65939dbe9d | ||
|
|
6914411232 | ||
|
|
c79f46aaa2 | ||
|
|
cea09b2c8b | ||
|
|
bc23ed9fc9 | ||
|
|
a4f286e89a | ||
|
|
f112f9eb5e | ||
|
|
010552ca44 | ||
|
|
9ae4b1066e | ||
|
|
1a57abde6e | ||
|
|
cf4b44940e | ||
|
|
81e19aace4 | ||
|
|
7341c32df5 | ||
|
|
bb1ed6cfcd | ||
|
|
55dcfb5e18 | ||
|
|
2fe9e5a125 | ||
|
|
e24385213d | ||
|
|
9cd81a23e7 | ||
|
|
64348860cb | ||
|
|
ecfceb5d0a | ||
|
|
cc840c37a2 | ||
|
|
527af12b0f | ||
|
|
9f2b98d5a8 | ||
|
|
4bd767fb62 | ||
|
|
cff29dfd2d | ||
|
|
d26b80905c | ||
|
|
4249679882 | ||
|
|
ff27055808 | ||
|
|
54f8acb27f | ||
|
|
017bebe8bb | ||
|
|
89f5670d8b | ||
|
|
b9e2293bee | ||
|
|
3b45418e47 | ||
|
|
6af7f6ef24 | ||
|
|
a0b85ee7f8 | ||
|
|
2e0c6c3368 | ||
|
|
1d36284369 | ||
|
|
94788692bb | ||
|
|
1f3f5d5980 | ||
|
|
90c2638221 | ||
|
|
98e02a0baa | ||
|
|
e96a204bb5 | ||
|
|
0dc4ec48da | ||
|
|
5d5c7e4c0a | ||
|
|
76c973f5c5 | ||
|
|
7608f2eed9 | ||
|
|
e585aa1899 | ||
|
|
82152352ea | ||
|
|
515e1d62af | ||
|
|
2d2e6bc1bf | ||
|
|
5bb89db279 | ||
|
|
36d8f6c922 | ||
|
|
8224beb85d | ||
|
|
ae6856f124 | ||
|
|
6953e22168 | ||
|
|
8c815ac601 | ||
|
|
9f1f5c9f5f | ||
|
|
b4acb2afa8 | ||
|
|
7287e746e3 | ||
|
|
ea4d5ab2e9 | ||
|
|
0dbc359f07 | ||
|
|
1e380ca1eb | ||
|
|
6bbe961a0f | ||
|
|
0fa8484208 | ||
|
|
30d5f5c118 | ||
|
|
3bcd1d17f6 | ||
|
|
befdfca6b2 | ||
|
|
c9b9f80987 | ||
|
|
0eae8fb0f7 | ||
|
|
903c3b120f | ||
|
|
6f8ffcbb99 | ||
|
|
2563a0ac3d | ||
|
|
d73ca5805a | ||
|
|
1e20b7725b | ||
|
|
97ec9e6626 | ||
|
|
120d5304f1 | ||
|
|
7c59232204 | ||
|
|
0df0bf094e | ||
|
|
5b16f0cf36 | ||
|
|
c1b7cd5885 | ||
|
|
ec7bae841e | ||
|
|
06fba7bdca | ||
|
|
b3f19247d5 | ||
|
|
5e562d7a59 | ||
|
|
b4479f3747 | ||
|
|
6dc79a0b7c | ||
|
|
e2aa034843 | ||
|
|
e99bc1163b | ||
|
|
a29dae61c5 | ||
|
|
777a04cc64 | ||
|
|
1f22566934 | ||
|
|
0011e5219a | ||
|
|
ce331bf6bd | ||
|
|
60d795f480 | ||
|
|
75a5f2fe48 | ||
|
|
dfda191c8b | ||
|
|
de09a2aa90 | ||
|
|
5e7cb9db9e | ||
|
|
61eca6100b | ||
|
|
4ef36d51ad | ||
|
|
880f560613 | ||
|
|
3f21278634 | ||
|
|
3c1e3573c9 | ||
|
|
6f8b14759d | ||
|
|
057e233cbf | ||
|
|
5dcc12e94d | ||
|
|
17886d60c0 | ||
|
|
b40fca79cb | ||
|
|
c04a228100 | ||
|
|
b3b1c7622c | ||
|
|
06f0813f2f | ||
|
|
5e086d6579 | ||
|
|
6fef3e0b2e | ||
|
|
7a7ee378c8 | ||
|
|
6fd2edcd76 | ||
|
|
73d17faaaa | ||
|
|
47bed3a2ba | ||
|
|
280a8f89bd | ||
|
|
8140d44d8a | ||
|
|
8b7717961f | ||
|
|
e462046c82 | ||
|
|
d261b2e464 | ||
|
|
73898ada43 | ||
|
|
bb0831a023 | ||
|
|
012719b0bf | ||
|
|
c8dc222435 | ||
|
|
7e0588b690 | ||
|
|
3dc6e8a128 | ||
|
|
eb5cebfb7c | ||
|
|
1f6417a9a8 | ||
|
|
306592f6b1 | ||
|
|
673945c8cb | ||
|
|
8a30f168c3 | ||
|
|
35708e8414 | ||
|
|
fb55db7797 | ||
|
|
2aca02ecd4 | ||
|
|
bba72e7191 | ||
|
|
a3ea860144 | ||
|
|
6e20baf317 | ||
|
|
f8742c8523 | ||
|
|
c6b84b8c7e | ||
|
|
815c1f5eeb | ||
|
|
e7d454787d | ||
|
|
d5c541db67 | ||
|
|
2cf12616ed | ||
|
|
2dee1c86e6 | ||
|
|
023b1e8610 | ||
|
|
e9f3efa0ec | ||
|
|
529119d9c3 | ||
|
|
3748d578e0 | ||
|
|
6af09d344d | ||
|
|
951ee2be17 | ||
|
|
7d902d1b6e | ||
|
|
cba373ab8a | ||
|
|
ab1c1bf311 |
+2
-1
@@ -26,4 +26,5 @@
|
|||||||
8.0.5
|
8.0.5
|
||||||
8.1.2
|
8.1.2
|
||||||
8.2.2
|
8.2.2
|
||||||
8.3.2
|
8.3.2
|
||||||
|
8.3.3
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
title: SS58 registry is outdated
|
|
||||||
labels: ['ci', '@networks']
|
|
||||||
---
|
|
||||||
|
|
||||||
cc @polkadot-js/notifications
|
|
||||||
|
|
||||||
Discrepancies detected between https://github.com/paritytech/substrate/blob/master/ss58-registry.json and https://github.com/polkadot-js/common/blob/master/packages/networks/src/substrate.ts
|
|
||||||
|
|
||||||
Check the nightly cron output (or via `yarn networks:crosscheck` locally) and run `yarn networks:sync` to update. The output as found from the test includes:
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
name: bot
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
approve:
|
||||||
|
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: jacogr/action-approve@master
|
||||||
|
with:
|
||||||
|
authors: jacogr
|
||||||
|
labels: -auto
|
||||||
|
token: ${{ secrets.GH_PAT_BOT }}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
name: bot
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
merge:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: jacogr/action-merge@master
|
||||||
|
with:
|
||||||
|
checks: build,lint,test
|
||||||
|
labels: -auto
|
||||||
|
strategy: squash
|
||||||
|
token: ${{ secrets.GH_PAT_BOT }}
|
||||||
@@ -7,6 +7,8 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
lock:
|
lock:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false
|
||||||
steps:
|
steps:
|
||||||
- uses: dessant/lock-threads@v2
|
- uses: dessant/lock-threads@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -8,11 +8,12 @@ jobs:
|
|||||||
step: ['lint', 'test', 'build']
|
step: ['lint', 'test', 'build']
|
||||||
name: ${{ matrix.step }}
|
name: ${{ matrix.step }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false
|
||||||
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: ${{ matrix.step }}
|
- name: ${{ matrix.step }}
|
||||||
env:
|
|
||||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
|
||||||
run: |
|
run: |
|
||||||
yarn install --immutable | grep -v 'YN0013'
|
yarn install --immutable | grep -v 'YN0013'
|
||||||
yarn ${{ matrix.step }}
|
yarn ${{ matrix.step }}
|
||||||
|
|||||||
@@ -12,17 +12,18 @@ jobs:
|
|||||||
step: ['build:release']
|
step: ['build:release']
|
||||||
name: ${{ matrix.step }}
|
name: ${{ matrix.step }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false
|
||||||
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||||
|
GH_PAT: ${{ secrets.GH_PAT }}
|
||||||
|
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
token: ${{ secrets.GH_PAT }}
|
token: ${{ secrets.GH_PAT }}
|
||||||
- name: ${{ matrix.step }}
|
- name: ${{ matrix.step }}
|
||||||
env:
|
|
||||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
|
||||||
GH_PAT: ${{ secrets.GH_PAT }}
|
|
||||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
run: |
|
run: |
|
||||||
yarn install --immutable | grep -v 'YN0013'
|
yarn install --immutable | grep -v 'YN0013'
|
||||||
yarn ${{ matrix.step }}
|
yarn ${{ matrix.step }}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ jobs:
|
|||||||
check:
|
check:
|
||||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: returntocorp/semgrep-action@v1
|
- uses: returntocorp/semgrep-action@v1
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
name: SS58
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '15 4/6 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ss58:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: check
|
|
||||||
env:
|
|
||||||
CI_LOG: 123
|
|
||||||
run: |
|
|
||||||
yarn install --immutable | grep -v 'YN0013'
|
|
||||||
yarn build
|
|
||||||
yarn networks:crosscheck
|
|
||||||
|
|
||||||
- name: issue
|
|
||||||
if: ${{ failure() }}
|
|
||||||
uses: JasonEtco/create-an-issue@v2
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GH_PAT_BOT }}
|
|
||||||
with:
|
|
||||||
filename: .github/ss58-check.md
|
|
||||||
update_existing: true
|
|
||||||
@@ -6,6 +6,8 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
YARN_ENABLE_SCRIPTS: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v3
|
- uses: actions/stale@v3
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
--test-*
|
--test-*
|
||||||
_book/
|
_book/
|
||||||
build/
|
build/
|
||||||
|
build-cjs/
|
||||||
|
build-esm/
|
||||||
build-docs/
|
build-docs/
|
||||||
coverage/
|
coverage/
|
||||||
docs/.vuepress/dist/
|
docs/.vuepress/dist/
|
||||||
|
|||||||
Vendored
-768
File diff suppressed because one or more lines are too long
+785
File diff suppressed because one or more lines are too long
+1
-1
@@ -10,4 +10,4 @@ plugins:
|
|||||||
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
||||||
spec: "@yarnpkg/plugin-version"
|
spec: "@yarnpkg/plugin-version"
|
||||||
|
|
||||||
yarnPath: .yarn/releases/yarn-3.1.1.cjs
|
yarnPath: .yarn/releases/yarn-3.2.0.cjs
|
||||||
|
|||||||
@@ -1,5 +1,101 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
|
## 9.2.1 May 13, 2022
|
||||||
|
|
||||||
|
Contributed:
|
||||||
|
|
||||||
|
- Add Ledger support for Acala (Thanks to https://github.com/ntduan)
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Optimize `u8aToHex` with direct (non-hex) conversion
|
||||||
|
- Change all occurences of `.substr(...)` to `.substring(...)`
|
||||||
|
- Sync with upstream Substrate ss58 registry
|
||||||
|
- Mark deprecated function signatures (no removals)
|
||||||
|
- Re-enable auto init of `cryptoWaitReady()`
|
||||||
|
- Upgrade to `@polkadot/wasm-crypto` 6.1.1
|
||||||
|
|
||||||
|
|
||||||
|
## 9.1.1 Apr 30, 2022
|
||||||
|
|
||||||
|
Contributed:
|
||||||
|
|
||||||
|
- Add Ledger support for Statemint (Thanks to https://github.com/carlosala)
|
||||||
|
- Add Ledger support for xxnetwork (Thanks to https://github.com/xx-labs)
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Adjust/dedupe output from `detectPackage`
|
||||||
|
- Adjust `isHex` performance test
|
||||||
|
- Add field-level comments to some `*Options` structures
|
||||||
|
- Add new Rococo genesisHash (reset)
|
||||||
|
|
||||||
|
|
||||||
|
## 9.0.1 Apr 9, 2022
|
||||||
|
|
||||||
|
- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage.
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Be explicit in `@polkadot/util-crypto` re-exports from `@polkadot/networks`
|
||||||
|
- Output commonjs files under the `cjs/**` root
|
||||||
|
- Upgrade to `@polkadot/wasm-crypto` 6.0.1
|
||||||
|
|
||||||
|
|
||||||
|
## 8.7.1 Mar 27, 2022
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Fix race-condition with wasm overrides, make `cryptoWaitReady` lazy
|
||||||
|
- Additional tests for `BN` & `BigInt` negative conversions
|
||||||
|
- Upgrade to `@polkadot/wasm-crypto` 5.1.1
|
||||||
|
|
||||||
|
|
||||||
|
## 8.6.1 Mar 19, 2022
|
||||||
|
|
||||||
|
**Important** This contains an upgraded version of `@polkadot/wasm-crypto`. For users of asm.js, e.g. React Native, there are some additional upgrade instructions in the release notes for this version https://github.com/polkadot-js/wasm/releases/tag/v5.0.1
|
||||||
|
|
||||||
|
Contributed:
|
||||||
|
|
||||||
|
- Add aditional Dock mainnet genesis (Thanks to https://github.com/lovesh)
|
||||||
|
- Add Westend genesis (Thanks to https://github.com/Nick-1979)
|
||||||
|
- Update README with ss58 links (Thanks to https://github.com/Nick-197)
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Ensure invalid secp256k1 publicKeys are not returned
|
||||||
|
- Cater for Expo v41+ in RN random value generation
|
||||||
|
- Fixed for RN environment imports
|
||||||
|
- Internal split of details in `@polkadot/networks`
|
||||||
|
- Additional workaround for Vite bundling
|
||||||
|
- Upgrade to `@polkadot/wasm-crypto` 5.0.1
|
||||||
|
|
||||||
|
|
||||||
|
## 8.5.1 Mar 12, 2022
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Adjust for bundlers where `import.meta.url` is undefined
|
||||||
|
- Upgrade dependencies to latest stable versions
|
||||||
|
|
||||||
|
|
||||||
|
## 8.4.1 Feb 14, 2022
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Use upstream `@substrate/ss58-registry` (instead of duplicating here)
|
||||||
|
- Swap `micro-base` to `@scure/base` (same package, audited)
|
||||||
|
- Bump `bn.js` library to latest 5.2.0 (has impact on e.g. API)
|
||||||
|
- Upgrade dependencies to latest stable versions
|
||||||
|
|
||||||
|
|
||||||
|
## 8.3.3 Jan 23, 2022
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Sync with upstream Substrate ss58 registry
|
||||||
|
|
||||||
|
|
||||||
## 8.3.2 Jan 15, 2022
|
## 8.3.2 Jan 15, 2022
|
||||||
|
|
||||||
Changes:
|
Changes:
|
||||||
|
|||||||
+8
-3
@@ -1,14 +1,16 @@
|
|||||||
1241 Jaco 8.3.2 (#1382)
|
1316 Jaco 9.2.1 (#1489)
|
||||||
9 Antoine Estienne Add eth uri keyring test (#1291)
|
9 Antoine Estienne Add eth uri keyring test (#1291)
|
||||||
6 Amaury Martiny Add tests from Rust (#283)
|
6 Amaury Martiny Add tests from Rust (#283)
|
||||||
5 kwingram25 Add BN consts and timeToString (#610)
|
5 kwingram25 Add BN consts and timeToString (#610)
|
||||||
4 Adam Dossa Update Polymesh Genesis Hash (#1193)
|
4 Adam Dossa Update Polymesh Genesis Hash (#1193)
|
||||||
3 Jakub Pánik HydraDX Snakenet Gen3-1 (#977)
|
4 Jakub Pánik Add basilisk 🐍 (#1396)
|
||||||
3 Luke Schoen docs: Fix example in readme since we use default imports (#243)
|
3 Luke Schoen docs: Fix example in readme since we use default imports (#243)
|
||||||
2 AndreasGassmann feat(dependencies): remove moment.js (#530)
|
2 AndreasGassmann feat(dependencies): remove moment.js (#530)
|
||||||
2 Gav Wood Fix stake:unstake (#182)
|
2 Gav Wood Fix stake:unstake (#182)
|
||||||
2 Hyungsuk Kang Add cross client Encryption/Decryption (#496)
|
2 Hyungsuk Kang Add cross client Encryption/Decryption (#496)
|
||||||
2 Jared Norris Add Sora network (#1306)
|
2 Jared Norris Add Sora network (#1306)
|
||||||
|
2 Kami Adding Westend genesis. (#1429)
|
||||||
|
2 Lovesh Harchandani Update genesis hash of Dock mainnet (#1436)
|
||||||
2 Nantian fix bigint type (#1079)
|
2 Nantian fix bigint type (#1079)
|
||||||
2 pan add bifrost (#1296)
|
2 pan add bifrost (#1296)
|
||||||
2 Stefanie Doll Add missing dependencies to util-crypto (#424)
|
2 Stefanie Doll Add missing dependencies to util-crypto (#424)
|
||||||
@@ -18,19 +20,21 @@
|
|||||||
1 amphineko chore: fix typo in versionDetect messages (#941)
|
1 amphineko chore: fix typo in versionDetect messages (#941)
|
||||||
1 Axel Chalon Simplify @polkadot/keyring KeyringPair (#419)
|
1 Axel Chalon Simplify @polkadot/keyring KeyringPair (#419)
|
||||||
1 Brad Larson [FIX] Adjust error message (#646)
|
1 Brad Larson [FIX] Adjust error message (#646)
|
||||||
|
1 Carlo Sala feat(networks): add statemint to KnownLedger (#1467)
|
||||||
1 Eliott Teissonniere add nodle ledger specs (#1089)
|
1 Eliott Teissonniere add nodle ledger specs (#1089)
|
||||||
1 h4x3rotab Throws an error when signing with a locked keypair (#578)
|
1 h4x3rotab Throws an error when signing with a locked keypair (#578)
|
||||||
1 Harry Liu Update README.md (#446)
|
1 Harry Liu Update README.md (#446)
|
||||||
|
1 Hoon Kim replace plasm genesis with astar (#1397)
|
||||||
1 Hussein Ait-Lahcen Add Picasso Genesis Hash (#1261)
|
1 Hussein Ait-Lahcen Add Picasso Genesis Hash (#1261)
|
||||||
1 Igor Support genshiro network (#1148)
|
1 Igor Support genshiro network (#1148)
|
||||||
1 Jake Naviasky Add evmToAddress and addressToEvm crypto utils. (#705)
|
1 Jake Naviasky Add evmToAddress and addressToEvm crypto utils. (#705)
|
||||||
1 JesseAbram added check if valid address to docs (#440)
|
1 JesseAbram added check if valid address to docs (#440)
|
||||||
1 joe petrowski Add example for multisig address creation (#590)
|
1 joe petrowski Add example for multisig address creation (#590)
|
||||||
1 Lezek123 logger - wildcard include/exclude with DEBUG env (#932)
|
1 Lezek123 logger - wildcard include/exclude with DEBUG env (#932)
|
||||||
1 Lovesh Harchandani Add Dock network id for address generation (#640)
|
|
||||||
1 Mario Neises remove redudant export (#257)
|
1 Mario Neises remove redudant export (#257)
|
||||||
1 Miguel Hervas Add CFG Ledger Support (#1057)
|
1 Miguel Hervas Add CFG Ledger Support (#1057)
|
||||||
1 nahuseyoum Reserving 65 for Aventus based on the new extended range (#871)
|
1 nahuseyoum Reserving 65 for Aventus based on the new extended range (#871)
|
||||||
|
1 Nantian add acala ledger config (#1485)
|
||||||
1 qwer951123 Add acala genesis (#1161)
|
1 qwer951123 Add acala genesis (#1161)
|
||||||
1 Raoul Millais Fix yarn add instructions in x-global README (#873)
|
1 Raoul Millais Fix yarn add instructions in x-global README (#873)
|
||||||
1 Raymond Zhong Add Edgeware ledger app (#1006)
|
1 Raymond Zhong Add Edgeware ledger app (#1006)
|
||||||
@@ -42,4 +46,5 @@
|
|||||||
1 Tore19 Add stafi genesis hash (#1096)
|
1 Tore19 Add stafi genesis hash (#1096)
|
||||||
1 Wei Tang ss58: add Kulupu prefix to the list (#595)
|
1 Wei Tang ss58: add Kulupu prefix to the list (#595)
|
||||||
1 WoeOm Handing high precision scenes (#450)
|
1 WoeOm Handing high precision scenes (#450)
|
||||||
|
1 xx network Add xxnetwork genesis hash and ledger app (#1463)
|
||||||
1 Yuri Extra check for process for browser bundles (#923)
|
1 Yuri Extra check for process for browser bundles (#923)
|
||||||
+7
-8
@@ -2,15 +2,15 @@
|
|||||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||||
"bugs": "https://github.com/polkadot-js/common/issues",
|
"bugs": "https://github.com/polkadot-js/common/issues",
|
||||||
"homepage": "https://github.com/polkadot-js/common#readme",
|
"homepage": "https://github.com/polkadot-js/common#readme",
|
||||||
"license": "Apache-2",
|
"license": "Apache-2.0",
|
||||||
"packageManager": "yarn@3.0.1",
|
"packageManager": "yarn@3.2.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/polkadot-js/common.git"
|
"url": "https://github.com/polkadot-js/common.git"
|
||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
],
|
],
|
||||||
@@ -21,18 +21,17 @@
|
|||||||
"clean": "polkadot-dev-clean-build",
|
"clean": "polkadot-dev-clean-build",
|
||||||
"lint": "polkadot-dev-run-lint",
|
"lint": "polkadot-dev-run-lint",
|
||||||
"networks:crosscheck": "polkadot-dev-run-test packages/networks/src/crosscheck",
|
"networks:crosscheck": "polkadot-dev-run-test packages/networks/src/crosscheck",
|
||||||
"networks:sync": "yarn build && node packages/networks/scripts/fromSubstrate.mjs",
|
|
||||||
"postinstall": "polkadot-dev-yarn-only",
|
"postinstall": "polkadot-dev-yarn-only",
|
||||||
"test": "polkadot-dev-run-test --coverage --runInBand --testPathIgnorePatterns crosscheck --testPathIgnorePatterns toMiniSecretCmp",
|
"test": "polkadot-dev-run-test --coverage --runInBand --testPathIgnorePatterns crosscheck --testPathIgnorePatterns toMiniSecretCmp",
|
||||||
"test:mnemonicCmp": "polkadot-dev-run-test packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts",
|
"test:mnemonicCmp": "polkadot-dev-run-test packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts",
|
||||||
"test:one": "polkadot-dev-run-test --runInBand"
|
"test:one": "polkadot-dev-run-test --runInBand"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.16.7",
|
"@babel/core": "^7.17.10",
|
||||||
"@polkadot/dev": "^0.65.37",
|
"@polkadot/dev": "^0.66.21",
|
||||||
"@types/jest": "^27.4.0"
|
"@types/jest": "^27.5.1"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"typescript": "^4.5.3"
|
"typescript": "^4.6.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,18 +16,18 @@
|
|||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"browser": "browser.js",
|
"browser": "browser.js",
|
||||||
"main": "node.js",
|
"main": "node.js",
|
||||||
"react-native": "react-native.js",
|
"react-native": "react-native.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@ledgerhq/hw-transport": "^6.20.0",
|
"@ledgerhq/hw-transport": "^6.27.1",
|
||||||
"@ledgerhq/hw-transport-webhid": "^6.20.0",
|
"@ledgerhq/hw-transport-webhid": "^6.27.1",
|
||||||
"@ledgerhq/hw-transport-webusb": "^6.20.0",
|
"@ledgerhq/hw-transport-webusb": "^6.27.1",
|
||||||
"@polkadot/util": "8.3.2"
|
"@polkadot/util": "9.2.1"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@ledgerhq/hw-transport-node-hid-singleton": "^6.23.0"
|
"@ledgerhq/hw-transport-node-hid-singleton": "^6.27.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
"./detectPackage.cjs"
|
"./detectPackage.cjs"
|
||||||
],
|
],
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@ledgerhq/hw-transport": "^6.20.0",
|
"@ledgerhq/hw-transport": "^6.27.1",
|
||||||
"@polkadot/hw-ledger-transports": "8.3.2",
|
"@polkadot/hw-ledger-transports": "9.2.1",
|
||||||
"@polkadot/util": "8.3.2",
|
"@polkadot/util": "9.2.1",
|
||||||
"@zondax/ledger-substrate": "^0.24.0"
|
"@zondax/ledger-substrate": "^0.27.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,20 +4,24 @@
|
|||||||
import type Transport from '@ledgerhq/hw-transport';
|
import type Transport from '@ledgerhq/hw-transport';
|
||||||
import type { SubstrateApp } from '@zondax/ledger-substrate';
|
import type { SubstrateApp } from '@zondax/ledger-substrate';
|
||||||
|
|
||||||
import { newBifrostApp, newCentrifugeApp, newDockApp, newEdgewareApp, newEquilibriumApp, newGenshiroApp, newKusamaApp, newNodleApp, newPolkadotApp, newPolymeshApp, newSoraApp, newStatemineApp } from '@zondax/ledger-substrate';
|
import { newAcalaApp, newBifrostApp, newCentrifugeApp, newDockApp, newEdgewareApp, newEquilibriumApp, newGenshiroApp, newKaruraApp, newKusamaApp, newNodleApp, newPolkadotApp, newPolymeshApp, newSoraApp, newStatemineApp, newStatemintApp, newXXNetworkApp } from '@zondax/ledger-substrate';
|
||||||
|
|
||||||
// These match up with the keys of the knownLedger object in the @polkadot/networks/defaults.ts
|
// These match up with the keys of the knownLedger object in the @polkadot/networks/defaults/ledger.ts
|
||||||
export const ledgerApps: Record<string, (transport: Transport) => SubstrateApp> = {
|
export const ledgerApps: Record<string, (transport: Transport) => SubstrateApp> = {
|
||||||
|
acala: newAcalaApp,
|
||||||
bifrost: newBifrostApp,
|
bifrost: newBifrostApp,
|
||||||
centrifuge: newCentrifugeApp,
|
centrifuge: newCentrifugeApp,
|
||||||
'dock-mainnet': newDockApp,
|
'dock-mainnet': newDockApp,
|
||||||
edgeware: newEdgewareApp,
|
edgeware: newEdgewareApp,
|
||||||
equilibrium: newEquilibriumApp,
|
equilibrium: newEquilibriumApp,
|
||||||
genshiro: newGenshiroApp,
|
genshiro: newGenshiroApp,
|
||||||
|
karura: newKaruraApp,
|
||||||
kusama: newKusamaApp,
|
kusama: newKusamaApp,
|
||||||
'nodle-chain': newNodleApp,
|
'nodle-chain': newNodleApp,
|
||||||
polkadot: newPolkadotApp,
|
polkadot: newPolkadotApp,
|
||||||
polymesh: newPolymeshApp,
|
polymesh: newPolymeshApp,
|
||||||
sora: newSoraApp,
|
sora: newSoraApp,
|
||||||
statemine: newStatemineApp
|
statemine: newStatemineApp,
|
||||||
|
statemint: newStatemintApp,
|
||||||
|
xxnetwork: newXXNetworkApp
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export interface AccountOptions {
|
|||||||
|
|
||||||
export interface LedgerAddress {
|
export interface LedgerAddress {
|
||||||
address: string;
|
address: string;
|
||||||
publicKey: string;
|
publicKey: HexString;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LedgerSignature {
|
export interface LedgerSignature {
|
||||||
@@ -23,5 +23,8 @@ export interface LedgerSignature {
|
|||||||
export interface LedgerVersion {
|
export interface LedgerVersion {
|
||||||
isLocked: boolean;
|
isLocked: boolean;
|
||||||
isTestMode: boolean;
|
isTestMode: boolean;
|
||||||
|
/**
|
||||||
|
* @description Tuple with major, minor, patch
|
||||||
|
*/
|
||||||
version: [number, number, number];
|
version: [number, number, number];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,15 +20,15 @@
|
|||||||
"./detectPackage.cjs"
|
"./detectPackage.cjs"
|
||||||
],
|
],
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/util": "8.3.2",
|
"@polkadot/util": "9.2.1",
|
||||||
"@polkadot/util-crypto": "8.3.2"
|
"@polkadot/util-crypto": "9.2.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@polkadot/util": "8.3.2",
|
"@polkadot/util": "9.2.1",
|
||||||
"@polkadot/util-crypto": "8.3.2"
|
"@polkadot/util-crypto": "9.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -65,7 +65,9 @@ describe('testingPairs', (): void => {
|
|||||||
delete ring.nobody;
|
delete ring.nobody;
|
||||||
|
|
||||||
Object.keys(ring).forEach((testKeyring, i) => {
|
Object.keys(ring).forEach((testKeyring, i) => {
|
||||||
if (i < 6) { expect(u8aToHex(ring[testKeyring].publicKey)).toEqual(u8aToHex(keyring.createFromUri(privKeys[i]).publicKey)); }
|
if (i < 6) {
|
||||||
|
expect(u8aToHex(ring[testKeyring].publicKey)).toEqual(u8aToHex(keyring.createFromUri(privKeys[i]).publicKey));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,7 +5,13 @@ import type { HexString } from '@polkadot/util/types';
|
|||||||
import type { EncryptedJson, Keypair, KeypairType, Prefix } from '@polkadot/util-crypto/types';
|
import type { EncryptedJson, Keypair, KeypairType, Prefix } from '@polkadot/util-crypto/types';
|
||||||
|
|
||||||
export interface KeyringOptions {
|
export interface KeyringOptions {
|
||||||
|
/**
|
||||||
|
* @description The ss58Format to use for address encoding (defaults to 42)
|
||||||
|
*/
|
||||||
ss58Format?: Prefix;
|
ss58Format?: Prefix;
|
||||||
|
/**
|
||||||
|
* @description The type of keyring to create (defaults to ed25519)
|
||||||
|
*/
|
||||||
type?: KeypairType;
|
type?: KeypairType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,6 +23,9 @@ export interface KeyringPair$Json extends EncryptedJson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface SignOptions {
|
export interface SignOptions {
|
||||||
|
/**
|
||||||
|
* @description Create a MultiSignature-compatible output with an indicator type
|
||||||
|
**/
|
||||||
withType?: boolean;
|
withType?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
A list of all available Substrate networks and their applicable prefixes.
|
A list of all available Substrate networks and their applicable prefixes.
|
||||||
|
|
||||||
This list is periodically checked against the master list available at https://github.com/paritytech/substrate/blob/master/ss58-registry.json
|
This list is periodically checked against the master list available at https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json
|
||||||
|
|||||||
@@ -17,14 +17,15 @@
|
|||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/util": "8.3.2"
|
"@polkadot/util": "9.2.1",
|
||||||
|
"@substrate/ss58-registry": "^1.18.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@polkadot/hw-ledger": "8.3.2",
|
"@polkadot/hw-ledger": "9.2.1",
|
||||||
"@polkadot/x-fetch": "8.3.2"
|
"@polkadot/x-fetch": "9.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import fs from 'fs';
|
|
||||||
import fetch from 'node-fetch';
|
|
||||||
|
|
||||||
import { substrateRegistry } from '../build/defaults.js';
|
|
||||||
|
|
||||||
const substrateRegistryRepo = substrateRegistry
|
|
||||||
.replace('raw.githubusercontent.com', 'github.com')
|
|
||||||
.split('main')[0];
|
|
||||||
|
|
||||||
function outputField (k, v) {
|
|
||||||
if (typeof v === 'string') {
|
|
||||||
return `'${v}'`;
|
|
||||||
} else if (Array.isArray(v)) {
|
|
||||||
// new format is [] to indicate optionality
|
|
||||||
return (['decimals', 'symbols'].includes(k) && !v.length)
|
|
||||||
? null
|
|
||||||
: `[${v.map((v) => outputField(k, v)).join(', ')}]`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getSubstrateRegistry () {
|
|
||||||
const original = await fetch(substrateRegistry);
|
|
||||||
const json = await original.json();
|
|
||||||
|
|
||||||
return json.registry
|
|
||||||
.map((e) =>
|
|
||||||
` {\n${Object
|
|
||||||
.entries(e)
|
|
||||||
.sort(([a], [b]) => a.localeCompare(b))
|
|
||||||
.map(([k, v]) => ` ${k}: ${outputField(k, v)}`)
|
|
||||||
.join(',\n')}\n }`
|
|
||||||
)
|
|
||||||
.join(',\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
getSubstrateRegistry()
|
|
||||||
.then((entries) => {
|
|
||||||
fs.writeFileSync('packages/networks/src/substrate.ts', `// Copyright 2017-2022 @polkadot/networks authors & contributors
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
//
|
|
||||||
// Auto-generated by yarn networks:sync (via scripts/fromSubstrate.mjs)
|
|
||||||
//
|
|
||||||
// This file should never be edited manually. Rather the process is as follow -
|
|
||||||
//
|
|
||||||
// - make a PR to the upstream registry found at ${substrateRegistryRepo}
|
|
||||||
// - ensure the PR gets merged
|
|
||||||
// - yarn networks:sync in this repo to sync
|
|
||||||
//
|
|
||||||
// Any manual changes to this file will make CI cron checks fail and will be
|
|
||||||
// lost when the registry is updated alongside the above sync.
|
|
||||||
//
|
|
||||||
|
|
||||||
import type { KnownSubstrate } from './types';
|
|
||||||
|
|
||||||
export const knownSubstrate: KnownSubstrate[] = [\n${entries}\n];
|
|
||||||
`);
|
|
||||||
|
|
||||||
console.log('Completed.');
|
|
||||||
|
|
||||||
process.exit(0);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.error('Error:', error.message);
|
|
||||||
|
|
||||||
process.exit(-1);
|
|
||||||
});
|
|
||||||
@@ -8,9 +8,9 @@ import fs from 'fs';
|
|||||||
import { objectKeys, stringify } from '@polkadot/util';
|
import { objectKeys, stringify } from '@polkadot/util';
|
||||||
import { fetch } from '@polkadot/x-fetch';
|
import { fetch } from '@polkadot/x-fetch';
|
||||||
|
|
||||||
import { substrateRegistry } from './defaults';
|
|
||||||
import { allNetworks } from './';
|
import { allNetworks } from './';
|
||||||
|
|
||||||
|
const REGISTRY = 'https://raw.githubusercontent.com/paritytech/ss58-registry/main/ss58-registry.json';
|
||||||
const OUTPUT = './.github/ss58-check.md';
|
const OUTPUT = './.github/ss58-check.md';
|
||||||
|
|
||||||
function assertAndLog (check: boolean, error: string): void {
|
function assertAndLog (check: boolean, error: string): void {
|
||||||
@@ -28,7 +28,7 @@ describe('check latest Substrate ss58 registry', (): void => {
|
|||||||
let original: Ss58Registry;
|
let original: Ss58Registry;
|
||||||
|
|
||||||
beforeAll(async (): Promise<void> => {
|
beforeAll(async (): Promise<void> => {
|
||||||
original = (await (await fetch(substrateRegistry)).json()) as Ss58Registry;
|
original = (await (await fetch(REGISTRY)).json()) as Ss58Registry;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has the same number as the original', (): void => {
|
it('has the same number as the original', (): void => {
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import type { KnownIcon, KnownLedger, KnownTestnet } from './types';
|
|
||||||
|
|
||||||
export { knownGenesis } from './genesis';
|
|
||||||
|
|
||||||
export const substrateRegistry = 'https://raw.githubusercontent.com/paritytech/ss58-registry/main/ss58-registry.json';
|
|
||||||
|
|
||||||
// these are icon overrides
|
|
||||||
export const knownIcon: KnownIcon = {
|
|
||||||
centrifuge: 'polkadot',
|
|
||||||
kusama: 'polkadot',
|
|
||||||
polkadot: 'polkadot',
|
|
||||||
sora: 'polkadot',
|
|
||||||
statemine: 'polkadot',
|
|
||||||
statemint: 'polkadot',
|
|
||||||
westmint: 'polkadot'
|
|
||||||
};
|
|
||||||
|
|
||||||
// These match up with the keys of the ledgerApps object in the @polkadot/hw-ledger/defaults.ts
|
|
||||||
// and maps to the known slip44 (minus the `0x8` hard derivation flag)
|
|
||||||
// NOTE: Any network here needs to have a genesisHash attached in the config above
|
|
||||||
export const knownLedger: KnownLedger = {
|
|
||||||
bifrost: 0x00000314,
|
|
||||||
centrifuge: 0x000002eb,
|
|
||||||
'dock-mainnet': 0x00000252,
|
|
||||||
edgeware: 0x0000020b,
|
|
||||||
equilibrium: 0x05f5e0fd,
|
|
||||||
genshiro: 0x05f5e0fc,
|
|
||||||
kusama: 0x000001b2,
|
|
||||||
'nodle-chain': 0x000003eb,
|
|
||||||
polkadot: 0x00000162,
|
|
||||||
polymesh: 0x00000253,
|
|
||||||
sora: 0x00000269,
|
|
||||||
statemine: 0x000001b2 // common-good on Kusama, shares derivation
|
|
||||||
};
|
|
||||||
|
|
||||||
// testnets should not allow selection
|
|
||||||
export const knownTestnet: KnownTestnet = {
|
|
||||||
'': true, // this is the default non-network entry
|
|
||||||
'cess-testnet': true,
|
|
||||||
'dock-testnet': true,
|
|
||||||
jupiter: true,
|
|
||||||
'mathchain-testnet': true,
|
|
||||||
subspace_testnet: true,
|
|
||||||
'zero-alphaville': true
|
|
||||||
};
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { KnownGenesis } from './types';
|
import type { KnownGenesis } from '../types';
|
||||||
|
|
||||||
// NOTE: In the case where the network was hard-spooned and multiple genesisHashes
|
// NOTE: In the case where the network was hard-spooned and multiple genesisHashes
|
||||||
// are provided, it needs to be in reverse order, i.e. most-recent first, oldest
|
// are provided, it needs to be in reverse order, i.e. most-recent first, oldest
|
||||||
@@ -11,6 +11,12 @@ export const knownGenesis: KnownGenesis = {
|
|||||||
acala: [
|
acala: [
|
||||||
'0xfc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c'
|
'0xfc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c'
|
||||||
],
|
],
|
||||||
|
astar: [
|
||||||
|
'0x9eb76c5184c4ab8679d2d5d819fdf90b9c001403e9e17da2e14b6d8aec4029c6'
|
||||||
|
],
|
||||||
|
basilisk: [
|
||||||
|
'0xa85cfb9b9fd4d622a5b28289a02347af987d8f73fa3108450e2b4a11c1ce5755'
|
||||||
|
],
|
||||||
bifrost: [
|
bifrost: [
|
||||||
'0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed'
|
'0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed'
|
||||||
],
|
],
|
||||||
@@ -18,6 +24,7 @@ export const knownGenesis: KnownGenesis = {
|
|||||||
'0x67dddf2673b69e5f875f6f25277495834398eafd67f492e09f3f3345e003d1b5'
|
'0x67dddf2673b69e5f875f6f25277495834398eafd67f492e09f3f3345e003d1b5'
|
||||||
],
|
],
|
||||||
'dock-mainnet': [
|
'dock-mainnet': [
|
||||||
|
'0x6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae',
|
||||||
'0xf73467c6544aa68df2ee546b135f955c46b90fa627e9b5d7935f41061bb8a5a9'
|
'0xf73467c6544aa68df2ee546b135f955c46b90fa627e9b5d7935f41061bb8a5a9'
|
||||||
],
|
],
|
||||||
edgeware: [
|
edgeware: [
|
||||||
@@ -52,9 +59,6 @@ export const knownGenesis: KnownGenesis = {
|
|||||||
picasso: [
|
picasso: [
|
||||||
'0xe8e7f0f4c4f5a00720b4821dbfddefea7490bcf0b19009961cc46957984e2c1c'
|
'0xe8e7f0f4c4f5a00720b4821dbfddefea7490bcf0b19009961cc46957984e2c1c'
|
||||||
],
|
],
|
||||||
plasm: [
|
|
||||||
'0x3e86364d4b4894021cb2a0390bcf2feb5517d5292f2de2bb9404227e908b0b8b'
|
|
||||||
],
|
|
||||||
polkadot: [
|
polkadot: [
|
||||||
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'
|
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'
|
||||||
],
|
],
|
||||||
@@ -62,6 +66,8 @@ export const knownGenesis: KnownGenesis = {
|
|||||||
'0x6fbd74e5e1d0a61d52ccfe9d4adaed16dd3a7caa37c6bc4d0c2fa12e8b2f4063'
|
'0x6fbd74e5e1d0a61d52ccfe9d4adaed16dd3a7caa37c6bc4d0c2fa12e8b2f4063'
|
||||||
],
|
],
|
||||||
rococo: [
|
rococo: [
|
||||||
|
'0x6408de7737c59c238890533af25896a2c20608d8b380bb01029acb392781063e',
|
||||||
|
'0xaaf2cd1b74b5f726895921259421b534124726263982522174147046b8827897',
|
||||||
'0x037f5f3c8e67b314062025fc886fcd6238ea25a4a9b45dce8d246815c9ebe770',
|
'0x037f5f3c8e67b314062025fc886fcd6238ea25a4a9b45dce8d246815c9ebe770',
|
||||||
'0xc196f81260cf1686172b47a79cf002120735d7cb0eb1474e8adce56618456fff',
|
'0xc196f81260cf1686172b47a79cf002120735d7cb0eb1474e8adce56618456fff',
|
||||||
'0xf6e9983c37baf68846fedafe21e56718790e39fb1c582abc408b81bc7b208f9a',
|
'0xf6e9983c37baf68846fedafe21e56718790e39fb1c582abc408b81bc7b208f9a',
|
||||||
@@ -82,7 +88,16 @@ export const knownGenesis: KnownGenesis = {
|
|||||||
statemine: [
|
statemine: [
|
||||||
'0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a'
|
'0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a'
|
||||||
],
|
],
|
||||||
|
statemint: [
|
||||||
|
'0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f'
|
||||||
|
],
|
||||||
subsocial: [
|
subsocial: [
|
||||||
'0x0bd72c1c305172e1275278aaeb3f161e02eccb7a819e63f62d47bd53a28189f8'
|
'0x0bd72c1c305172e1275278aaeb3f161e02eccb7a819e63f62d47bd53a28189f8'
|
||||||
|
],
|
||||||
|
westend: [
|
||||||
|
'0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e'
|
||||||
|
],
|
||||||
|
xxnetwork: [
|
||||||
|
'0x50dd5d206917bf10502c68fb4d18a59fc8aa31586f4e8856b493e43544aa82aa'
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import type { KnownIcon } from '../types';
|
||||||
|
|
||||||
|
// these are icon overrides
|
||||||
|
export const knownIcon: KnownIcon = {
|
||||||
|
centrifuge: 'polkadot',
|
||||||
|
kusama: 'polkadot',
|
||||||
|
polkadot: 'polkadot',
|
||||||
|
sora: 'polkadot',
|
||||||
|
statemine: 'polkadot',
|
||||||
|
statemint: 'polkadot',
|
||||||
|
westmint: 'polkadot'
|
||||||
|
};
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
export { knownGenesis } from './genesis';
|
||||||
|
export { knownIcon } from './icons';
|
||||||
|
export { knownLedger } from './ledger';
|
||||||
|
export { knownTestnet } from './testnets';
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import type { KnownLedger } from '../types';
|
||||||
|
|
||||||
|
// These match up with the keys of the ledgerApps object in the @polkadot/hw-ledger/defaults.ts
|
||||||
|
// and maps to the known slip44 (minus the `0x8` hard derivation flag)
|
||||||
|
//
|
||||||
|
// NOTE: Any network here needs to have a genesisHash attached in the ./genesis.ts config
|
||||||
|
export const knownLedger: KnownLedger = {
|
||||||
|
acala: 0x00000313,
|
||||||
|
bifrost: 0x00000314,
|
||||||
|
centrifuge: 0x000002eb,
|
||||||
|
'dock-mainnet': 0x00000252,
|
||||||
|
edgeware: 0x0000020b,
|
||||||
|
equilibrium: 0x05f5e0fd,
|
||||||
|
genshiro: 0x05f5e0fc,
|
||||||
|
karura: 0x000002ae,
|
||||||
|
kusama: 0x000001b2,
|
||||||
|
'nodle-chain': 0x000003eb,
|
||||||
|
polkadot: 0x00000162,
|
||||||
|
polymesh: 0x00000253,
|
||||||
|
sora: 0x00000269,
|
||||||
|
statemine: 0x000001b2, // common-good on Kusama, shares derivation
|
||||||
|
statemint: 0x00000162, // common-good on Polkadot, shares derivation
|
||||||
|
xxnetwork: 0x000007a3
|
||||||
|
};
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import type { KnownTestnet } from '../types';
|
||||||
|
|
||||||
|
// testnets should not allow selection
|
||||||
|
export const knownTestnet: KnownTestnet = {
|
||||||
|
'': true, // this is the default non-network entry
|
||||||
|
'cess-testnet': true,
|
||||||
|
'dock-testnet': true,
|
||||||
|
jupiter: true,
|
||||||
|
'mathchain-testnet': true,
|
||||||
|
subspace_testnet: true,
|
||||||
|
'zero-alphaville': true
|
||||||
|
};
|
||||||
@@ -67,6 +67,26 @@ describe('availableNetworks', (): void => {
|
|||||||
)
|
)
|
||||||
).toEqual([]);
|
).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('has all the correct fields', (): void => {
|
||||||
|
expect(availableNetworks[0]).toEqual({
|
||||||
|
decimals: [10],
|
||||||
|
displayName: 'Polkadot Relay Chain',
|
||||||
|
genesisHash: [
|
||||||
|
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'
|
||||||
|
],
|
||||||
|
hasLedgerSupport: true,
|
||||||
|
icon: 'polkadot',
|
||||||
|
isIgnored: false,
|
||||||
|
isTestnet: false,
|
||||||
|
network: 'polkadot',
|
||||||
|
prefix: 0,
|
||||||
|
slip44: 354,
|
||||||
|
standardAccount: '*25519',
|
||||||
|
symbols: ['DOT'],
|
||||||
|
website: 'https://polkadot.network'
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('allNetworks', (): void => {
|
describe('allNetworks', (): void => {
|
||||||
@@ -93,6 +113,6 @@ describe('selectableNetworks', (): void => {
|
|||||||
|
|
||||||
it('has a sorted list (first external, last external)', (): void => {
|
it('has a sorted list (first external, last external)', (): void => {
|
||||||
expect(selectableNetworks[3].displayName).toEqual('Acala');
|
expect(selectableNetworks[3].displayName).toEqual('Acala');
|
||||||
expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('Stafi');
|
expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('xx network');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
// TODO: This was removed, really cannot recall the reason...
|
||||||
|
// ... put it back, but keep it removed
|
||||||
|
// import './detectPackage';
|
||||||
|
|
||||||
export * from './interfaces';
|
export * from './interfaces';
|
||||||
export { packageInfo } from './packageInfo';
|
export { packageInfo } from './packageInfo';
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
import type { KnownSubstrate, Network, SubstrateNetwork } from './types';
|
import type { KnownSubstrate, Network, SubstrateNetwork } from './types';
|
||||||
|
|
||||||
|
import knownSubstrate from '@substrate/ss58-registry';
|
||||||
|
|
||||||
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
|
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
|
||||||
import { knownSubstrate } from './substrate';
|
|
||||||
|
|
||||||
// These are known prefixes that are not sorted
|
// These are known prefixes that are not sorted
|
||||||
const UNSORTED = [0, 2, 42];
|
const UNSORTED = [0, 2, 42];
|
||||||
@@ -25,7 +26,14 @@ function toExpanded (o: KnownSubstrate): SubstrateNetwork {
|
|||||||
|
|
||||||
// filtering
|
// filtering
|
||||||
n.isTestnet = !!knownTestnet[network] || TESTNETS.includes(nameParts[nameParts.length - 1]);
|
n.isTestnet = !!knownTestnet[network] || TESTNETS.includes(nameParts[nameParts.length - 1]);
|
||||||
n.isIgnored = n.isTestnet || (!(o.standardAccount && o.decimals && o.symbols) && o.prefix !== 42);
|
n.isIgnored = n.isTestnet || (
|
||||||
|
!(
|
||||||
|
o.standardAccount &&
|
||||||
|
o.decimals && o.decimals.length &&
|
||||||
|
o.symbols && o.symbols.length
|
||||||
|
) &&
|
||||||
|
o.prefix !== 42
|
||||||
|
);
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import known from '@substrate/ss58-registry';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
import other from './test/ss58registry.test.json';
|
||||||
|
|
||||||
|
describe('@substrate/ss58-registry', (): void => {
|
||||||
|
it('has known values', (): void => {
|
||||||
|
const json = JSON.stringify(known, null, 2);
|
||||||
|
|
||||||
|
try {
|
||||||
|
expect(JSON.parse(json)).toEqual(other);
|
||||||
|
} catch (error) {
|
||||||
|
if (process.env.GITHUB_REPOSITORY) {
|
||||||
|
console.error(json);
|
||||||
|
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(path.join(__dirname, './test/ss58registry.test.json'), json, { flag: 'w' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,794 +0,0 @@
|
|||||||
// Copyright 2017-2022 @polkadot/networks authors & contributors
|
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
//
|
|
||||||
// Auto-generated by yarn networks:sync (via scripts/fromSubstrate.mjs)
|
|
||||||
//
|
|
||||||
// This file should never be edited manually. Rather the process is as follow -
|
|
||||||
//
|
|
||||||
// - make a PR to the upstream registry found at https://github.com/paritytech/ss58-registry/
|
|
||||||
// - ensure the PR gets merged
|
|
||||||
// - yarn networks:sync in this repo to sync
|
|
||||||
//
|
|
||||||
// Any manual changes to this file will make CI cron checks fail and will be
|
|
||||||
// lost when the registry is updated alongside the above sync.
|
|
||||||
//
|
|
||||||
|
|
||||||
import type { KnownSubstrate } from './types';
|
|
||||||
|
|
||||||
export const knownSubstrate: KnownSubstrate[] = [
|
|
||||||
{
|
|
||||||
decimals: [10],
|
|
||||||
displayName: 'Polkadot Relay Chain',
|
|
||||||
network: 'polkadot',
|
|
||||||
prefix: 0,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['DOT'],
|
|
||||||
website: 'https://polkadot.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Bare 32-bit Schnorr/Ristretto (S/R 25519) public key.',
|
|
||||||
network: 'BareSr25519',
|
|
||||||
prefix: 1,
|
|
||||||
standardAccount: 'Sr25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Kusama Relay Chain',
|
|
||||||
network: 'kusama',
|
|
||||||
prefix: 2,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KSM'],
|
|
||||||
website: 'https://kusama.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Bare 32-bit Ed25519 public key.',
|
|
||||||
network: 'BareEd25519',
|
|
||||||
prefix: 3,
|
|
||||||
standardAccount: 'Ed25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Katal Chain',
|
|
||||||
network: 'katalchain',
|
|
||||||
prefix: 4,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Astar Network',
|
|
||||||
network: 'astar',
|
|
||||||
prefix: 5,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['ASTR'],
|
|
||||||
website: 'https://astar.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Bifrost',
|
|
||||||
network: 'bifrost',
|
|
||||||
prefix: 6,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['BNC'],
|
|
||||||
website: 'https://bifrost.finance/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Edgeware',
|
|
||||||
network: 'edgeware',
|
|
||||||
prefix: 7,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['EDG'],
|
|
||||||
website: 'https://edgewa.re'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Karura',
|
|
||||||
network: 'karura',
|
|
||||||
prefix: 8,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KAR'],
|
|
||||||
website: 'https://karura.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Laminar Reynolds Canary',
|
|
||||||
network: 'reynolds',
|
|
||||||
prefix: 9,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['REY'],
|
|
||||||
website: 'http://laminar.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Acala',
|
|
||||||
network: 'acala',
|
|
||||||
prefix: 10,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['ACA'],
|
|
||||||
website: 'https://acala.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Laminar',
|
|
||||||
network: 'laminar',
|
|
||||||
prefix: 11,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['LAMI'],
|
|
||||||
website: 'http://laminar.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [6],
|
|
||||||
displayName: 'Polymesh',
|
|
||||||
network: 'polymesh',
|
|
||||||
prefix: 12,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['POLYX'],
|
|
||||||
website: 'https://polymath.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Integritee',
|
|
||||||
network: 'integritee',
|
|
||||||
prefix: 13,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['TEER'],
|
|
||||||
website: 'https://integritee.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [0],
|
|
||||||
displayName: 'Totem',
|
|
||||||
network: 'totem',
|
|
||||||
prefix: 14,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['TOTEM'],
|
|
||||||
website: 'https://totemaccounting.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Synesthesia',
|
|
||||||
network: 'synesthesia',
|
|
||||||
prefix: 15,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['SYN'],
|
|
||||||
website: 'https://synesthesia.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Kulupu',
|
|
||||||
network: 'kulupu',
|
|
||||||
prefix: 16,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KLP'],
|
|
||||||
website: 'https://kulupu.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Dark Mainnet',
|
|
||||||
network: 'dark',
|
|
||||||
prefix: 17,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [9, 9],
|
|
||||||
displayName: 'Darwinia Network',
|
|
||||||
network: 'darwinia',
|
|
||||||
prefix: 18,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['RING', 'KTON'],
|
|
||||||
website: 'https://darwinia.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'GeekCash',
|
|
||||||
network: 'geek',
|
|
||||||
prefix: 19,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['GEEK'],
|
|
||||||
website: 'https://geekcash.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Stafi',
|
|
||||||
network: 'stafi',
|
|
||||||
prefix: 20,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['FIS'],
|
|
||||||
website: 'https://stafi.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [6],
|
|
||||||
displayName: 'Dock Testnet',
|
|
||||||
network: 'dock-testnet',
|
|
||||||
prefix: 21,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['DCK'],
|
|
||||||
website: 'https://dock.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [6],
|
|
||||||
displayName: 'Dock Mainnet',
|
|
||||||
network: 'dock-mainnet',
|
|
||||||
prefix: 22,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['DCK'],
|
|
||||||
website: 'https://dock.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'ShiftNrg',
|
|
||||||
network: 'shift',
|
|
||||||
prefix: 23,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'ZERO',
|
|
||||||
network: 'zero',
|
|
||||||
prefix: 24,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PLAY'],
|
|
||||||
website: 'https://zero.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'ZERO Alphaville',
|
|
||||||
network: 'zero-alphaville',
|
|
||||||
prefix: 25,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PLAY'],
|
|
||||||
website: 'https://zero.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [10],
|
|
||||||
displayName: 'Jupiter',
|
|
||||||
network: 'jupiter',
|
|
||||||
prefix: 26,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['jDOT'],
|
|
||||||
website: 'https://jupiter.patract.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Subsocial',
|
|
||||||
network: 'subsocial',
|
|
||||||
prefix: 28,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12, 12],
|
|
||||||
displayName: 'CORD Network',
|
|
||||||
network: 'cord',
|
|
||||||
prefix: 29,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['DHI', 'WAY'],
|
|
||||||
website: 'https://cord.network/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Phala Network',
|
|
||||||
network: 'phala',
|
|
||||||
prefix: 30,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PHA'],
|
|
||||||
website: 'https://phala.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Litentry Network',
|
|
||||||
network: 'litentry',
|
|
||||||
prefix: 31,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['LIT'],
|
|
||||||
website: 'https://litentry.com/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [9],
|
|
||||||
displayName: 'Robonomics',
|
|
||||||
network: 'robonomics',
|
|
||||||
prefix: 32,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['XRT'],
|
|
||||||
website: 'https://robonomics.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'DataHighway',
|
|
||||||
network: 'datahighway',
|
|
||||||
prefix: 33,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Ares Protocol',
|
|
||||||
network: 'ares',
|
|
||||||
prefix: 34,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['ARES'],
|
|
||||||
website: 'https://www.aresprotocol.com/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [15],
|
|
||||||
displayName: 'Valiu Liquidity Network',
|
|
||||||
network: 'vln',
|
|
||||||
prefix: 35,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['USDv'],
|
|
||||||
website: 'https://valiu.com/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Centrifuge Chain',
|
|
||||||
network: 'centrifuge',
|
|
||||||
prefix: 36,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['CFG'],
|
|
||||||
website: 'https://centrifuge.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Nodle Chain',
|
|
||||||
network: 'nodle',
|
|
||||||
prefix: 37,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['NODL'],
|
|
||||||
website: 'https://nodle.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'KILT Chain',
|
|
||||||
network: 'kilt',
|
|
||||||
prefix: 38,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KILT'],
|
|
||||||
website: 'https://kilt.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'MathChain mainnet',
|
|
||||||
network: 'mathchain',
|
|
||||||
prefix: 39,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['MATH'],
|
|
||||||
website: 'https://mathwallet.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'MathChain testnet',
|
|
||||||
network: 'mathchain-testnet',
|
|
||||||
prefix: 40,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['MATH'],
|
|
||||||
website: 'https://mathwallet.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Polimec Chain',
|
|
||||||
network: 'poli',
|
|
||||||
prefix: 41,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: 'https://polimec.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Substrate',
|
|
||||||
network: 'substrate',
|
|
||||||
prefix: 42,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: 'https://substrate.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Bare 32-bit ECDSA SECP-256k1 public key.',
|
|
||||||
network: 'BareSecp256k1',
|
|
||||||
prefix: 43,
|
|
||||||
standardAccount: 'secp256k1',
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [8],
|
|
||||||
displayName: 'ChainX',
|
|
||||||
network: 'chainx',
|
|
||||||
prefix: 44,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PCX'],
|
|
||||||
website: 'https://chainx.org/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12, 12],
|
|
||||||
displayName: 'UniArts Network',
|
|
||||||
network: 'uniarts',
|
|
||||||
prefix: 45,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['UART', 'UINK'],
|
|
||||||
website: 'https://uniarts.me'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'This prefix is reserved.',
|
|
||||||
network: 'reserved46',
|
|
||||||
prefix: 46,
|
|
||||||
standardAccount: null,
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'This prefix is reserved.',
|
|
||||||
network: 'reserved47',
|
|
||||||
prefix: 47,
|
|
||||||
standardAccount: null,
|
|
||||||
symbols: null,
|
|
||||||
website: null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Neatcoin Mainnet',
|
|
||||||
network: 'neatcoin',
|
|
||||||
prefix: 48,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['NEAT'],
|
|
||||||
website: 'https://neatcoin.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Picasso',
|
|
||||||
network: 'picasso',
|
|
||||||
prefix: 49,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PICA'],
|
|
||||||
website: 'https://picasso.composable.finance'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Composable',
|
|
||||||
network: 'composable',
|
|
||||||
prefix: 50,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['LAYR'],
|
|
||||||
website: 'https://composable.finance'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [9],
|
|
||||||
displayName: 'xx network',
|
|
||||||
network: 'xxnetwork',
|
|
||||||
prefix: 55,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['XX'],
|
|
||||||
website: 'https://xx.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'HydraDX',
|
|
||||||
network: 'hydradx',
|
|
||||||
prefix: 63,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['HDX'],
|
|
||||||
website: 'https://hydradx.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'AvN Mainnet',
|
|
||||||
network: 'aventus',
|
|
||||||
prefix: 65,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['AVT'],
|
|
||||||
website: 'https://aventus.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Crust Network',
|
|
||||||
network: 'crust',
|
|
||||||
prefix: 66,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['CRU'],
|
|
||||||
website: 'https://crust.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [9, 9, 9],
|
|
||||||
displayName: 'Genshiro Network',
|
|
||||||
network: 'genshiro',
|
|
||||||
prefix: 67,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['GENS', 'EQD', 'LPT0'],
|
|
||||||
website: 'https://genshiro.equilibrium.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [9],
|
|
||||||
displayName: 'Equilibrium Network',
|
|
||||||
network: 'equilibrium',
|
|
||||||
prefix: 68,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['EQ'],
|
|
||||||
website: 'https://equilibrium.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'SORA Network',
|
|
||||||
network: 'sora',
|
|
||||||
prefix: 69,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['XOR'],
|
|
||||||
website: 'https://sora.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [10],
|
|
||||||
displayName: 'Zeitgeist',
|
|
||||||
network: 'zeitgeist',
|
|
||||||
prefix: 73,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['ZTG'],
|
|
||||||
website: 'https://zeitgeist.pm'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Manta network',
|
|
||||||
network: 'manta',
|
|
||||||
prefix: 77,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['MANTA'],
|
|
||||||
website: 'https://manta.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Calamari: Manta Canary Network',
|
|
||||||
network: 'calamari',
|
|
||||||
prefix: 78,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KMA'],
|
|
||||||
website: 'https://manta.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Polkadex Mainnet',
|
|
||||||
network: 'polkadex',
|
|
||||||
prefix: 88,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PDEX'],
|
|
||||||
website: 'https://polkadex.trade'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'PolkaSmith Canary Network',
|
|
||||||
network: 'polkasmith',
|
|
||||||
prefix: 98,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PKS'],
|
|
||||||
website: 'https://polkafoundry.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'PolkaFoundry Network',
|
|
||||||
network: 'polkafoundry',
|
|
||||||
prefix: 99,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PKF'],
|
|
||||||
website: 'https://polkafoundry.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'OriginTrail Parachain',
|
|
||||||
network: 'origintrail-parachain',
|
|
||||||
prefix: 101,
|
|
||||||
standardAccount: 'secp256k1',
|
|
||||||
symbols: ['TRAC'],
|
|
||||||
website: 'https://origintrail.io'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [10],
|
|
||||||
displayName: 'Pontem Network',
|
|
||||||
network: 'pontem-network',
|
|
||||||
prefix: 105,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PONT'],
|
|
||||||
website: 'https://pontem.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Heiko',
|
|
||||||
network: 'heiko',
|
|
||||||
prefix: 110,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['HKO'],
|
|
||||||
website: 'https://parallel.fi/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: null,
|
|
||||||
displayName: 'Integritee Incognito',
|
|
||||||
network: 'integritee-incognito',
|
|
||||||
prefix: 113,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: null,
|
|
||||||
website: 'https://integritee.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Clover Finance',
|
|
||||||
network: 'clover',
|
|
||||||
prefix: 128,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['CLV'],
|
|
||||||
website: 'https://clover.finance'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Altair',
|
|
||||||
network: 'altair',
|
|
||||||
prefix: 136,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['AIR'],
|
|
||||||
website: 'https://centrifuge.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Parallel',
|
|
||||||
network: 'parallel',
|
|
||||||
prefix: 172,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['PARA'],
|
|
||||||
website: 'https://parallel.fi/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Social Network',
|
|
||||||
network: 'social-network',
|
|
||||||
prefix: 252,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['NET'],
|
|
||||||
website: 'https://social.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [15],
|
|
||||||
displayName: 'QUARTZ by UNIQUE',
|
|
||||||
network: 'quartz_mainnet',
|
|
||||||
prefix: 255,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['QTZ'],
|
|
||||||
website: 'https://unique.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Pioneer Network by Bit.Country',
|
|
||||||
network: 'pioneer_network',
|
|
||||||
prefix: 268,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['NEER'],
|
|
||||||
website: 'https://bit.country'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'SORA Kusama Parachain',
|
|
||||||
network: 'sora_kusama_para',
|
|
||||||
prefix: 420,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['XOR'],
|
|
||||||
website: 'https://sora.org'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Efinity',
|
|
||||||
network: 'efinity',
|
|
||||||
prefix: 1110,
|
|
||||||
standardAccount: 'Sr25519',
|
|
||||||
symbols: ['EFI'],
|
|
||||||
website: 'https://efinity.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Moonbeam',
|
|
||||||
network: 'moonbeam',
|
|
||||||
prefix: 1284,
|
|
||||||
standardAccount: 'secp256k1',
|
|
||||||
symbols: ['GLMR'],
|
|
||||||
website: 'https://moonbeam.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Moonriver',
|
|
||||||
network: 'moonriver',
|
|
||||||
prefix: 1285,
|
|
||||||
standardAccount: 'secp256k1',
|
|
||||||
symbols: ['MOVR'],
|
|
||||||
website: 'https://moonbeam.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Kapex',
|
|
||||||
network: 'kapex',
|
|
||||||
prefix: 2007,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KAPEX'],
|
|
||||||
website: 'https://totemaccounting.com'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [10],
|
|
||||||
displayName: 'Interlay',
|
|
||||||
network: 'interlay',
|
|
||||||
prefix: 2032,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['INTR'],
|
|
||||||
website: 'https://interlay.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Kintsugi',
|
|
||||||
network: 'kintsugi',
|
|
||||||
prefix: 2092,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['KINT'],
|
|
||||||
website: 'https://interlay.io/'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Subspace testnet',
|
|
||||||
network: 'subspace_testnet',
|
|
||||||
prefix: 2254,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['tSSC'],
|
|
||||||
website: 'https://subspace.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Subspace',
|
|
||||||
network: 'subspace',
|
|
||||||
prefix: 6094,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['SSC'],
|
|
||||||
website: 'https://subspace.network'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'Basilisk',
|
|
||||||
network: 'basilisk',
|
|
||||||
prefix: 10041,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['BSX'],
|
|
||||||
website: 'https://bsx.fi'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'CESS Testnet',
|
|
||||||
network: 'cess-testnet',
|
|
||||||
prefix: 11330,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['TCESS'],
|
|
||||||
website: 'https://cess.cloud'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [12],
|
|
||||||
displayName: 'CESS',
|
|
||||||
network: 'cess',
|
|
||||||
prefix: 11331,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['CESS'],
|
|
||||||
website: 'https://cess.cloud'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
decimals: [18],
|
|
||||||
displayName: 'Automata ContextFree',
|
|
||||||
network: 'contextfree',
|
|
||||||
prefix: 11820,
|
|
||||||
standardAccount: '*25519',
|
|
||||||
symbols: ['CTX'],
|
|
||||||
website: 'https://ata.network'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,9 @@
|
|||||||
// Copyright 2017-2022 @polkadot/keyring authors & contributors
|
// Copyright 2017-2022 @polkadot/keyring authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
export type Icon = 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
|
import type { RegistryEntry } from '@substrate/ss58-registry';
|
||||||
|
|
||||||
export interface KnownSubstrate {
|
export type Icon = 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
|
||||||
decimals: number[] | null,
|
|
||||||
displayName: string;
|
|
||||||
network: string | null;
|
|
||||||
prefix: number;
|
|
||||||
standardAccount: '*25519' | 'Ed25519' | 'Sr25519' | 'secp256k1' | null;
|
|
||||||
symbols: string[] | null;
|
|
||||||
website: string | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export type KnownIcon = Record<string, Icon>;
|
export type KnownIcon = Record<string, Icon>;
|
||||||
|
|
||||||
@@ -19,6 +11,8 @@ export type KnownLedger = Record<string, number>;
|
|||||||
|
|
||||||
export type KnownGenesis = Record<string, string[]>;
|
export type KnownGenesis = Record<string, string[]>;
|
||||||
|
|
||||||
|
export type KnownSubstrate = RegistryEntry;
|
||||||
|
|
||||||
export type KnownTestnet = Record<string, true>;
|
export type KnownTestnet = Record<string, true>;
|
||||||
|
|
||||||
export interface SubstrateNetwork extends KnownSubstrate {
|
export interface SubstrateNetwork extends KnownSubstrate {
|
||||||
|
|||||||
@@ -3,8 +3,13 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": "..",
|
"baseUrl": "..",
|
||||||
"outDir": "./build",
|
"outDir": "./build",
|
||||||
|
"resolveJsonModule": true,
|
||||||
"rootDir": "./src"
|
"rootDir": "./src"
|
||||||
},
|
},
|
||||||
|
"include": [
|
||||||
|
"**/src/**/*.ts",
|
||||||
|
"**/test/*.json"
|
||||||
|
],
|
||||||
"references": [
|
"references": [
|
||||||
{ "path": "../hw-ledger/tsconfig.build.json" },
|
{ "path": "../hw-ledger/tsconfig.build.json" },
|
||||||
{ "path": "../util/tsconfig.build.json" },
|
{ "path": "../util/tsconfig.build.json" },
|
||||||
|
|||||||
@@ -16,35 +16,35 @@
|
|||||||
"url": "https://github.com/polkadot-js/common.git"
|
"url": "https://github.com/polkadot-js/common.git"
|
||||||
},
|
},
|
||||||
"sideEffects": [
|
"sideEffects": [
|
||||||
"./cryptoInit.js",
|
"./bundleInit.js",
|
||||||
"./cryptoInit.cjs",
|
"./bundleInit.cjs",
|
||||||
"./detectPackage.js",
|
"./detectPackage.js",
|
||||||
"./detectPackage.cjs"
|
"./detectPackage.cjs"
|
||||||
],
|
],
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"browser": {
|
"browser": {
|
||||||
"crypto": false,
|
"crypto": false,
|
||||||
"stream": false
|
"stream": false
|
||||||
},
|
},
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@noble/hashes": "0.5.7",
|
"@noble/hashes": "1.0.0",
|
||||||
"@noble/secp256k1": "1.3.4",
|
"@noble/secp256k1": "1.5.5",
|
||||||
"@polkadot/networks": "8.3.2",
|
"@polkadot/networks": "9.2.1",
|
||||||
"@polkadot/util": "8.3.2",
|
"@polkadot/util": "9.2.1",
|
||||||
"@polkadot/wasm-crypto": "^4.5.1",
|
"@polkadot/wasm-crypto": "^6.1.1",
|
||||||
"@polkadot/x-bigint": "8.3.2",
|
"@polkadot/x-bigint": "9.2.1",
|
||||||
"@polkadot/x-randomvalues": "8.3.2",
|
"@polkadot/x-randomvalues": "9.2.1",
|
||||||
|
"@scure/base": "1.0.0",
|
||||||
"ed2curve": "^0.3.0",
|
"ed2curve": "^0.3.0",
|
||||||
"micro-base": "^0.10.2",
|
|
||||||
"tweetnacl": "^1.0.3"
|
"tweetnacl": "^1.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/ed2curve": "^0.2.2"
|
"@types/ed2curve": "^0.2.2"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@polkadot/util": "8.3.2"
|
"@polkadot/util": "9.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import { utils } from 'micro-base';
|
import { utils } from '@scure/base';
|
||||||
|
|
||||||
import { createDecode, createEncode, createIs, createValidate } from './helpers';
|
import { createDecode, createEncode, createIs, createValidate } from './helpers';
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export function createDecode ({ coder, ipfs }: Config, validate: ValidateFn): De
|
|||||||
|
|
||||||
return coder.decode(
|
return coder.decode(
|
||||||
ipfs && ipfsCompat
|
ipfs && ipfsCompat
|
||||||
? value.substr(1)
|
? value.substring(1)
|
||||||
: value
|
: value
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import { base58 } from 'micro-base';
|
import { base58 } from '@scure/base';
|
||||||
|
|
||||||
import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
|
import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import { base64 } from 'micro-base';
|
import { base64 } from '@scure/base';
|
||||||
|
|
||||||
import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
|
import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import './cryptoInit';
|
import './bundleInit';
|
||||||
|
|
||||||
export { packageInfo } from './packageInfo';
|
export { packageInfo } from './packageInfo';
|
||||||
|
|
||||||
|
|||||||
@@ -17,5 +17,5 @@ utilsNobleSecp256k1.hmacSha256Sync = (key: Uint8Array, ...messages: Uint8Array[]
|
|||||||
|
|
||||||
// start init process immediately
|
// start init process immediately
|
||||||
cryptoWaitReady().catch((): void => {
|
cryptoWaitReady().catch((): void => {
|
||||||
// shouldn't happen, logged above
|
// shouldn't happen, logged and caught inside cryptoWaitReady
|
||||||
});
|
});
|
||||||
@@ -20,7 +20,7 @@ export class DeriveJunction {
|
|||||||
public static from (value: string): DeriveJunction {
|
public static from (value: string): DeriveJunction {
|
||||||
const result = new DeriveJunction();
|
const result = new DeriveJunction();
|
||||||
const [code, isHard] = value.startsWith('/')
|
const [code, isHard] = value.startsWith('/')
|
||||||
? [value.substr(1), true]
|
? [value.substring(1), true]
|
||||||
: [value, false];
|
: [value, false];
|
||||||
|
|
||||||
result.soft(
|
result.soft(
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export function keyExtractPath (derivePath: string): ExtractResult {
|
|||||||
constructed = parts.join('');
|
constructed = parts.join('');
|
||||||
|
|
||||||
for (const p of parts) {
|
for (const p of parts) {
|
||||||
path.push(DeriveJunction.from(p.substr(1)));
|
path.push(DeriveJunction.from(p.substring(1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ describe('mnemonicToMiniSecret', (): void => {
|
|||||||
u8aToHex(mnemonicToMiniSecret(mnemonic, 'Substrate', onlyJs))
|
u8aToHex(mnemonicToMiniSecret(mnemonic, 'Substrate', onlyJs))
|
||||||
).toEqual(
|
).toEqual(
|
||||||
// mini returned here, only check first 32-bytes (64 hex + 2 prefix)
|
// mini returned here, only check first 32-bytes (64 hex + 2 prefix)
|
||||||
seed.substr(0, 66)
|
seed.substring(0, 66)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
export * from '@polkadot/networks/interfaces';
|
// Don't use a export * since we don't want to duplicate packageInfo
|
||||||
|
export { allNetworks, availableNetworks, selectableNetworks } from '@polkadot/networks';
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/util-crypto', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/util-crypto', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import type { Keypair } from '../../types';
|
|||||||
|
|
||||||
import { getPublicKey } from '@noble/secp256k1';
|
import { getPublicKey } from '@noble/secp256k1';
|
||||||
|
|
||||||
import { assert, hasBigInt } from '@polkadot/util';
|
import { assert, hasBigInt, u8aEmpty } from '@polkadot/util';
|
||||||
import { isReady, secp256k1FromSeed } from '@polkadot/wasm-crypto';
|
import { isReady, secp256k1FromSeed } from '@polkadot/wasm-crypto';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,9 +17,16 @@ export function secp256k1PairFromSeed (seed: Uint8Array, onlyJs?: boolean): Keyp
|
|||||||
|
|
||||||
if (!hasBigInt || (!onlyJs && isReady())) {
|
if (!hasBigInt || (!onlyJs && isReady())) {
|
||||||
const full = secp256k1FromSeed(seed);
|
const full = secp256k1FromSeed(seed);
|
||||||
|
const publicKey = full.slice(32);
|
||||||
|
|
||||||
|
// There is an issue with the secp256k1 when running in an ASM.js environment where
|
||||||
|
// it seems that the lazy static section yields invalid results on the _first_ run.
|
||||||
|
// If this happens, fail outright, we cannot allow invalid return values
|
||||||
|
// https://github.com/polkadot-js/wasm/issues/307
|
||||||
|
assert(!u8aEmpty(publicKey), 'Invalid publicKey generated from WASM interface');
|
||||||
|
|
||||||
return {
|
return {
|
||||||
publicKey: full.slice(32),
|
publicKey,
|
||||||
secretKey: full.slice(0, 32)
|
secretKey: full.slice(0, 32)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import '../cryptoInit';
|
import '../bundleInit';
|
||||||
|
|
||||||
import { stringToU8a } from '@polkadot/util';
|
import { stringToU8a } from '@polkadot/util';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import '../cryptoInit';
|
import '../bundleInit';
|
||||||
|
|
||||||
import { hexToU8a } from '@polkadot/util';
|
import { hexToU8a } from '@polkadot/util';
|
||||||
import { waitReady } from '@polkadot/wasm-crypto';
|
import { waitReady } from '@polkadot/wasm-crypto';
|
||||||
|
|||||||
@@ -67,7 +67,9 @@ function verifyMultisig (result: VerifyResult, { message, publicKey, signature }
|
|||||||
result.isValid = {
|
result.isValid = {
|
||||||
ecdsa: () => verifyDetect(result, { message, publicKey, signature: signature.subarray(1) }, VERIFIERS_ECDSA).isValid,
|
ecdsa: () => verifyDetect(result, { message, publicKey, signature: signature.subarray(1) }, VERIFIERS_ECDSA).isValid,
|
||||||
ed25519: () => ed25519Verify(message, signature.subarray(1), publicKey),
|
ed25519: () => ed25519Verify(message, signature.subarray(1), publicKey),
|
||||||
none: () => { throw Error('no verify for `none` crypto type'); },
|
none: () => {
|
||||||
|
throw Error('no verify for `none` crypto type');
|
||||||
|
},
|
||||||
sr25519: () => sr25519Verify(message, signature.subarray(1), publicKey)
|
sr25519: () => sr25519Verify(message, signature.subarray(1), publicKey)
|
||||||
}[type]();
|
}[type]();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -34,19 +34,19 @@
|
|||||||
"./detectPackage.cjs"
|
"./detectPackage.cjs"
|
||||||
],
|
],
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/x-bigint": "8.3.2",
|
"@polkadot/x-bigint": "9.2.1",
|
||||||
"@polkadot/x-global": "8.3.2",
|
"@polkadot/x-global": "9.2.1",
|
||||||
"@polkadot/x-textdecoder": "8.3.2",
|
"@polkadot/x-textdecoder": "9.2.1",
|
||||||
"@polkadot/x-textencoder": "8.3.2",
|
"@polkadot/x-textencoder": "9.2.1",
|
||||||
"@types/bn.js": "^4.11.6",
|
"@types/bn.js": "^5.1.0",
|
||||||
"bn.js": "^4.12.0",
|
"bn.js": "^5.2.0",
|
||||||
"ip-regex": "^4.3.0"
|
"ip-regex": "^4.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@polkadot/x-randomvalues": "8.3.2"
|
"@polkadot/x-randomvalues": "9.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,23 +2,19 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { BN } from '../bn/bn';
|
import type { BN } from '../bn/bn';
|
||||||
import type { HexString, ToBigInt, ToBn, ToBnOptions } from '../types';
|
import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types';
|
||||||
|
|
||||||
import { objectSpread } from '../object/spread';
|
import { objectSpread } from '../object/spread';
|
||||||
import { u8aToHex } from '../u8a';
|
import { u8aToHex } from '../u8a';
|
||||||
import { nToU8a } from './toU8a';
|
import { nToU8a } from './toU8a';
|
||||||
|
|
||||||
interface Options extends ToBnOptions {
|
|
||||||
bitLength?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ZERO_STR = '0x00';
|
const ZERO_STR = '0x00';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name nToHex
|
* @name nToHex
|
||||||
* @summary Creates a hex value from a bigint object.
|
* @summary Creates a hex value from a bigint object.
|
||||||
*/
|
*/
|
||||||
export function nToHex <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, options?: Options): HexString {
|
export function nToHex <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions): HexString {
|
||||||
return !value
|
return !value
|
||||||
? ZERO_STR
|
? ZERO_STR
|
||||||
: u8aToHex(
|
: u8aToHex(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { BN } from '../bn/bn';
|
import type { BN } from '../bn/bn';
|
||||||
import type { ToBigInt, ToBn, ToBnOptions } from '../types';
|
import type { NumberOptions, ToBigInt, ToBn } from '../types';
|
||||||
|
|
||||||
import { BigInt } from '@polkadot/x-bigint';
|
import { BigInt } from '@polkadot/x-bigint';
|
||||||
|
|
||||||
@@ -10,20 +10,10 @@ import { objectSpread } from '../object/spread';
|
|||||||
import { _0n, _1n } from './consts';
|
import { _0n, _1n } from './consts';
|
||||||
import { nToBigInt } from './toBigInt';
|
import { nToBigInt } from './toBigInt';
|
||||||
|
|
||||||
interface Options extends ToBnOptions {
|
|
||||||
bitLength?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const DIV = BigInt(256);
|
const DIV = BigInt(256);
|
||||||
const NEG_MASK = BigInt(0xff);
|
const NEG_MASK = BigInt(0xff);
|
||||||
|
|
||||||
function createEmpty ({ bitLength = 0 }: Options): Uint8Array {
|
function toU8a (value: bigint, { isLe, isNegative }: NumberOptions): Uint8Array {
|
||||||
return bitLength === -1
|
|
||||||
? new Uint8Array()
|
|
||||||
: new Uint8Array(Math.ceil(bitLength / 8));
|
|
||||||
}
|
|
||||||
|
|
||||||
function toU8a (value: bigint, { isLe, isNegative }: Options): Uint8Array {
|
|
||||||
const arr: number[] = [];
|
const arr: number[] = [];
|
||||||
|
|
||||||
if (isNegative) {
|
if (isNegative) {
|
||||||
@@ -54,8 +44,8 @@ function toU8a (value: bigint, { isLe, isNegative }: Options): Uint8Array {
|
|||||||
* @name nToU8a
|
* @name nToU8a
|
||||||
* @summary Creates a Uint8Array object from a bigint.
|
* @summary Creates a Uint8Array object from a bigint.
|
||||||
*/
|
*/
|
||||||
export function nToU8a <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, options?: Options): Uint8Array {
|
export function nToU8a <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions): Uint8Array {
|
||||||
const opts: Options = objectSpread(
|
const opts: NumberOptions = objectSpread(
|
||||||
{ bitLength: -1, isLe: true, isNegative: false },
|
{ bitLength: -1, isLe: true, isNegative: false },
|
||||||
options
|
options
|
||||||
);
|
);
|
||||||
@@ -63,7 +53,9 @@ export function nToU8a <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN |
|
|||||||
const valueBi = nToBigInt(value);
|
const valueBi = nToBigInt(value);
|
||||||
|
|
||||||
if (valueBi === _0n) {
|
if (valueBi === _0n) {
|
||||||
return createEmpty(opts);
|
return opts.bitLength === -1
|
||||||
|
? new Uint8Array()
|
||||||
|
: new Uint8Array(Math.ceil((opts.bitLength || 0) / 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8a = toU8a(valueBi, opts);
|
const u8a = toU8a(valueBi, opts);
|
||||||
|
|||||||
@@ -27,10 +27,9 @@ import { BN } from './bn';
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function bnToBn <ExtToBn extends ToBigInt | ToBn> (value?: HexString | ExtToBn | BN | bigint | string | number | null): BN {
|
export function bnToBn <ExtToBn extends ToBigInt | ToBn> (value?: HexString | ExtToBn | BN | bigint | string | number | null): BN {
|
||||||
return BN.isBN(value)
|
return value
|
||||||
? value
|
? BN.isBN(value)
|
||||||
: !value
|
? value
|
||||||
? new BN(0)
|
|
||||||
: isHex(value)
|
: isHex(value)
|
||||||
? hexToBn(value.toString())
|
? hexToBn(value.toString())
|
||||||
: isBigInt(value)
|
: isBigInt(value)
|
||||||
@@ -39,5 +38,6 @@ export function bnToBn <ExtToBn extends ToBigInt | ToBn> (value?: HexString | Ex
|
|||||||
? value.toBn()
|
? value.toBn()
|
||||||
: isToBigInt(value)
|
: isToBigInt(value)
|
||||||
? new BN(value.toBigInt().toString())
|
? new BN(value.toBigInt().toString())
|
||||||
: new BN(value);
|
: new BN(value)
|
||||||
|
: new BN(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ describe('bnToHex', (): void => {
|
|||||||
).toBe('0xfffffb2e');
|
).toBe('0xfffffb2e');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles backwards compatibility', (): void => {
|
it('handles legacy compatibility', (): void => {
|
||||||
expect(
|
expect(
|
||||||
bnToHex(new BN(1234), 32)
|
bnToHex(new BN(1234), 32)
|
||||||
).toBe(
|
).toBe(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util authors & contributors
|
// Copyright 2017-2022 @polkadot/util authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { HexString, ToBn, ToBnOptions } from '../types';
|
import type { HexString, NumberOptions, ToBn } from '../types';
|
||||||
import type { BN } from './bn';
|
import type { BN } from './bn';
|
||||||
|
|
||||||
import { isNumber } from '../is/number';
|
import { isNumber } from '../is/number';
|
||||||
@@ -9,12 +9,8 @@ import { objectSpread } from '../object/spread';
|
|||||||
import { u8aToHex } from '../u8a';
|
import { u8aToHex } from '../u8a';
|
||||||
import { bnToU8a } from './toU8a';
|
import { bnToU8a } from './toU8a';
|
||||||
|
|
||||||
interface Options extends ToBnOptions {
|
|
||||||
bitLength?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ZERO_STR = '0x00';
|
const ZERO_STR = '0x00';
|
||||||
const DEFAULT_OPTS: Options = { bitLength: -1, isLe: false, isNegative: false };
|
const DEFAULT_OPTS: NumberOptions = { bitLength: -1, isLe: false, isNegative: false };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name bnToHex
|
* @name bnToHex
|
||||||
@@ -31,9 +27,11 @@ const DEFAULT_OPTS: Options = { bitLength: -1, isLe: false, isNegative: false };
|
|||||||
* bnToHex(new BN(0x123456)); // => '0x123456'
|
* bnToHex(new BN(0x123456)); // => '0x123456'
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, options?: Options): HexString;
|
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions): HexString;
|
||||||
|
/** @deprecated Use bnToHex (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions) */
|
||||||
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, bitLength?: number, isLe?: boolean): HexString;
|
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, bitLength?: number, isLe?: boolean): HexString;
|
||||||
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, arg1: number | Options = DEFAULT_OPTS, arg2?: boolean): HexString {
|
/** @deprecated Use bnToHex (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions) */
|
||||||
|
function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, arg1: number | NumberOptions = DEFAULT_OPTS, arg2?: boolean): HexString {
|
||||||
return !value
|
return !value
|
||||||
? ZERO_STR
|
? ZERO_STR
|
||||||
: u8aToHex(
|
: u8aToHex(
|
||||||
|
|||||||
@@ -50,12 +50,18 @@ describe('bnToU8a', (): void => {
|
|||||||
).toEqual(new Uint8Array([251, 46]));
|
).toEqual(new Uint8Array([251, 46]));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('converts negative numbers (bitLength)', (): void => {
|
it('converts negative numbers (LE)', (): void => {
|
||||||
expect(
|
expect(
|
||||||
bnToU8a(new BN(-1234), { bitLength: 32, isNegative: true })
|
bnToU8a(new BN(-1234), { bitLength: 32, isNegative: true })
|
||||||
).toEqual(new Uint8Array([46, 251, 255, 255]));
|
).toEqual(new Uint8Array([46, 251, 255, 255]));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('converts negative numbers (LE, bitLength)', (): void => {
|
||||||
|
expect(
|
||||||
|
bnToU8a(new BN(-123456), { bitLength: 32, isNegative: true })
|
||||||
|
).toEqual(new Uint8Array([192, 29, 254, 255]));
|
||||||
|
});
|
||||||
|
|
||||||
it('handles backwards compatibility', (): void => {
|
it('handles backwards compatibility', (): void => {
|
||||||
expect(
|
expect(
|
||||||
bnToU8a(new BN(1234), 32, false)
|
bnToU8a(new BN(1234), 32, false)
|
||||||
|
|||||||
@@ -1,35 +1,14 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util authors & contributors
|
// Copyright 2017-2022 @polkadot/util authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { ToBn, ToBnOptions } from '../types';
|
import type { NumberOptions, ToBn } from '../types';
|
||||||
import type { BN } from './bn';
|
import type { BN } from './bn';
|
||||||
|
|
||||||
import { isNumber } from '../is/number';
|
import { isNumber } from '../is/number';
|
||||||
import { objectSpread } from '../object/spread';
|
import { objectSpread } from '../object/spread';
|
||||||
import { bnToBn } from './toBn';
|
import { bnToBn } from './toBn';
|
||||||
|
|
||||||
interface Options extends ToBnOptions {
|
const DEFAULT_OPTS: NumberOptions = { bitLength: -1, isLe: true, isNegative: false };
|
||||||
bitLength?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
const DEFAULT_OPTS: Options = { bitLength: -1, isLe: true, isNegative: false };
|
|
||||||
|
|
||||||
function createEmpty (byteLength: number, options: Options): Uint8Array {
|
|
||||||
return options.bitLength === -1
|
|
||||||
? new Uint8Array()
|
|
||||||
: new Uint8Array(byteLength);
|
|
||||||
}
|
|
||||||
|
|
||||||
function createValue (valueBn: BN, byteLength: number, { isLe, isNegative }: Options): Uint8Array {
|
|
||||||
const output = new Uint8Array(byteLength);
|
|
||||||
const bn = isNegative
|
|
||||||
? valueBn.toTwos(byteLength * 8)
|
|
||||||
: valueBn;
|
|
||||||
|
|
||||||
output.set(bn.toArray(isLe ? 'le' : 'be', byteLength), 0);
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name bnToU8a
|
* @name bnToU8a
|
||||||
@@ -45,10 +24,12 @@ function createValue (valueBn: BN, byteLength: number, { isLe, isNegative }: Opt
|
|||||||
* bnToU8a(new BN(0x1234)); // => [0x12, 0x34]
|
* bnToU8a(new BN(0x1234)); // => [0x12, 0x34]
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, options?: Options): Uint8Array;
|
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions): Uint8Array;
|
||||||
|
/** @deprecated Use bnToU8a(value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions) */
|
||||||
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, bitLength?: number, isLe?: boolean): Uint8Array;
|
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, bitLength?: number, isLe?: boolean): Uint8Array;
|
||||||
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, arg1: number | Options = DEFAULT_OPTS, arg2?: boolean): Uint8Array {
|
/** @deprecated Use bnToU8a(value?: ExtToBn | BN | bigint | number | null, options?: NumberOptions) */
|
||||||
const options: Options = objectSpread(
|
function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, arg1: number | NumberOptions = DEFAULT_OPTS, arg2?: boolean): Uint8Array {
|
||||||
|
const { bitLength, isLe, isNegative }: NumberOptions = objectSpread(
|
||||||
{ bitLength: -1, isLe: true, isNegative: false },
|
{ bitLength: -1, isLe: true, isNegative: false },
|
||||||
isNumber(arg1)
|
isNumber(arg1)
|
||||||
? { bitLength: arg1, isLe: arg2 }
|
? { bitLength: arg1, isLe: arg2 }
|
||||||
@@ -56,13 +37,24 @@ function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number
|
|||||||
);
|
);
|
||||||
|
|
||||||
const valueBn = bnToBn(value);
|
const valueBn = bnToBn(value);
|
||||||
const byteLength = options.bitLength === -1
|
const byteLength = bitLength === -1
|
||||||
? Math.ceil(valueBn.bitLength() / 8)
|
? Math.ceil(valueBn.bitLength() / 8)
|
||||||
: Math.ceil((options.bitLength || 0) / 8);
|
: Math.ceil((bitLength || 0) / 8);
|
||||||
|
|
||||||
return value
|
if (!value) {
|
||||||
? createValue(valueBn, byteLength, options)
|
return bitLength === -1
|
||||||
: createEmpty(byteLength, options);
|
? new Uint8Array()
|
||||||
|
: new Uint8Array(byteLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
const output = new Uint8Array(byteLength);
|
||||||
|
const bn = isNegative
|
||||||
|
? valueBn.toTwos(byteLength * 8)
|
||||||
|
: valueBn;
|
||||||
|
|
||||||
|
output.set(bn.toArray(isLe ? 'le' : 'be', byteLength), 0);
|
||||||
|
|
||||||
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
export { bnToU8a };
|
export { bnToU8a };
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
import { BN } from '../bn/bn';
|
import { BN } from '../bn/bn';
|
||||||
import { hexToU8a } from '../hex/toU8a';
|
import { hexToU8a } from '../hex/toU8a';
|
||||||
|
import { performance } from '../test/performance';
|
||||||
import { compactFromU8a } from '.';
|
import { compactFromU8a } from '.';
|
||||||
|
|
||||||
describe('compactFromU8a', (): void => {
|
describe('compactFromU8a', (): void => {
|
||||||
@@ -14,16 +15,25 @@ describe('compactFromU8a', (): void => {
|
|||||||
|
|
||||||
it('decodes from same u16 encoded value', (): void => {
|
it('decodes from same u16 encoded value', (): void => {
|
||||||
expect(
|
expect(
|
||||||
compactFromU8a(new Uint8Array([0b11111101, 0b00000111]))
|
compactFromU8a(new Uint8Array([0b11111101, 0b00000111])).toString()
|
||||||
).toEqual([2, new BN(511)]);
|
).toEqual(
|
||||||
|
[2, new BN(511)].toString()
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('decodes from same u32 encoded value (short)', (): void => {
|
it('decodes from same u32 encoded value (short)', (): void => {
|
||||||
expect(
|
expect(
|
||||||
compactFromU8a(new Uint8Array([254, 255, 3, 0]))
|
compactFromU8a(new Uint8Array([254, 255, 3, 0])).toString()
|
||||||
).toEqual(
|
).toEqual(
|
||||||
// since we use in-place, the words are different... HACK it
|
[4, new BN(0xffff)].toString()
|
||||||
[4, new BN(0xffff).ishln(16).ishrn(16)]
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('decodes from same u32 encoded value (short)', (): void => {
|
||||||
|
expect(
|
||||||
|
compactFromU8a(new Uint8Array([254, 255, 255, 255])).toString()
|
||||||
|
).toEqual(
|
||||||
|
[4, new BN(1073741823)].toString()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -54,4 +64,9 @@ describe('compactFromU8a', (): void => {
|
|||||||
)[1].toString()
|
)[1].toString()
|
||||||
).toEqual('100000000');
|
).toEqual('100000000');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
performance('compactFromU8a (u8)', 500_000, [[new Uint8Array([63 << 2])]], compactFromU8a);
|
||||||
|
performance('compactFromU8a (u16)', 500_000, [[new Uint8Array([0b11111101, 0b00000111])]], compactFromU8a);
|
||||||
|
performance('compactFromU8a (u32)', 500_000, [[new Uint8Array([254, 255, 3, 0])]], compactFromU8a);
|
||||||
|
performance('compactFromU8a (u64)', 500_000, [[hexToU8a('0x0b00407a10f35a')]], compactFromU8a);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
import type { U8aLike } from '../types';
|
import type { U8aLike } from '../types';
|
||||||
|
|
||||||
import { BN, BN_FOUR } from '../bn';
|
import { BN } from '../bn';
|
||||||
import { u8aToBn, u8aToU8a } from '../u8a';
|
import { u8aToBn, u8aToU8a } from '../u8a';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name compactFromU8a
|
* @name compactFromU8a
|
||||||
* @description Retrievs the offset and encoded length from a compact-prefixed value
|
* @description Retrives the offset and encoded length from a compact-prefixed value
|
||||||
* @example
|
* @example
|
||||||
* <BR>
|
* <BR>
|
||||||
*
|
*
|
||||||
@@ -24,20 +24,18 @@ export function compactFromU8a (input: U8aLike): [number, BN] {
|
|||||||
const u8a = u8aToU8a(input);
|
const u8a = u8aToU8a(input);
|
||||||
const flag = u8a[0] & 0b11;
|
const flag = u8a[0] & 0b11;
|
||||||
|
|
||||||
|
// The u8a is manually converted here, it is 2x faster that doing an
|
||||||
|
// additional call to u8aToBn
|
||||||
if (flag === 0b00) {
|
if (flag === 0b00) {
|
||||||
return [1, new BN(u8a[0]).ishrn(2)];
|
return [1, new BN(u8a[0] >>> 2)];
|
||||||
} else if (flag === 0b01) {
|
} else if (flag === 0b01) {
|
||||||
return [2, u8aToBn(u8a.subarray(0, 2), true).ishrn(2)];
|
return [2, new BN((u8a[0] + (u8a[1] * 0x1_00)) >>> 2)];
|
||||||
} else if (flag === 0b10) {
|
} else if (flag === 0b10) {
|
||||||
return [4, u8aToBn(u8a.subarray(0, 4), true).ishrn(2)];
|
return [4, new BN((u8a[0] + (u8a[1] * 0x1_00) + (u8a[2] * 0x1_00_00) + (u8a[3] * 0x1_00_00_00)) >>> 2)];
|
||||||
}
|
}
|
||||||
|
|
||||||
const offset = 1 + (
|
// add 5 to shifted (4 for base length, 1 for this byte)
|
||||||
new BN(u8a[0])
|
const offset = (u8a[0] >>> 2) + 5;
|
||||||
.ishrn(2) // clear flag
|
|
||||||
.iadd(BN_FOUR) // add 4 for base length
|
|
||||||
.toNumber()
|
|
||||||
);
|
|
||||||
|
|
||||||
return [offset, u8aToBn(u8a.subarray(1, offset), true)];
|
return [offset, u8aToBn(u8a.subarray(1, offset))];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import { u8aConcat } from '../u8a';
|
|||||||
const MAX_U8 = BN_TWO.pow(new BN(8 - 2)).isub(BN_ONE);
|
const MAX_U8 = BN_TWO.pow(new BN(8 - 2)).isub(BN_ONE);
|
||||||
const MAX_U16 = BN_TWO.pow(new BN(16 - 2)).isub(BN_ONE);
|
const MAX_U16 = BN_TWO.pow(new BN(16 - 2)).isub(BN_ONE);
|
||||||
const MAX_U32 = BN_TWO.pow(new BN(32 - 2)).isub(BN_ONE);
|
const MAX_U32 = BN_TWO.pow(new BN(32 - 2)).isub(BN_ONE);
|
||||||
|
const BL_16 = { bitLength: 16 };
|
||||||
|
const BL_32 = { bitLength: 32 };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name compactToU8a
|
* @name compactToU8a
|
||||||
@@ -27,9 +29,9 @@ export function compactToU8a (value: BN | bigint | number): Uint8Array {
|
|||||||
if (bn.lte(MAX_U8)) {
|
if (bn.lte(MAX_U8)) {
|
||||||
return new Uint8Array([bn.toNumber() << 2]);
|
return new Uint8Array([bn.toNumber() << 2]);
|
||||||
} else if (bn.lte(MAX_U16)) {
|
} else if (bn.lte(MAX_U16)) {
|
||||||
return bnToU8a(bn.shln(2).iadd(BN_ONE), 16, true);
|
return bnToU8a(bn.shln(2).iadd(BN_ONE), BL_16);
|
||||||
} else if (bn.lte(MAX_U32)) {
|
} else if (bn.lte(MAX_U32)) {
|
||||||
return bnToU8a(bn.shln(2).iadd(BN_TWO), 32, true);
|
return bnToU8a(bn.shln(2).iadd(BN_TWO), BL_32);
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8a = bnToU8a(bn);
|
const u8a = bnToU8a(bn);
|
||||||
|
|||||||
@@ -21,14 +21,33 @@ interface SetDefaults {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface Options {
|
interface Options {
|
||||||
|
/**
|
||||||
|
* @description The number of decimals
|
||||||
|
*/
|
||||||
decimals?: number;
|
decimals?: number;
|
||||||
|
/**
|
||||||
|
* @description Format the number with this specific unit
|
||||||
|
*/
|
||||||
forceUnit?: string;
|
forceUnit?: string;
|
||||||
|
/**
|
||||||
|
* @description Format with SI, i.e. m/M/etc.
|
||||||
|
*/
|
||||||
withSi?: boolean;
|
withSi?: boolean;
|
||||||
|
/**
|
||||||
|
* @description Format with full SI, i.e. mili/Mega/etc.
|
||||||
|
*/
|
||||||
withSiFull?: boolean;
|
withSiFull?: boolean;
|
||||||
|
/**
|
||||||
|
* @description Add the unit (useful in Balance formats)
|
||||||
|
*/
|
||||||
withUnit?: boolean | string;
|
withUnit?: boolean | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface BalanceFormatter {
|
interface BalanceFormatter {
|
||||||
|
<ExtToBn extends ToBn> (input?: number | string | BN | bigint | ExtToBn, options?: Options): string;
|
||||||
|
/** @deprecated Use balanceFormat(input?: number | string | BN | bigint | ExtToBn, options?: Options) */
|
||||||
|
<ExtToBn extends ToBn> (input?: number | string | BN | bigint | ExtToBn, options?: boolean, decimals?: number): string;
|
||||||
|
/** @deprecated Use balanceFormat(input?: number | string | BN | bigint | ExtToBn, options?: Options) */
|
||||||
<ExtToBn extends ToBn> (input?: number | string | BN | bigint | ExtToBn, options?: Options, decimals?: number): string;
|
<ExtToBn extends ToBn> (input?: number | string | BN | bigint | ExtToBn, options?: Options, decimals?: number): string;
|
||||||
calcSi (text: string, decimals?: number): SiDef;
|
calcSi (text: string, decimals?: number): SiDef;
|
||||||
findSi (type: string): SiDef;
|
findSi (type: string): SiDef;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export function formatDecimal (value: string): string {
|
|||||||
// we rather strip and re-add the negative sign in the output
|
// we rather strip and re-add the negative sign in the output
|
||||||
const isNegative = value[0].startsWith('-');
|
const isNegative = value[0].startsWith('-');
|
||||||
const matched = isNegative
|
const matched = isNegative
|
||||||
? value.substr(1).match(NUMBER_REGEX)
|
? value.substring(1).match(NUMBER_REGEX)
|
||||||
: value.match(NUMBER_REGEX);
|
: value.match(NUMBER_REGEX);
|
||||||
|
|
||||||
return matched
|
return matched
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export function hexStripPrefix (value?: string | null): string {
|
|||||||
if (!value || value === '0x') {
|
if (!value || value === '0x') {
|
||||||
return '';
|
return '';
|
||||||
} else if (REGEX_HEX_PREFIXED.test(value)) {
|
} else if (REGEX_HEX_PREFIXED.test(value)) {
|
||||||
return value.substr(2);
|
return value.substring(2);
|
||||||
} else if (REGEX_HEX_NOPREFIX.test(value)) {
|
} else if (REGEX_HEX_NOPREFIX.test(value)) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ describe('hexToBn', (): void => {
|
|||||||
).toBe(256);
|
).toBe(256);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles backwards compatibility', (): void => {
|
it('handles legacy compatibility', (): void => {
|
||||||
expect(
|
expect(
|
||||||
hexToBn('0x0001000000000000', false).eq(
|
hexToBn('0x0001000000000000', false).eq(
|
||||||
hexToBn('0x0001000000000000', { isLe: false })
|
hexToBn('0x0001000000000000', { isLe: false })
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ import { isBoolean } from '../is/boolean';
|
|||||||
import { objectSpread } from '../object/spread';
|
import { objectSpread } from '../object/spread';
|
||||||
import { hexStripPrefix } from './stripPrefix';
|
import { hexStripPrefix } from './stripPrefix';
|
||||||
|
|
||||||
const DEFAULT_OPTS: ToBnOptions = { isLe: false, isNegative: false };
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name hexToBn
|
* @name hexToBn
|
||||||
* @summary Creates a BN.js object from a hex string.
|
* @summary Creates a BN.js object from a hex string.
|
||||||
@@ -28,12 +26,17 @@ const DEFAULT_OPTS: ToBnOptions = { isLe: false, isNegative: false };
|
|||||||
* hexToBn('0x123480001f'); // => BN(0x123480001f)
|
* hexToBn('0x123480001f'); // => BN(0x123480001f)
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function hexToBn (value?: string | null, options: ToBnOptions | boolean = DEFAULT_OPTS): BN {
|
function hexToBn (value?: string | null, options?: ToBnOptions): BN;
|
||||||
|
/** @deprecated Use hexToBn (value?: string | null, options?: ToBnOptions) */
|
||||||
|
function hexToBn (value?: string | null, options?: boolean): BN;
|
||||||
|
/** @deprecated Use hexToBn (value?: string | null, options?: ToBnOptions) */
|
||||||
|
function hexToBn (value?: string | null, options: ToBnOptions | boolean = {}): BN {
|
||||||
if (!value || value === '0x') {
|
if (!value || value === '0x') {
|
||||||
return new BN(0);
|
return new BN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { isLe, isNegative }: ToBnOptions = objectSpread(
|
// For hex, default to BE
|
||||||
|
const { isLe, isNegative } = objectSpread<ToBnOptions>(
|
||||||
{ isLe: false, isNegative: false },
|
{ isLe: false, isNegative: false },
|
||||||
isBoolean(options)
|
isBoolean(options)
|
||||||
? { isLe: options }
|
? { isLe: options }
|
||||||
@@ -43,8 +46,10 @@ export function hexToBn (value?: string | null, options: ToBnOptions | boolean =
|
|||||||
const bn = new BN(stripped, 16, isLe ? 'le' : 'be');
|
const bn = new BN(stripped, 16, isLe ? 'le' : 'be');
|
||||||
|
|
||||||
// fromTwos takes as parameter the number of bits, which is the hex length
|
// fromTwos takes as parameter the number of bits, which is the hex length
|
||||||
// multiplied by 4.
|
// multiplied by 4 (2 bytes being 8 bits)
|
||||||
return isNegative
|
return isNegative
|
||||||
? bn.fromTwos(stripped.length * 4)
|
? bn.fromTwos(stripped.length * 4)
|
||||||
: bn;
|
: bn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export { hexToBn };
|
||||||
|
|||||||
@@ -42,11 +42,13 @@ export function hexToU8a (_value?: HexString | string | null, bitLength = -1): U
|
|||||||
const length = endLength - offset - mod;
|
const length = endLength - offset - mod;
|
||||||
|
|
||||||
for (let i = 0; i < length; i += 2) {
|
for (let i = 0; i < length; i += 2) {
|
||||||
dv.setUint16(i, HEX_TO_U16[value.substr(i * 2, 4)]);
|
const idx = i * 2;
|
||||||
|
|
||||||
|
dv.setUint16(i, HEX_TO_U16[value.substring(idx, idx + 4)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mod) {
|
if (mod) {
|
||||||
dv.setUint8(length, HEX_TO_U8[value.substr(value.length - 2, 2)]);
|
dv.setUint8(length, HEX_TO_U8[value.substring(value.length - 2)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { isHex } from '.';
|
|||||||
|
|
||||||
describe('isHex', (): void => {
|
describe('isHex', (): void => {
|
||||||
const test = '1234abcd';
|
const test = '1234abcd';
|
||||||
const ptest = '0x1234adbcdef5798351773526352876adbcdef2358735adbcdef2623587adbcdef11234adbcdef5798351773526352876adbcdef2358735adbcdef2623587adbcdef11234adbcdef5798351773526352876adbcdef2358735adbcdef2623587adbcdef11234adbcdef5798351773526352876adbcdef2358735adbcdef2623587adbcdef1';
|
const ptest = `0x${'1234567890abcdef'.repeat(8192)}`;
|
||||||
|
|
||||||
it('returns true on 0x hex values', (): void => {
|
it('returns true on 0x hex values', (): void => {
|
||||||
expect(
|
expect(
|
||||||
@@ -71,5 +71,5 @@ describe('isHex', (): void => {
|
|||||||
).toEqual(true);
|
).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
performance('isHex (1024-bit)', 1000000, [[ptest]], isHex);
|
performance(`isHex (${(ptest.length - 2) / 2} bytes)`, 5000, [[ptest]], isHex);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ function formatWithLength (maxLength: number): (v: unknown) => unknown {
|
|||||||
|
|
||||||
return r.length < maxLength
|
return r.length < maxLength
|
||||||
? v
|
? v
|
||||||
: `${r.substr(0, maxLength)} ...`;
|
: `${r.substring(0, maxLength)} ...`;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/util', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/util', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -20,5 +20,5 @@ import type { AnyString } from '../types';
|
|||||||
export function stringShorten (value: AnyString, prefixLength = 6): string {
|
export function stringShorten (value: AnyString, prefixLength = 6): string {
|
||||||
return value.length <= 2 + 2 * prefixLength
|
return value.length <= 2 + 2 * prefixLength
|
||||||
? value.toString()
|
? value.toString()
|
||||||
: `${value.substr(0, prefixLength)}…${value.slice(-prefixLength)}`;
|
: `${value.substring(0, prefixLength)}…${value.slice(-prefixLength)}`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,19 +13,19 @@ describe('stringify', (): void => {
|
|||||||
|
|
||||||
it('stringifies an array of values', (): void => {
|
it('stringifies an array of values', (): void => {
|
||||||
expect(
|
expect(
|
||||||
stringify(['a', 1, 2n, new BN(3)])
|
stringify(['a', 1, 2n, new BN(69)])
|
||||||
).toEqual('["a",1,"2","3"]');
|
).toEqual('["a",1,"2","45"]');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('stringifies an array of values (with spaces)', (): void => {
|
it('stringifies an array of values (with spaces)', (): void => {
|
||||||
expect(
|
expect(
|
||||||
stringify(['a', 1, 2n, new BN(3)], 2)
|
stringify(['a', 1, 2n, new BN(3)], 2)
|
||||||
).toEqual('[\n "a",\n 1,\n "2",\n "3"\n]');
|
).toEqual('[\n "a",\n 1,\n "2",\n "03"\n]');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('stringifies a nested object', (): void => {
|
it('stringifies a nested object', (): void => {
|
||||||
expect(
|
expect(
|
||||||
stringify({ a: 'a', b: 1, c: { d: 2n, e: new BN(3) } })
|
stringify({ a: 'a', b: 1, c: { d: 2n, e: new BN(3) } })
|
||||||
).toEqual('{"a":"a","b":1,"c":{"d":"2","e":"3"}}');
|
).toEqual('{"a":"a","b":1,"c":{"d":"2","e":"03"}}');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -35,10 +35,23 @@ export interface Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ToBnOptions {
|
export interface ToBnOptions {
|
||||||
|
/**
|
||||||
|
* @description Convert in LE format
|
||||||
|
*/
|
||||||
isLe?: boolean;
|
isLe?: boolean;
|
||||||
|
/**
|
||||||
|
* @description Number is negative, apply two's complement
|
||||||
|
*/
|
||||||
isNegative?: boolean;
|
isNegative?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface NumberOptions extends ToBnOptions {
|
||||||
|
/**
|
||||||
|
* @description Limit to the specified bitLength, despite input length
|
||||||
|
*/
|
||||||
|
bitLength?: number;
|
||||||
|
}
|
||||||
|
|
||||||
export type BnList = {
|
export type BnList = {
|
||||||
0: BN;
|
0: BN;
|
||||||
1: BN;
|
1: BN;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util authors & contributors
|
// Copyright 2017-2022 @polkadot/util authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import { performance } from '../test/performance';
|
||||||
import { u8aToBigInt } from '.';
|
import { u8aToBigInt } from '.';
|
||||||
|
|
||||||
describe('u8aToBigInt', (): void => {
|
describe('u8aToBigInt', (): void => {
|
||||||
@@ -42,10 +43,10 @@ describe('u8aToBigInt', (): void => {
|
|||||||
it('handles negative numbers (little-endian)', (): void => {
|
it('handles negative numbers (little-endian)', (): void => {
|
||||||
expect(
|
expect(
|
||||||
u8aToBigInt(
|
u8aToBigInt(
|
||||||
new Uint8Array([46, 251]),
|
new Uint8Array([192, 29, 254]),
|
||||||
{ isLe: true, isNegative: true }
|
{ isLe: true, isNegative: true }
|
||||||
)
|
)
|
||||||
).toEqual(-1234n);
|
).toEqual(-123456n);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles negative numbers (big-endian)', (): void => {
|
it('handles negative numbers (big-endian)', (): void => {
|
||||||
@@ -56,4 +57,6 @@ describe('u8aToBigInt', (): void => {
|
|||||||
)
|
)
|
||||||
).toEqual(-1234n);
|
).toEqual(-1234n);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
performance('u8aToBigInt', 500000, [[new Uint8Array([0x68, 0x65, 0x6c, 0x6c])]], u8aToBigInt);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ export function u8aToBigInt (value: Uint8Array, options: ToBnOptions = {}): bigi
|
|||||||
return BigInt(0);
|
return BigInt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { isLe, isNegative }: ToBnOptions = objectSpread({ isLe: true, isNegative: false }, options);
|
const { isLe, isNegative } = objectSpread<ToBnOptions>({ isLe: true, isNegative: false }, options);
|
||||||
const u8a = isLe
|
const u8a = isLe
|
||||||
? value.reverse()
|
? value.reverse()
|
||||||
: value;
|
: value;
|
||||||
|
|||||||
@@ -1,9 +1,25 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util authors & contributors
|
// Copyright 2017-2022 @polkadot/util authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
import { performance } from '../test/performance';
|
||||||
import { u8aToBn } from '.';
|
import { u8aToBn } from '.';
|
||||||
|
|
||||||
describe('u8aToBn', (): void => {
|
describe('u8aToBn', (): void => {
|
||||||
|
it('supports legacy compatibility', (): void => {
|
||||||
|
expect(
|
||||||
|
u8aToBn(
|
||||||
|
new Uint8Array([0x12, 0x34]),
|
||||||
|
true
|
||||||
|
).toString(16)
|
||||||
|
).toBe('3412');
|
||||||
|
expect(
|
||||||
|
u8aToBn(
|
||||||
|
new Uint8Array([0x12, 0x34]),
|
||||||
|
false
|
||||||
|
).toString(16)
|
||||||
|
).toBe('1234');
|
||||||
|
});
|
||||||
|
|
||||||
it('converts little-endian by default', (): void => {
|
it('converts little-endian by default', (): void => {
|
||||||
expect(
|
expect(
|
||||||
u8aToBn(
|
u8aToBn(
|
||||||
@@ -11,6 +27,7 @@ describe('u8aToBn', (): void => {
|
|||||||
).toString(16)
|
).toString(16)
|
||||||
).toBe('3412');
|
).toBe('3412');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('converts values (big-endian)', (): void => {
|
it('converts values (big-endian)', (): void => {
|
||||||
expect(
|
expect(
|
||||||
u8aToBn(
|
u8aToBn(
|
||||||
@@ -29,13 +46,42 @@ describe('u8aToBn', (): void => {
|
|||||||
).toBe('3412');
|
).toBe('3412');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('converts empty', (): void => {
|
describe('empty creation', (): void => {
|
||||||
expect(
|
it('handles unsigned (le)', (): void => {
|
||||||
u8aToBn(
|
expect(
|
||||||
new Uint8Array(),
|
u8aToBn(
|
||||||
{ isLe: true }
|
new Uint8Array(),
|
||||||
).toString(16)
|
{ isLe: true }
|
||||||
).toBe('0');
|
).toString(16)
|
||||||
|
).toBe('0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles signed (le)', (): void => {
|
||||||
|
expect(
|
||||||
|
u8aToBn(
|
||||||
|
new Uint8Array(),
|
||||||
|
{ isLe: true, isNegative: true }
|
||||||
|
).toString(16)
|
||||||
|
).toBe('0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles unsigned (be)', (): void => {
|
||||||
|
expect(
|
||||||
|
u8aToBn(
|
||||||
|
new Uint8Array(),
|
||||||
|
{ isLe: false }
|
||||||
|
).toString(16)
|
||||||
|
).toBe('0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles signed (be)', (): void => {
|
||||||
|
expect(
|
||||||
|
u8aToBn(
|
||||||
|
new Uint8Array(),
|
||||||
|
{ isLe: false, isNegative: true }
|
||||||
|
).toString(16)
|
||||||
|
).toBe('0');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('handles negative numbers (little-endian)', (): void => {
|
it('handles negative numbers (little-endian)', (): void => {
|
||||||
@@ -89,4 +135,6 @@ describe('u8aToBn', (): void => {
|
|||||||
)
|
)
|
||||||
).toBe(true);
|
).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
performance('u8aToBn', 500000, [[new Uint8Array([0x68, 0x65, 0x6c, 0x6c])]], u8aToBn);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
// Copyright 2017-2022 @polkadot/util authors & contributors
|
// Copyright 2017-2022 @polkadot/util authors & contributors
|
||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
import type { BN } from '../bn/bn';
|
|
||||||
import type { ToBnOptions } from '../types';
|
import type { ToBnOptions } from '../types';
|
||||||
|
|
||||||
import { hexToBn } from '../hex/toBn';
|
import { BN } from '../bn/bn';
|
||||||
import { u8aToHex } from './toHex';
|
import { isBoolean } from '../is/boolean';
|
||||||
|
import { objectSpread } from '../object/spread';
|
||||||
const DEFAULT_OPTS: ToBnOptions = { isLe: true, isNegative: false };
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name u8aToBn
|
* @name u8aToBn
|
||||||
@@ -16,7 +14,7 @@ const DEFAULT_OPTS: ToBnOptions = { isLe: true, isNegative: false };
|
|||||||
* `UInt8Array` input values return the actual BN. `null` or `undefined` values returns an `0x0` value.
|
* `UInt8Array` input values return the actual BN. `null` or `undefined` values returns an `0x0` value.
|
||||||
* @param value The value to convert
|
* @param value The value to convert
|
||||||
* @param options Options to pass while converting
|
* @param options Options to pass while converting
|
||||||
* @param options.isLe Convert using Little Endian
|
* @param options.isLe Convert using Little Endian (default)
|
||||||
* @param options.isNegative Convert using two's complement
|
* @param options.isNegative Convert using two's complement
|
||||||
* @example
|
* @example
|
||||||
* <BR>
|
* <BR>
|
||||||
@@ -27,9 +25,24 @@ const DEFAULT_OPTS: ToBnOptions = { isLe: true, isNegative: false };
|
|||||||
* u8aToHex(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0xf])); // 0x68656c0f
|
* u8aToHex(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0xf])); // 0x68656c0f
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function u8aToBn (value: Uint8Array, options: ToBnOptions | boolean = DEFAULT_OPTS): BN {
|
function u8aToBn (value: Uint8Array, options?: ToBnOptions): BN;
|
||||||
return hexToBn(
|
/** @deprecated Use u8aToBn(value: Uint8Array, options?: ToBnOptions) */
|
||||||
u8aToHex(value),
|
function u8aToBn (value: Uint8Array, options?: boolean): BN;
|
||||||
options
|
/** @deprecated Use hexToBn (value?: string | null, options?: ToBnOptions) */
|
||||||
|
function u8aToBn (value: Uint8Array, options: ToBnOptions | boolean = {}): BN {
|
||||||
|
// NOTE: This is the same process as followed in the hexToBn conversion
|
||||||
|
// For Uint8Array, default to LE
|
||||||
|
const { isLe, isNegative } = objectSpread<ToBnOptions>(
|
||||||
|
{ isLe: true, isNegative: false },
|
||||||
|
isBoolean(options)
|
||||||
|
? { isLe: options }
|
||||||
|
: options
|
||||||
);
|
);
|
||||||
|
const bn = new BN(value, isLe ? 'le' : 'be');
|
||||||
|
|
||||||
|
return isNegative && value.length
|
||||||
|
? bn.fromTwos(value.length * 8)
|
||||||
|
: bn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export { u8aToBn };
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ import { stringToU8a } from '../string/toU8a';
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
export function u8aToU8a (value?: U8aLike | null): Uint8Array {
|
export function u8aToU8a (value?: U8aLike | null): Uint8Array {
|
||||||
return !value
|
return value
|
||||||
? new Uint8Array()
|
? Array.isArray(value) || isBuffer(value)
|
||||||
: Array.isArray(value) || isBuffer(value)
|
|
||||||
? new Uint8Array(value)
|
? new Uint8Array(value)
|
||||||
: isU8a(value)
|
: isU8a(value)
|
||||||
? value
|
? value
|
||||||
: isHex(value)
|
: isHex(value)
|
||||||
? hexToU8a(value)
|
? hexToU8a(value)
|
||||||
: stringToU8a(value);
|
: stringToU8a(value)
|
||||||
|
: new Uint8Array();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ describe('detectPackage', (): void => {
|
|||||||
const MISMATCH = `@polkadot/util has multiple versions, ensure that there is only one installed.
|
const MISMATCH = `@polkadot/util has multiple versions, ensure that there is only one installed.
|
||||||
Either remove and explicitly install matching versions or dedupe using your package manager.
|
Either remove and explicitly install matching versions or dedupe using your package manager.
|
||||||
The following conflicting packages were found:
|
The following conflicting packages were found:
|
||||||
\t ${VER1}\t${PATH}/01
|
\t ${VER1}\tnode_modules/@polkadot/util
|
||||||
\tesm ${VER2} \tpath/02`;
|
\tesm ${VER2} \tnode_modules/@polkadot/api/node_modules/@polkadot/util`;
|
||||||
|
|
||||||
it('should not log the first time', (): void => {
|
it('should not log the first time', (): void => {
|
||||||
const spy = jest.spyOn(console, 'warn');
|
const spy = jest.spyOn(console, 'warn');
|
||||||
|
|
||||||
detectPackage({ name: PKG, version: VER1 }, `${PATH}/01`);
|
detectPackage({ name: PKG, version: VER1 }, PATH);
|
||||||
expect(spy).not.toHaveBeenCalled();
|
expect(spy).not.toHaveBeenCalled();
|
||||||
spy.mockRestore();
|
spy.mockRestore();
|
||||||
});
|
});
|
||||||
@@ -27,7 +27,7 @@ The following conflicting packages were found:
|
|||||||
it('should log the second time', (): void => {
|
it('should log the second time', (): void => {
|
||||||
const spy = jest.spyOn(console, 'warn');
|
const spy = jest.spyOn(console, 'warn');
|
||||||
|
|
||||||
detectPackage({ name: PKG, path: 'path/02', type: 'esm', version: VER2 });
|
detectPackage({ name: PKG, path: '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/api/node_modules/@polkadot/util', type: 'esm', version: VER2 });
|
||||||
expect(spy).toHaveBeenCalledWith(MISMATCH);
|
expect(spy).toHaveBeenCalledWith(MISMATCH);
|
||||||
spy.mockRestore();
|
spy.mockRestore();
|
||||||
});
|
});
|
||||||
@@ -35,9 +35,9 @@ The following conflicting packages were found:
|
|||||||
it('should allow for function use', (): void => {
|
it('should allow for function use', (): void => {
|
||||||
const spy = jest.spyOn(console, 'warn');
|
const spy = jest.spyOn(console, 'warn');
|
||||||
|
|
||||||
detectPackage({ name: PKG, type: 'cjs', version: VER3 }, () => `${PATH}/03`);
|
detectPackage({ name: PKG, type: 'cjs', version: VER3 }, () => PATH);
|
||||||
expect(spy).toHaveBeenCalledWith(`${MISMATCH}
|
expect(spy).toHaveBeenCalledWith(`${MISMATCH}
|
||||||
\tcjs ${VER3} \t${PATH}/03`);
|
\tcjs ${VER3} \tnode_modules/@polkadot/util`);
|
||||||
spy.mockRestore();
|
spy.mockRestore();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
import { xglobal } from '@polkadot/x-global';
|
import { xglobal } from '@polkadot/x-global';
|
||||||
|
|
||||||
import { isFunction } from './is/function';
|
import { isFunction } from './is/function';
|
||||||
import { isString } from './is/string';
|
|
||||||
import { assert } from './assert';
|
import { assert } from './assert';
|
||||||
|
|
||||||
type This = typeof globalThis;
|
type This = typeof globalThis;
|
||||||
@@ -26,14 +25,14 @@ interface PjsChecks extends This {
|
|||||||
__polkadotjs: Record<string, VersionPath[]>;
|
__polkadotjs: Record<string, VersionPath[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
type PjsWindow = (Window & This) & PjsChecks;
|
type PjsGlobal = (Window & This) & PjsChecks;
|
||||||
type FnString = () => string | undefined;
|
type FnString = () => string | undefined;
|
||||||
|
|
||||||
const DEDUPE = 'Either remove and explicitly install matching versions or dedupe using your package manager.\nThe following conflicting packages were found:';
|
const DEDUPE = 'Either remove and explicitly install matching versions or dedupe using your package manager.\nThe following conflicting packages were found:';
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
function getEntry (name: string): VersionPath[] {
|
function getEntry (name: string): VersionPath[] {
|
||||||
const _global = xglobal as PjsWindow;
|
const _global = xglobal as PjsGlobal;
|
||||||
|
|
||||||
if (!_global.__polkadotjs) {
|
if (!_global.__polkadotjs) {
|
||||||
_global.__polkadotjs = {};
|
_global.__polkadotjs = {};
|
||||||
@@ -46,37 +45,45 @@ function getEntry (name: string): VersionPath[] {
|
|||||||
return _global.__polkadotjs[name];
|
return _global.__polkadotjs[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVersionLength (all: { version: string }[]): number {
|
/** @internal */
|
||||||
let length = 0;
|
function formatDisplay <T extends { version: string }> (all: T[], fmt: (version: string, data: T) => string[]): string {
|
||||||
|
let max = 0;
|
||||||
|
|
||||||
for (const { version } of all) {
|
for (let i = 0; i < all.length; i++) {
|
||||||
length = Math.max(length, version.length);
|
max = Math.max(max, all[i].version.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
return length;
|
return all
|
||||||
|
.map((d) => `\t${fmt(d.version.padEnd(max), d).join('\t')}`)
|
||||||
|
.join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
function flattenInfos (all: PackageJson[]): string {
|
function formatInfo (version: string, { name }: PackageJson): string[] {
|
||||||
const verLength = getVersionLength(all);
|
return [
|
||||||
const stringify = ({ name, version }: PackageJson) =>
|
version,
|
||||||
`\t${version.padEnd(verLength)}\t${name}`;
|
name
|
||||||
|
];
|
||||||
return all.map(stringify).join('\n');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
function flattenVersions (entry: VersionPath[]): string {
|
function formatVersion (version: string, { path, type }: VersionPath): string[] {
|
||||||
const toPath = (version: VersionPath | string): VersionPath =>
|
let extracted: string;
|
||||||
isString(version)
|
|
||||||
? { version }
|
|
||||||
: version;
|
|
||||||
const all = entry.map(toPath);
|
|
||||||
const verLength = getVersionLength(all);
|
|
||||||
const stringify = ({ path, type, version }: VersionPath) =>
|
|
||||||
`\t${`${type || ''}`.padStart(3)} ${version.padEnd(verLength)}\t${(!path || path.length < 5) ? '<unknown>' : path}`;
|
|
||||||
|
|
||||||
return all.map(stringify).join('\n');
|
if (path && path.length >= 5) {
|
||||||
|
const nmIndex = path.indexOf('node_modules');
|
||||||
|
|
||||||
|
extracted = nmIndex === -1
|
||||||
|
? path
|
||||||
|
: path.substring(nmIndex);
|
||||||
|
} else {
|
||||||
|
extracted = '<unknown>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
`${`${type || ''}`.padStart(3)} ${version}`,
|
||||||
|
extracted
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @internal */
|
/** @internal */
|
||||||
@@ -94,6 +101,11 @@ function getPath (infoPath?: string, pathOrFn?: FnString | string | false | null
|
|||||||
return pathOrFn || '';
|
return pathOrFn || '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @internal */
|
||||||
|
function warn <T extends { version: string }> (pre: string, all: T[], fmt: (version: string, data: T) => string[]): void {
|
||||||
|
console.warn(`${pre}\n${DEDUPE}\n${formatDisplay(all, fmt)}`);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name detectPackage
|
* @name detectPackage
|
||||||
* @summary Checks that a specific package is only imported once
|
* @summary Checks that a specific package is only imported once
|
||||||
@@ -107,12 +119,12 @@ export function detectPackage ({ name, path, type, version }: PackageJson, pathO
|
|||||||
entry.push({ path: getPath(path, pathOrFn), type, version });
|
entry.push({ path: getPath(path, pathOrFn), type, version });
|
||||||
|
|
||||||
if (entry.length !== 1) {
|
if (entry.length !== 1) {
|
||||||
console.warn(`${name} has multiple versions, ensure that there is only one installed.\n${DEDUPE}\n${flattenVersions(entry)}`);
|
warn(`${name} has multiple versions, ensure that there is only one installed.`, entry, formatVersion);
|
||||||
} else {
|
} else {
|
||||||
const mismatches = deps.filter((d) => d && d.version !== version);
|
const mismatches = deps.filter((d) => d && d.version !== version);
|
||||||
|
|
||||||
if (mismatches.length) {
|
if (mismatches.length) {
|
||||||
console.warn(`${name} requires direct dependencies exactly matching version ${version}.\n${DEDUPE}\n${flattenInfos(mismatches)}`);
|
warn(`${name} requires direct dependencies exactly matching version ${version}.`, mismatches, formatInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@
|
|||||||
"./shim.cjs"
|
"./shim.cjs"
|
||||||
],
|
],
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/x-global": "8.3.2"
|
"@polkadot/x-global": "9.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/x-bigint', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/x-bigint', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/util": "8.3.2",
|
"@polkadot/util": "9.2.1",
|
||||||
"buffer-es6": "^4.9.3"
|
"buffer-es6": "^4.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/x-bundle', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/x-bundle', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"browser": "browser.js",
|
"browser": "browser.js",
|
||||||
"main": "node.js",
|
"main": "node.js",
|
||||||
"react-native": "react-native.js",
|
"react-native": "react-native.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7",
|
"@babel/runtime": "^7.17.9",
|
||||||
"@polkadot/x-global": "8.3.2",
|
"@polkadot/x-global": "9.2.1",
|
||||||
"@types/node-fetch": "^2.5.12",
|
"@types/node-fetch": "^2.6.1",
|
||||||
"node-fetch": "^2.6.6"
|
"node-fetch": "^2.6.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/x-fetch', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/x-fetch', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "8.3.2",
|
"version": "9.2.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.16.7"
|
"@babel/runtime": "^7.17.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
|
|
||||||
// Do not edit, auto-generated by @polkadot/dev
|
// Do not edit, auto-generated by @polkadot/dev
|
||||||
|
|
||||||
export const packageInfo = { name: '@polkadot/x-global', path: 'auto', type: 'auto', version: '8.3.2' };
|
export const packageInfo = { name: '@polkadot/x-global', path: 'auto', type: 'auto', version: '9.2.1' };
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user