Compare commits

...
127 Commits
Author SHA1 Message Date
github-actions[bot] 72bdf6cbae [CI Skip] release/stable 10.2.1
skip-checks: true
2022-12-04 09:45:10 +00:00
Jaco f7d2bf9d11 10.2.1 (#1687) 2022-12-04 11:41:20 +02:00
github-actions[bot] 8275f3bc54 [CI Skip] bump/beta 10.1.15-3-x
skip-checks: true
2022-12-03 09:08:03 +00:00
Jaco 058786689e Bump @polkadot/wasm (#1686) 2022-12-03 11:04:22 +02:00
github-actions[bot] 3d4b0018c0 [CI Skip] bump/beta 10.1.15-2-x
skip-checks: true
2022-12-02 08:04:26 +00:00
Jaco fa593ef1fc Add /*#__PURE__*/ annotations (#1684) 2022-12-02 09:59:59 +02:00
github-actions[bot] 179ca120fa [CI Skip] bump/beta 10.1.15-1-x
skip-checks: true
2022-12-02 07:46:24 +00:00
Jaco 984a4a1ae8 Adjust has{Buffer, Process} checks w/ globalThis (#1683) 2022-12-02 09:42:41 +02:00
github-actions[bot] 1ad77eb58c [CI Skip] bump/beta 10.1.15-0-x
skip-checks: true
2022-12-02 07:09:25 +00:00
Carlo 928eef865a feat(networks): support ledger for ajuna (#1682)
* chore(hw-ledger): update ledger-substrate to latest

* feat(networks): support ledger for ajuna
2022-12-02 09:04:58 +02:00
github-actions[bot] 16ea0d2ddb [CI Skip] release/stable 10.1.14
skip-checks: true
2022-11-27 07:04:52 +00:00
Jaco 203321c83e 10.1.14 (#1681) 2022-11-27 09:01:20 +02:00
github-actions[bot] f42721d545 [CI Skip] bump/beta 10.1.14-0-x
skip-checks: true
2022-11-26 15:55:01 +00:00
Jaco 9846e97d73 Bump deps (#1680)
* Bump deps

* Update network json compare
2022-11-26 17:49:56 +02:00
github-actions[bot] cc5ab430b5 [CI Skip] release/stable 10.1.13
skip-checks: true
2022-11-20 08:56:39 +00:00
Jaco 33b8d410b4 10.1.13 (#1678) 2022-11-20 10:53:06 +02:00
github-actions[bot] d9c2ed85bf [CI Skip] bump/beta 10.1.13-2-x
skip-checks: true
2022-11-19 11:31:58 +00:00
Jaco 6602421cfe Cleanup ledger-substrate path imports (#1677)
* Cleanup leadger-substrate path imports

* Adjust
2022-11-19 13:28:23 +02:00
github-actions[bot] cf61061863 [CI Skip] bump/beta 10.1.13-1-x
skip-checks: true
2022-11-19 06:47:21 +00:00
Jaco b47d83fd3c Bump deps (#1676) 2022-11-19 08:42:33 +02:00
github-actions[bot] 37e8d53a12 [CI Skip] bump/beta 10.1.13-0-x
skip-checks: true
2022-11-18 12:49:49 +00:00
Carlo fc667b7b72 feat(networks): support ledger for origintrail (#1674)
* chore(hw-ledger): update ledger-substrate to latest

* feat(networks): support ledger for origintrail
2022-11-18 14:44:46 +02:00
github-actions[bot] a020835039 [CI Skip] release/stable 10.1.12
skip-checks: true
2022-11-13 08:29:00 +00:00
Jaco 9cf963170d 10.1.12 (#1673) 2022-11-13 10:25:32 +02:00
github-actions[bot] 291d609dba [CI Skip] bump/beta 10.1.12-5-x
skip-checks: true
2022-11-09 12:16:11 +00:00
Jaco a6fa8cec17 `Bump deps (#1672)
* `Bump deps

* networks build
2022-11-09 14:11:28 +02:00
github-actions[bot] c4b95c7b52 [CI Skip] bump/beta 10.1.12-4-x
skip-checks: true
2022-11-05 15:38:35 +00:00
Jaco d5243f3527 Bump dev deps (#1671) 2022-11-05 17:34:56 +02:00
github-actions[bot] d71e34188e [CI Skip] bump/beta 10.1.12-3-x
skip-checks: true
2022-11-02 08:27:31 +00:00
Jaco 3f0f443124 Adjust deno deps imports (#1670) 2022-11-02 10:23:38 +02:00
github-actions[bot] 074879c7a7 [CI Skip] bump/beta 10.1.12-2-x
skip-checks: true
2022-10-30 08:14:05 +00:00
Jaco 516af6f81e Bump dev (#1669) 2022-10-30 10:09:48 +02:00
github-actions[bot] 4ee1446823 [CI Skip] bump/beta 10.1.12-1-x
skip-checks: true
2022-10-22 07:23:29 +00:00
Jaco 88850918b9 Bump dev (#1668) 2022-10-22 10:19:54 +03:00
github-actions[bot] 11ed1c4249 [CI Skip] bump/beta 10.1.12-0-x
skip-checks: true
2022-10-19 05:13:54 +00:00
Jaco 0be13f451d Bump deps (#1667) 2022-10-19 08:09:41 +03:00
github-actions[bot] f7e431adf9 [CI Skip] release/stable 10.1.11
skip-checks: true
2022-10-15 09:54:21 +00:00
Jaco 6efca949cc 10.1.11 (#1666) 2022-10-15 12:50:55 +03:00
github-actions[bot] 80ed10201f [CI Skip] bump/beta 10.1.11-2-x
skip-checks: true
2022-10-15 09:04:56 +00:00
Jaco 6763d1c062 Bump dev (w/ jest) (#1665) 2022-10-15 12:01:15 +03:00
github-actions[bot] 2c1efaa7a0 [CI Skip] bump/beta 10.1.11-1-x
skip-checks: true
2022-10-14 07:01:10 +00:00
Jaco d0fd445c06 Bump deps (#1664)
* Bump deps

* Bump deps
2022-10-14 09:57:35 +03:00
github-actions[bot] f1c84da0b0 [CI Skip] bump/beta 10.1.11-0-x
skip-checks: true
2022-10-07 06:48:06 +00:00
Jaco a5e68db05f Bump dev (#1663) 2022-10-07 09:43:47 +03:00
github-actions[bot] 60c0e81314 [CI Skip] release/stable 10.1.10
skip-checks: true
2022-10-07 04:37:47 +00:00
Jaco f72be29dbf 10.1.10 (#1662) 2022-10-07 07:34:02 +03:00
github-actions[bot] f301a57122 [CI Skip] bump/beta 10.1.10-5-x
skip-checks: true
2022-10-07 04:04:29 +00:00
Jaco 9523e6b0d3 Correct numberToHex(0) conversion (#1661) 2022-10-07 07:00:46 +03:00
github-actions[bot] b17bfbaf34 [CI Skip] bump/beta 10.1.10-4-x
skip-checks: true
2022-10-07 03:49:18 +00:00
Jaco 669d8b1a84 Ensure {bn, n}ToHex respects bitLength with 0 values (#1660) 2022-10-07 06:45:49 +03:00
github-actions[bot] b7815d43a5 [CI Skip] bump/beta 10.1.10-3-x
skip-checks: true
2022-10-05 08:39:36 +00:00
Jaco 7622c8b151 Bump deps (#1658)
* Bump deps

* Run tests
2022-10-05 11:35:41 +03:00
github-actions[bot] 37bc63b130 [CI Skip] bump/beta 10.1.10-2-x
skip-checks: true
2022-09-30 05:52:23 +00:00
Jaco 43f9676341 Bump deps (#1657) 2022-09-30 08:48:43 +03:00
github-actions[bot] 1283be6c19 [CI Skip] bump/beta 10.1.10-1-x
skip-checks: true
2022-09-28 10:48:35 +00:00
Jaco cdd6314a4f Bump TS (#1656) 2022-09-28 13:44:46 +03:00
github-actions[bot] 8d027717bb [CI Skip] bump/beta 10.1.10-0-x
skip-checks: true
2022-09-24 06:10:20 +00:00
Jaco dec9bbff49 Bump dev (#1655) 2022-09-24 09:05:51 +03:00
github-actions[bot] 536eef02c5 [CI Skip] release/stable 10.1.9
skip-checks: true
2022-09-24 05:32:50 +00:00
Jaco 3b51154d60 10.1.9 (#1654) 2022-09-24 08:29:24 +03:00
github-actions[bot] f5767e3def [CI Skip] bump/beta 10.1.9-3-x
skip-checks: true
2022-09-23 09:24:05 +00:00
Jaco 29057558ac CHANGELOG (#1653) 2022-09-23 12:20:29 +03:00
github-actions[bot] e591a75988 [CI Skip] bump/beta 10.1.9-2-x
skip-checks: true
2022-09-23 08:22:36 +00:00
Guilane DENGUIR 2fdc1679f2 feat(VTB): Added support for VTB blockchain (#1651)
* feat(VTB): Added support for VTB blockchain

* fix(lint): sorted struct alphabetically
2022-09-23 11:17:55 +03:00
github-actions[bot] 35f6a51a6b [CI Skip] bump/beta 10.1.9-1-x
skip-checks: true
2022-09-22 07:14:37 +00:00
Jaco 640bab086e Bump deps (#1652) 2022-09-22 10:11:01 +03:00
github-actions[bot] 5f9ffca721 [CI Skip] bump/beta 10.1.9-0-x
skip-checks: true
2022-09-17 07:17:42 +00:00
Jaco 2fd9d18910 Bump dev (#1650) 2022-09-17 10:13:13 +03:00
github-actions[bot] 7782eef6e3 [CI Skip] release/stable 10.1.8
skip-checks: true
2022-09-17 06:26:53 +00:00
Jaco 0c477e15c4 10.1.8 (#1649) 2022-09-17 09:22:50 +03:00
github-actions[bot] f39820e9c0 [CI Skip] bump/beta 10.1.8-7-x
skip-checks: true
2022-09-14 08:22:20 +00:00
Jaco 35d1a8e57f Bump deps (#1648) 2022-09-14 11:19:00 +03:00
github-actions[bot] 83567b75c5 [CI Skip] bump/beta 10.1.8-6-x
skip-checks: true
2022-09-13 10:37:41 +00:00
Carlos Medeiros 501d0fa249 add hydradx to knownLedger (#1647)
*update `@zondax/ledger-substrate`

* add hydradx to knownLedger
2022-09-13 13:33:59 +03:00
github-actions[bot] 014702ca16 [CI Skip] bump/beta 10.1.8-5-x
skip-checks: true
2022-09-12 05:59:33 +00:00
Jaco b53d34b41f Bump deps (#1645)
* Bump deps

* ss58 tests

* Bump dev
2022-09-12 08:56:04 +03:00
github-actions[bot] 47d995b88d [CI Skip] bump/beta 10.1.8-4-x
skip-checks: true
2022-09-09 06:04:13 +00:00
Jaco cedba4af0c Bump deps (#1644) 2022-09-09 09:00:38 +03:00
github-actions[bot] df8d84467b [CI Skip] bump/beta 10.1.8-3-x
skip-checks: true
2022-09-07 11:02:13 +00:00
Carlo SalaandJaco c289a83b16 feat: add darwinia to knownLedger (#1643)
Co-authored-by: Jaco <jacogr@gmail.com>
2022-09-07 13:58:25 +03:00
github-actions[bot] a869ba7793 [CI Skip] bump/beta 10.1.8-2-x
skip-checks: true
2022-09-07 10:31:33 +00:00
Jaco 4f4ce3549e Bump deps & CHANGELOG (#1642)
* Bump deps & CHANGELOG

* Downgrade rollup node-resolve
2022-09-07 13:27:13 +03:00
github-actions[bot] ce55d5b7d8 [CI Skip] bump/beta 10.1.8-1-x
skip-checks: true
2022-09-06 12:16:25 +00:00
Carlo Sala 10997a6d73 feat(networks): add phala and khala to knownLedger (#1641)
* chore: update `@zondax/ledger-substrate`

* feat(networks): add phala and khala to knownLedger
2022-09-06 15:12:41 +03:00
github-actions[bot] ebe30a2880 [CI Skip] bump/beta 10.1.8-0-x
skip-checks: true
2022-09-04 04:36:57 +00:00
Jaco b4963cc6bd Expose xxhashAsHex JS tests (#1640) 2022-09-04 07:33:07 +03:00
github-actions[bot] 304f7ad124 [CI Skip] release/stable 10.1.7
skip-checks: true
2022-09-02 08:30:00 +00:00
Jaco 9777bca5d4 10.1.7 (#1639) 2022-09-02 11:26:06 +03:00
github-actions[bot] 4c379e85cc [CI Skip] bump/beta 10.1.7-3-x
skip-checks: true
2022-09-02 08:18:45 +00:00
Jaco 4ee83d3d29 Hoist Ledger interface wrapError (#1638) 2022-09-02 11:15:11 +03:00
github-actions[bot] 40d6a388b2 [CI Skip] bump/beta 10.1.7-2-x
skip-checks: true
2022-08-31 05:53:00 +00:00
Jaco 31f4940ec6 Bump deps (#1637) 2022-08-31 08:48:06 +03:00
github-actions[bot] 1ac50696ca [CI Skip] bump/beta 10.1.7-1-x
skip-checks: true
2022-08-26 15:04:48 +00:00
Jaco 1ca5ff48a0 Pin Github actions (#1636) 2022-08-26 18:00:25 +03:00
github-actions[bot] 8253272901 [CI Skip] bump/beta 10.1.7-0-x
skip-checks: true
2022-08-26 12:54:03 +00:00
Jaco 82c38e9805 Bump TS (#1635) 2022-08-26 15:50:21 +03:00
github-actions[bot] 509834c491 [CI Skip] release/stable 10.1.6
skip-checks: true
2022-08-23 17:59:07 +00:00
Jaco d713a7a116 10.1.6 (#1633)
* 10.1.6

* Promise.resolve() for asyn calls

* Fix tests

* Extra testnet
2022-08-23 20:55:38 +03:00
github-actions[bot] d24e14aa5e [CI Skip] release/stable 10.1.5
skip-checks: true
2022-08-21 05:35:18 +00:00
Jaco b1a4a87926 10.1.5 (#1632) 2022-08-21 08:31:51 +03:00
github-actions[bot] 05e0d36a0e [CI Skip] bump/beta 10.1.5-1-x
skip-checks: true
2022-08-19 08:28:26 +00:00
Jaco 5599a8877c Add new @zondax/ledger-substrate (#1631) 2022-08-19 11:24:47 +03:00
github-actions[bot] 2d850c5ac4 [CI Skip] bump/beta 10.1.5-0-x
skip-checks: true
2022-08-19 07:51:21 +00:00
Jaco 82ba3fb9b1 Bump deps (#1630)
* Bump deps

* Responsebase import

* Do Ledger creation via newSubstrateApp
2022-08-19 10:47:44 +03:00
github-actions[bot] 0aae0e2bc2 [CI Skip] release/stable 10.1.4
skip-checks: true
2022-08-12 08:47:28 +00:00
Jaco 2bcea83e0a 10.1.4 (#1629)
* 10.1.4

* Bump deps
2022-08-12 11:43:55 +03:00
github-actions[bot] 20e126759e [CI Skip] bump/beta 10.1.4-2-x
skip-checks: true
2022-08-12 06:57:47 +00:00
Jaco 566127bcb6 Bump dev (#1628)
* Bump dev

* Adjust deno version

* bn.js import_map
2022-08-12 09:53:00 +03:00
github-actions[bot] b50ee462da [CI Skip] bump/beta 10.1.4-1-x
skip-checks: true
2022-08-10 11:52:51 +00:00
Jaco a3cd2de56d Master build fixes, CHANGELOG (#1627) 2022-08-10 14:48:35 +03:00
pan 7f60123417 add bifrost kusama (#1626) 2022-08-07 17:34:53 +03:00
github-actions[bot] bb124813dc [CI Skip] bump/beta 10.1.4-0-x
skip-checks: true
2022-08-07 08:55:28 +00:00
Jaco 652ede8ce7 Bump dev (#1625) 2022-08-07 11:51:50 +03:00
github-actions[bot] 52d2d38051 [CI Skip] release/stable 10.1.3
skip-checks: true
2022-08-05 13:32:13 +00:00
Jaco 65f627c0dc 10.1.3 (#1624) 2022-08-05 16:28:45 +03:00
github-actions[bot] 9ecf29b83b [CI Skip] bump/beta 10.1.3-5-x
skip-checks: true
2022-08-05 06:02:22 +00:00
Jaco 97b84977b7 Bump dev (#1623) 2022-08-05 08:58:55 +03:00
github-actions[bot] f9315c307f [CI Skip] bump/beta 10.1.3-4-x
skip-checks: true
2022-08-04 07:48:59 +00:00
Jaco c08c947abf Convert assert to if + throw (remaining occurences) (#1622)
* Convert assert to if + throw (remaining occurences)

* Adjust for readability

* CHANGELOG
2022-08-04 10:45:10 +03:00
github-actions[bot] 2d4509c32a [CI Skip] bump/beta 10.1.3-3-x
skip-checks: true
2022-08-03 08:00:59 +00:00
Jaco c6e18b1a9e Optimization of flatten 0 case (#1621)
* Optimizationf or flatten 0 case

* Remove wayward .123deno
2022-08-03 10:57:24 +03:00
github-actions[bot] 515a77781f [CI Skip] bump/beta 10.1.3-2-x
skip-checks: true
2022-08-02 07:56:00 +00:00
Jaco 55d2c149f7 Adjust logger constant map (#1620) 2022-08-02 10:52:23 +03:00
github-actions[bot] 43b959ad1f [CI Skip] bump/beta 10.1.3-1-x
skip-checks: true
2022-08-02 04:35:44 +00:00
Jaco 6708b34a01 Bump deps (#1619) 2022-08-02 07:32:07 +03:00
github-actions[bot] a9a9214f3b [CI Skip] bump/beta 10.1.3-0-x
skip-checks: true
2022-07-30 04:50:00 +00:00
Jaco 8bd77c97a0 Allow errors on GH actions (#1618) 2022-07-30 07:45:49 +03:00
105 changed files with 4202 additions and 1875 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
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
- uses: jacogr/action-approve@9d6ce78d26f23ad29d009d034822cf773f2cb50e
with:
authors: jacogr
labels: -auto
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
merge:
runs-on: ubuntu-latest
steps:
- uses: jacogr/action-merge@master
- uses: jacogr/action-merge@3b4b49af8a8644bf5cbb5409ee236abe04eeb1b0
with:
checks: build,lint,test
labels: -auto
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: dessant/lock-threads@v2
- uses: dessant/lock-threads@f1a42f0f44eb83361d617a014663e1a76cf282d2
with:
github-token: ${{ secrets.GH_PAT_BOT }}
issue-lock-inactive-days: '7'
+2 -2
View File
@@ -12,8 +12,8 @@ jobs:
YARN_ENABLE_SCRIPTS: false
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
steps:
- uses: actions/checkout@v2
- uses: denoland/setup-deno@v1
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
- uses: denoland/setup-deno@004814556e37c54a2f6e31384c9e18e983317366
with:
deno-version: vx.x.x
- name: ${{ matrix.step }}
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}
+2 -2
View File
@@ -12,8 +12,8 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v2
- uses: returntocorp/semgrep-action@v1
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
- uses: returntocorp/semgrep-action@aeafd770072c4f48798b991e3449592bddc2c435
with:
auditOn: push
publishToken: ${{ secrets.SEMGREP_APP_TOKEN }}
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/stale@v3
- uses: actions/stale@98ed4cb500039dbcccf4bd9bedada4d0187f2757
with:
repo-token: ${{ secrets.GH_PAT_BOT }}
stale-issue-message: 'This issue has been open for 21 days with no activity and is not labelled as an enhancement. It will be closed in 7 days.'
+123
View File
@@ -1,5 +1,128 @@
# CHANGELOG
## 10.2.1 Dec 4, 2022
Contributed:
- Ledger support for Ajuna (Thanks to https://github.com/carlosala)
Changes:
- `has{Buffer, Process}` now checks on `globalThis` (helps bundlers with auto-injection)
- Add `/*#__PURE__*/` annotations for specific `export const something = someFunction(...)`
- Upgrade dependencies to latest stable versions
- Upgrade to `@polkadot/wasm-crypto` 6.4.1
## 10.1.14 Nov 27, 2022
Changes:
- Upgrade dependencies to latest stable versions
## 10.1.13 Nov 20, 2022
Contributed:
- Ledger support for Origintrail (Thanks to https://github.com/carlosala)
Changes:
- Expand type descriptions around Ledger-based structures
- Upgrade dependencies to latest stable versions
## 10.1.12 Nov 13, 2022
Changes:
- Upgrade dependencies to latest stable versions
## 10.1.11 Oct 15, 2022
Changes:
- Upgrade dependencies to latest stable versions
## 10.1.10 Oct 7, 2022
Changes:
- Ensure `{bn, n, number}ToHex(0)` always respects `bitLength`
- Upgrade dependencies to latest stable versions
## 10.1.9 Sep 24, 2022
Contributed:
- Ledger support for VTB (Thanks to https://github.com/GuilaneDen)
Changes:
- Upgrade dependencies to latest stable versions
## 10.1.8 Sep 17, 2022
Contributed:
- Ledger support for Darwinia, Phala & Khala (Thanks to https://github.com/carlosala)
- Ledger support for HydraX (Thanks to https://github.com/chcmedeiros)
Changes:
- Expand test cases
- Upgrade dependencies to latest stable versions
## 10.1.7 Sep 2, 2022
Changes:
- Hoist Ledger interface wrapError (internal adjustment)
- Upgrade dependencies to latest stable versions
## 10.1.6 Aug 23, 2022
Changes:
- Adjust `nextTick` with greater care for browser loops
- Upgrade dependencies to latest stable versions
## 10.1.5 Aug 21, 2022
Changes:
- Adjust `ledgerApps` to use new `@zondax/ledger-substrate` interfaces
- Upgrade dependencies to latest stable versions
## 10.1.4 Aug 12, 2022
Contributed:
- Ledger support for Kusama Bifrost (Thanks to https://github.com/awesomepan)
Changes:
- Upgrade dependencies to latest stable versions
## 10.1.3 Aug 5, 2022
Changes:
- Optimization for empty `arrayFlatten` case
- Coding cleanups for logger (no `as` casting)
- Optiomizations in assertion checks
## 10.1.2 Jul 29, 2022
Changes:
+5 -3
View File
@@ -1,12 +1,12 @@
1435 Jaco 10.1.2 (#1617)
1492 Jaco 10.2.1 (#1687)
10 Carlo Sala feat(networks): support ledger for ajuna (#1682)
9 Antoine Estienne Add eth uri keyring test (#1291)
6 Amaury Martiny Add tests from Rust (#283)
6 Carlo Sala feat(ledger): add interlay and unique (#1609)
5 Jakub Pánik Add HydraDX parachain to genesis (#1583)
5 kwingram25 Add BN consts and timeToString (#610)
4 Adam Dossa Update Polymesh Genesis Hash (#1193)
4 pan add bifrost kusama (#1626)
3 Luke Schoen docs: Fix example in readme since we use default imports (#243)
3 pan update bifrost genesis hash (#1521)
2 AndreasGassmann feat(dependencies): remove moment.js (#530)
2 Gav Wood Fix stake:unstake (#182)
2 Hyungsuk Kang Add cross client Encryption/Decryption (#496)
@@ -21,7 +21,9 @@
1 amphineko chore: fix typo in versionDetect messages (#941)
1 Axel Chalon Simplify @polkadot/keyring KeyringPair (#419)
1 Brad Larson [FIX] Adjust error message (#646)
1 Carlos Medeiros add hydradx to knownLedger (#1647)
1 Eliott Teissonniere add nodle ledger specs (#1089)
1 Guilane DENGUIR feat(VTB): Added support for VTB blockchain (#1651)
1 h4x3rotab Throws an error when signing with a locked keypair (#578)
1 Harry Liu Update README.md (#446)
1 Hoon Kim replace plasm genesis with astar (#1397)
+5
View File
@@ -0,0 +1,5 @@
{
"imports": {
"https://esm.sh/v90/@types/bn.js@~5.2/index.d.ts": "https://esm.sh/v90/@types/bn.js@5.1.0/index.d.ts"
}
}
+8 -7
View File
@@ -11,16 +11,17 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"versions": {
"git": "10.1.2",
"npm": "10.1.2"
"git": "10.2.1",
"npm": "10.2.1"
},
"workspaces": [
"packages/*"
],
"scripts": {
"build": "polkadot-dev-build-ts",
"build:networks": "yarn test:one packages/networks/src",
"build:release": "polkadot-ci-ghact-build",
"build:rollup": "polkadot-exec-rollup --config",
"clean": "polkadot-dev-clean-build",
@@ -32,11 +33,11 @@
"test:one": "polkadot-dev-run-test --runInBand"
},
"devDependencies": {
"@babel/core": "^7.18.9",
"@polkadot/dev": "^0.67.86",
"@types/jest": "^28.1.6"
"@babel/core": "^7.20.5",
"@polkadot/dev": "^0.67.167",
"@types/jest": "^29.2.3"
},
"resolutions": {
"typescript": "^4.7.4"
"typescript": "^4.9.3"
}
}
View File
+7 -7
View File
@@ -16,18 +16,18 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"browser": "browser.js",
"main": "node.js",
"react-native": "react-native.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@ledgerhq/hw-transport": "^6.27.2",
"@ledgerhq/hw-transport-webhid": "^6.27.2",
"@ledgerhq/hw-transport-webusb": "^6.27.2",
"@polkadot/util": "10.1.2"
"@babel/runtime": "^7.20.6",
"@ledgerhq/hw-transport": "^6.27.8",
"@ledgerhq/hw-transport-webhid": "^6.27.8",
"@ledgerhq/hw-transport-webusb": "^6.27.8",
"@polkadot/util": "10.2.1"
},
"optionalDependencies": {
"@ledgerhq/hw-transport-node-hid-singleton": "^6.27.3"
"@ledgerhq/hw-transport-node-hid-singleton": "^6.28.5"
}
}
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '10.2.1' };
@@ -6,6 +6,8 @@ import Transport from '@ledgerhq/hw-transport';
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
export interface TransportDef {
/** Create a transport to be used in Ledger operations */
create (): Promise<Transport>;
/** The type of the underlying transport definition */
type: LedgerTypes;
}
+6 -6
View File
@@ -19,13 +19,13 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@ledgerhq/hw-transport": "^6.27.2",
"@polkadot/hw-ledger-transports": "10.1.2",
"@polkadot/util": "10.1.2",
"@zondax/ledger-substrate": "^0.33.0"
"@babel/runtime": "^7.20.6",
"@ledgerhq/hw-transport": "^6.27.8",
"@polkadot/hw-ledger-transports": "10.2.1",
"@polkadot/util": "10.2.1",
"@zondax/ledger-substrate": "^0.40.2"
}
}
+23 -18
View File
@@ -1,11 +1,13 @@
// Copyright 2017-2022 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ResponseBase, SubstrateApp } from '@zondax/ledger-substrate';
import type { SubstrateApp } from '@zondax/ledger-substrate';
import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types';
import { newSubstrateApp } from '@zondax/ledger-substrate';
import { transports } from '@polkadot/hw-ledger-transports';
import { u8aToBuffer } from '@polkadot/util';
import { hexAddPrefix, u8aToBuffer } from '@polkadot/util';
import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants';
import { ledgerApps } from './defaults';
@@ -14,6 +16,19 @@ export { packageInfo } from './packageInfo';
type Chain = keyof typeof ledgerApps;
type WrappedResult = Awaited<ReturnType<SubstrateApp['getAddress' | 'getVersion' | 'sign']>>;
/** @internal Wraps a SubstrateApp call, checking the result for any errors which result in a rejection */
async function wrapError <T extends WrappedResult> (promise: Promise<T>): Promise<T> {
const result = await promise;
if (result.return_code !== LEDGER_SUCCESS_CODE) {
throw new Error(result.error_message);
}
return result;
}
// A very basic wrapper for a ledger app -
// - it connects automatically, creating an app as required
// - Promises return errors (instead of wrapper errors)
@@ -38,18 +53,18 @@ export class Ledger {
public async getAddress (confirm = false, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerAddress> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerAddress> => {
const { address, pubKey } = await this.#wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm));
const { address, pubKey } = await wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm));
return {
address,
publicKey: `0x${pubKey}`
publicKey: hexAddPrefix(pubKey)
};
});
}
public async getVersion (): Promise<LedgerVersion> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerVersion> => {
const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await this.#wrapError(app.getVersion());
const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await wrapError(app.getVersion());
return {
isLocked,
@@ -62,10 +77,10 @@ export class Ledger {
public async sign (message: Uint8Array, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerSignature> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerSignature> => {
const buffer = u8aToBuffer(message);
const { signature } = await this.#wrapError(app.sign(account + accountOffset, change, addressIndex + addressOffset, buffer));
const { signature } = await wrapError(app.sign(account + accountOffset, change, addressIndex + addressOffset, buffer));
return {
signature: `0x${signature.toString('hex')}`
signature: hexAddPrefix(signature.toString('hex'))
};
});
}
@@ -80,7 +95,7 @@ export class Ledger {
const transport = await def.create();
this.#app = ledgerApps[this.#chain](transport);
this.#app = newSubstrateApp(transport, ledgerApps[this.#chain]);
}
return this.#app;
@@ -97,14 +112,4 @@ export class Ledger {
throw error;
}
};
#wrapError = async <T extends ResponseBase> (promise: Promise<T>): Promise<T> => {
const result = await promise;
if (result.return_code !== LEDGER_SUCCESS_CODE) {
throw new Error(result.error_message);
}
return result;
};
}
+16
View File
@@ -0,0 +1,16 @@
// Copyright 2017-2022 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { supportedApps } from '@zondax/ledger-substrate';
import { ledgerApps } from './defaults';
describe('ledgerApps', (): void => {
it.each(Object.keys(ledgerApps))('%s is known', (k): void => {
expect(
supportedApps.find(({ name }) =>
name === ledgerApps[k]
)
).toBeDefined();
});
});
+34 -30
View File
@@ -1,35 +1,39 @@
// Copyright 2017-2022 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { SubstrateApp } from '@zondax/ledger-substrate';
import { newAcalaApp, newAlephZeroApp, newAstarApp, newBifrostApp, newCentrifugeApp, newComposableApp, newDockApp, newEdgewareApp, newEquilibriumApp, newGenshiroApp, newInterlayApp, newKaruraApp, newKusamaApp, newNodleApp, newParallelApp, newPolkadexApp, newPolkadotApp, newPolymeshApp, newSoraApp, newStafiApp, newStatemineApp, newStatemintApp, newUniqueApp, newXXNetworkApp } from '@zondax/ledger-substrate';
// 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> = {
acala: newAcalaApp,
'aleph-node': newAlephZeroApp,
astar: newAstarApp,
bifrost: newBifrostApp,
centrifuge: newCentrifugeApp,
composable: newComposableApp,
'dock-mainnet': newDockApp,
edgeware: newEdgewareApp,
equilibrium: newEquilibriumApp,
genshiro: newGenshiroApp,
'interlay-parachain': newInterlayApp,
karura: newKaruraApp,
kusama: newKusamaApp,
'nodle-para': newNodleApp,
parallel: newParallelApp,
polkadex: newPolkadexApp,
polkadot: newPolkadotApp,
polymesh: newPolymeshApp,
sora: newSoraApp,
stafi: newStafiApp,
statemine: newStatemineApp,
statemint: newStatemintApp,
unique: newUniqueApp,
xxnetwork: newXXNetworkApp
// and maps to the known name in the @zondax/ledger-substrate/supported_apps package
export const ledgerApps: Record<string, string> = {
acala: 'Acala',
ajuna: 'Ajuna',
'aleph-node': 'AlephZero',
astar: 'Astar',
bifrost: 'Bifrost',
'bifrost-kusama': 'BifrostKusama',
centrifuge: 'Centrifuge',
composable: 'Composable',
darwinia: 'Darwinia',
'dock-mainnet': 'Dock',
edgeware: 'Edgeware',
equilibrium: 'Equilibrium',
genshiro: 'Genshiro',
hydradx: 'HydraDX',
'interlay-parachain': 'Interlay',
karura: 'Karura',
khala: 'Khala',
kusama: 'Kusama',
'nodle-para': 'Nodle',
origintrail: 'OriginTrail',
parallel: 'Parallel',
phala: 'Phala',
polkadex: 'Polkadex',
polkadot: 'Polkadot',
polymesh: 'Polymesh',
sora: 'Sora',
stafi: 'Stafi',
statemine: 'Statemine',
statemint: 'Statemint',
unique: 'Unique',
vtb: 'VTB',
xxnetwork: 'XXNetwork'
};
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '10.2.1' };
+10 -4
View File
@@ -6,25 +6,31 @@ import type { HexString } from '@polkadot/util/types';
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
export interface AccountOptions {
/** The index of the account */
account: number;
/** The index of the address */
addressIndex: number;
/** The change to apply */
change: number;
}
export interface LedgerAddress {
/** The ss58 encoded address */
address: string;
/** The hex-encoded publicKey */
publicKey: HexString;
}
export interface LedgerSignature {
/** A hex-encoded signature, as generated by the device */
signature: HexString;
}
export interface LedgerVersion {
/** Indicator flag for locked status */
isLocked: boolean;
/** Indicator flag for testmode status */
isTestMode: boolean;
/**
* @description Tuple with major, minor, patch
*/
version: [number, number, number];
/** The software version for this device */
version: [major: number, minor: number, patch: number];
}
+6 -6
View File
@@ -20,15 +20,15 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/util": "10.1.2",
"@polkadot/util-crypto": "10.1.2"
"@babel/runtime": "^7.20.6",
"@polkadot/util": "10.2.1",
"@polkadot/util-crypto": "10.2.1"
},
"peerDependencies": {
"@polkadot/util": "10.1.2",
"@polkadot/util-crypto": "10.1.2"
"@polkadot/util": "10.2.1",
"@polkadot/util-crypto": "10.2.1"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '10.2.1' };
+2
View File
@@ -18,7 +18,9 @@ export interface KeyringOptions {
export type KeyringPair$Meta = Record<string, unknown>;
export interface KeyringPair$Json extends EncryptedJson {
/** The ss58 encoded address or the hex-encoded version (the latter is for ETH-compat chains) */
address: string | HexString;
/** The underlying metadata associated with the keypair */
meta: KeyringPair$Meta;
}
+5 -5
View File
@@ -17,14 +17,14 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/util": "10.1.2",
"@substrate/ss58-registry": "^1.25.0"
"@babel/runtime": "^7.20.6",
"@polkadot/util": "10.2.1",
"@substrate/ss58-registry": "^1.35.0"
},
"devDependencies": {
"@polkadot/hw-ledger": "10.1.2"
"@polkadot/hw-ledger": "10.2.1"
}
}
+22
View File
@@ -11,6 +11,9 @@ export const knownGenesis: KnownGenesis = {
acala: [
'0xfc41b9bd8ef8fe53d58c7ea67c794c7ec9a73daf05e6d54b14ff6342c99ba64c'
],
ajuna: [
'0xe358eb1d11b31255a286c12e44fe6780b7edb171d657905a97e39f71d9c6c3ee'
],
'aleph-node': [
'0x70255b4d28de0fc4e1a193d7e175ad1ccef431598211c55538f1018651a0344e'
],
@@ -23,6 +26,9 @@ export const knownGenesis: KnownGenesis = {
bifrost: [
'0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b'
],
'bifrost-kusama': [
'0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed'
],
centrifuge: [
'0xb3db41421702df9a7fcac62b53ffeac85f7853cc4e689e0b93aeb3db18c09d82',
'0x67dddf2673b69e5f875f6f25277495834398eafd67f492e09f3f3345e003d1b5'
@@ -30,6 +36,9 @@ export const knownGenesis: KnownGenesis = {
composable: [
'0xdaab8df776eb52ec604a5df5d388bb62a050a0aaec4556a64265b9d42755552d'
],
darwinia: [
'0xe71578b37a7c799b0ab4ee87ffa6f059a6b98f71f06fb8c84a8d88013a548ad6'
],
'dock-mainnet': [
'0x6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae',
'0xf73467c6544aa68df2ee546b135f955c46b90fa627e9b5d7935f41061bb8a5a9'
@@ -56,6 +65,9 @@ export const knownGenesis: KnownGenesis = {
karura: [
'0xbaf5aabe40646d11f0ee8abbdc64f4a4b7674925cba08e4a05ff9ebed6e2126b'
],
khala: [
'0xd43540ba6d3eb4897c28a77d48cb5b729fea37603cbbfc7a86a73b72adb3be8d'
],
kulupu: [
'0xf7a99d3cb92853d00d5275c971c132c074636256583fee53b3bbe60d7b8769ba'
],
@@ -67,9 +79,15 @@ export const knownGenesis: KnownGenesis = {
'nodle-para': [
'0x97da7ede98d7bad4e36b4d734b6055425a3be036da2a332ea5a7037656427a21'
],
origintrail: [
'0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174'
],
parallel: [
'0xe61a41c53f5dcd0beb09df93b34402aada44cb05117b71059cce40a2723a4e97'
],
phala: [
'0x1bb969d85965e4bb5a651abbedf21a54b6b31a21f66b5401cc3f1e286268d736'
],
picasso: [
'0xe8e7f0f4c4f5a00720b4821dbfddefea7490bcf0b19009961cc46957984e2c1c'
],
@@ -114,6 +132,10 @@ export const knownGenesis: KnownGenesis = {
unique: [
'0x84322d9cddbf35088f1e54e9a85c967a41a56a4f43445768125e61af166c7d31'
],
vtb: [
'0x286bc8414c7000ce1d6ee6a834e29a54c1784814b76243eb77ed0b2c5573c60f',
'0x7483b89572fb2bd687c7b9a93b242d0b237f9aba463aba07ec24503931038aaa'
],
westend: [
'0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e'
],
+8
View File
@@ -9,20 +9,27 @@ import type { KnownLedger } from '../types';
// NOTE: Any network here needs to have a genesisHash attached in the ./genesis.ts config
export const knownLedger: KnownLedger = {
acala: 0x00000313,
ajuna: 0x00000162,
'aleph-node': 0x00000283,
astar: 0x0000032a,
bifrost: 0x00000314,
'bifrost-kusama': 0x00000314,
centrifuge: 0x000002eb,
composable: 0x00000162,
darwinia: 0x00000162,
'dock-mainnet': 0x00000252,
edgeware: 0x0000020b,
equilibrium: 0x05f5e0fd,
genshiro: 0x05f5e0fc,
hydradx: 0x00000162,
'interlay-parachain': 0x00000162,
karura: 0x000002ae,
khala: 0x000001b2,
kusama: 0x000001b2,
'nodle-para': 0x000003eb,
origintrail: 0x00000162,
parallel: 0x00000162,
phala: 0x00000162,
polkadex: 0x0000031f,
polkadot: 0x00000162,
polymesh: 0x00000253,
@@ -31,5 +38,6 @@ export const knownLedger: KnownLedger = {
statemine: 0x000001b2, // common-good on Kusama, shares derivation
statemint: 0x00000162, // common-good on Polkadot, shares derivation
unique: 0x00000162,
vtb: 0x000002b6,
xxnetwork: 0x000007a3
};
@@ -10,6 +10,7 @@ export const knownTestnet: KnownTestnet = {
'dock-testnet': true,
jupiter: true,
'mathchain-testnet': true,
p3dt: true,
subspace_testnet: true,
'zero-alphaville': true
};
+1 -1
View File
@@ -11,7 +11,7 @@ describe('availableNetworks', (): void => {
expect(availableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]);
});
it('has a sorted list (first external, last external)', (): void => {
it.skip('has a sorted list (first external, last external)', (): void => {
expect(availableNetworks[3].displayName).toEqual('Acala');
expect(availableNetworks[availableNetworks.length - 1].displayName).toEqual('ZERO');
});
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '10.2.1' };
@@ -232,6 +232,19 @@
"standardAccount": "*25519",
"website": "https://darwinia.network/"
},
{
"prefix": 19,
"network": "watr",
"displayName": "Watr Protocol",
"symbols": [
"WATR"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://www.watr.org"
},
{
"prefix": 20,
"network": "stafi",
@@ -599,9 +612,11 @@
"network": "oak",
"displayName": "OAK Network",
"symbols": [
"OAK"
"OAK",
"TUR"
],
"decimals": [
10,
10
],
"standardAccount": "*25519",
@@ -767,6 +782,32 @@
"standardAccount": "*25519",
"website": "https://sora.org"
},
{
"prefix": 71,
"network": "p3d",
"displayName": "3DP network",
"symbols": [
"P3D"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://3dpass.org"
},
{
"prefix": 72,
"network": "p3dt",
"displayName": "3DP test network",
"symbols": [
"P3Dt"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://3dpass.org"
},
{
"prefix": 73,
"network": "zeitgeist",
@@ -832,6 +873,32 @@
"standardAccount": "*25519",
"website": "https://polkadex.trade"
},
{
"prefix": 90,
"network": "frequency",
"displayName": "Frequency",
"symbols": [
"FRQCY"
],
"decimals": [
8
],
"standardAccount": "*25519",
"website": "https://www.frequency.xyz"
},
{
"prefix": 92,
"network": "anmol",
"displayName": "Anmol Network",
"symbols": [
"ANML"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://anmol.network/"
},
{
"prefix": 93,
"network": "fragnova",
@@ -871,6 +938,19 @@
"standardAccount": "*25519",
"website": "https://polkafoundry.com"
},
{
"prefix": 100,
"network": "ibtida",
"displayName": "Anmol Network Ibtida Canary network",
"symbols": [
"IANML"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://anmol.network/"
},
{
"prefix": 101,
"network": "origintrail-parachain",
@@ -958,6 +1038,19 @@
"standardAccount": "*25519",
"website": "https://clover.finance"
},
{
"prefix": 129,
"network": "dorafactory-polkadot",
"displayName": "Dorafactory Polkadot Network",
"symbols": [
"DORA"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://dorafactory.org"
},
{
"prefix": 131,
"network": "litmus",
@@ -984,6 +1077,19 @@
"standardAccount": "*25519",
"website": "https://centrifuge.io/"
},
{
"prefix": 137,
"network": "vara",
"displayName": "Vara Network",
"symbols": [
"VARA"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://vara-network.io/"
},
{
"prefix": 172,
"network": "parallel",
@@ -1018,7 +1124,7 @@
"QTZ"
],
"decimals": [
15
18
],
"standardAccount": "*25519",
"website": "https://unique.network"
@@ -1072,7 +1178,7 @@
"decimals": [
18
],
"standardAccount": "Sr25519",
"standardAccount": "*25519",
"website": "https://efinity.io/"
},
{
@@ -1153,6 +1259,19 @@
"standardAccount": "*25519",
"website": "https://ajuna.io"
},
{
"prefix": 1985,
"network": "seals",
"displayName": "Seals Network",
"symbols": [
"SEAL"
],
"decimals": [
9
],
"standardAccount": "*25519",
"website": "https://seals.app"
},
{
"prefix": 2007,
"network": "kapex",
@@ -1166,6 +1285,19 @@
"standardAccount": "*25519",
"website": "https://totemaccounting.com"
},
{
"prefix": 2009,
"network": "cloudwalk_mainnet",
"displayName": "CloudWalk Network Mainnet",
"symbols": [
"CWN"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://explorer.mainnet.cloudwalk.io"
},
{
"prefix": 2032,
"network": "interlay",
@@ -1192,6 +1324,45 @@
"standardAccount": "*25519",
"website": "https://interlay.io/"
},
{
"prefix": 2106,
"network": "bitgreen",
"displayName": "Bitgreen",
"symbols": [
"BBB"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://bitgreen.org/"
},
{
"prefix": 2112,
"network": "chainflip",
"displayName": "Chainflip",
"symbols": [
"FLIP"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://chainflip.io/"
},
{
"prefix": 2114,
"network": "Turing",
"displayName": "Turing Network",
"symbols": [
"TUR"
],
"decimals": [
10
],
"standardAccount": "*25519",
"website": "https://oak.tech/turing/home/"
},
{
"prefix": 2207,
"network": "SNOW",
@@ -1231,6 +1402,45 @@
"standardAccount": "*25519",
"website": "https://subspace.network"
},
{
"prefix": 4006,
"network": "tangle",
"displayName": "Tangle Network",
"symbols": [
"TNT"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://www.webb.tools/"
},
{
"prefix": 4450,
"network": "g1",
"displayName": "Ğ1",
"symbols": [
"G1"
],
"decimals": [
2
],
"standardAccount": "*25519",
"website": "https://duniter.org"
},
{
"prefix": 5234,
"network": "humanode",
"displayName": "Humanode Network",
"symbols": [
"HMND"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://humanode.io"
},
{
"prefix": 6094,
"network": "subspace",
@@ -1257,6 +1467,23 @@
"standardAccount": "*25519",
"website": "https://tidefi.com"
},
{
"prefix": 7013,
"network": "gm",
"displayName": "GM",
"symbols": [
"FREN",
"GM",
"GN"
],
"decimals": [
12,
0,
0
],
"standardAccount": "*25519",
"website": "https://gmordie.com"
},
{
"prefix": 7391,
"network": "unique_mainnet",
@@ -1270,6 +1497,32 @@
"standardAccount": "*25519",
"website": "https://unique.network"
},
{
"prefix": 8883,
"network": "sapphire_mainnet",
"displayName": "Sapphire by Unique",
"symbols": [
"QTZ"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://unique.network"
},
{
"prefix": 9072,
"network": "hashed",
"displayName": "Hashed Network",
"symbols": [
"HASH"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://hashed.network"
},
{
"prefix": 9807,
"network": "dentnet",
@@ -1283,6 +1536,19 @@
"standardAccount": "*25519",
"website": "https://www.dentnet.io"
},
{
"prefix": 9935,
"network": "t3rn",
"displayName": "t3rn",
"symbols": [
"TRN"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://t3rn.io/"
},
{
"prefix": 10041,
"network": "basilisk",
@@ -1322,6 +1588,19 @@
"standardAccount": "*25519",
"website": "https://cess.cloud"
},
{
"prefix": 11486,
"network": "luhn",
"displayName": "Luhn Network",
"symbols": [
"LUHN"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://luhn.network"
},
{
"prefix": 11820,
"network": "contextfree",
+10 -10
View File
@@ -22,21 +22,21 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"browser": {
"crypto": false,
"stream": false
},
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@noble/hashes": "1.1.2",
"@noble/secp256k1": "1.6.3",
"@polkadot/networks": "10.1.2",
"@polkadot/util": "10.1.2",
"@polkadot/wasm-crypto": "^6.3.1",
"@polkadot/x-bigint": "10.1.2",
"@polkadot/x-randomvalues": "10.1.2",
"@babel/runtime": "^7.20.6",
"@noble/hashes": "1.1.3",
"@noble/secp256k1": "1.7.0",
"@polkadot/networks": "10.2.1",
"@polkadot/util": "10.2.1",
"@polkadot/wasm-crypto": "^6.4.1",
"@polkadot/x-bigint": "10.2.1",
"@polkadot/x-randomvalues": "10.2.1",
"@scure/base": "1.1.1",
"ed2curve": "^0.3.0",
"tweetnacl": "^1.0.3"
@@ -45,6 +45,6 @@
"@types/ed2curve": "^0.2.2"
},
"peerDependencies": {
"@polkadot/util": "10.1.2"
"@polkadot/util": "10.2.1"
}
}
+12 -5
View File
@@ -5,14 +5,16 @@ import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6
import { assert, isHex, isU8a, u8aToU8a } from '@polkadot/util';
import { isHex, isU8a, u8aToU8a } from '@polkadot/util';
import { base58Decode } from '../base58';
import { checkAddressChecksum } from './checksum';
import { defaults } from './defaults';
export function decodeAddress (encoded?: HexString | string | Uint8Array | null, ignoreChecksum?: boolean, ss58Format: Prefix = -1): Uint8Array {
assert(encoded, 'Invalid empty address passed');
if (!encoded) {
throw new Error('Invalid empty address passed');
}
if (isU8a(encoded) || isHex(encoded)) {
return u8aToU8a(encoded);
@@ -21,12 +23,17 @@ export function decodeAddress (encoded?: HexString | string | Uint8Array | null,
try {
const decoded = base58Decode(encoded);
assert(defaults.allowedEncodedLengths.includes(decoded.length), 'Invalid decoded address length');
if (!defaults.allowedEncodedLengths.includes(decoded.length)) {
throw new Error('Invalid decoded address length');
}
const [isValid, endPos, ss58Length, ss58Decoded] = checkAddressChecksum(decoded);
assert(ignoreChecksum || isValid, 'Invalid decoded address checksum');
assert([-1, ss58Decoded].includes(ss58Format), () => `Expected ss58Format ${ss58Format}, received ${ss58Decoded}`);
if (!isValid && !ignoreChecksum) {
throw new Error('Invalid decoded address checksum');
} else if (ss58Format !== -1 && ss58Format !== ss58Decoded) {
throw new Error(`Expected ss58Format ${ss58Format}, received ${ss58Decoded}`);
}
return decoded.slice(ss58Length, endPos);
} catch (error) {
+3 -3
View File
@@ -5,8 +5,6 @@ import type { HexString } from '@polkadot/util/types';
import type { DeriveJunction } from '../key/DeriveJunction';
import type { Prefix } from './types';
import { assert } from '@polkadot/util';
import { keyExtractPath } from '../key';
import { sr25519DerivePublic } from '../sr25519';
import { decodeAddress } from './decode';
@@ -25,7 +23,9 @@ function filterHard ({ isHard }: DeriveJunction): boolean {
export function deriveAddress (who: HexString | Uint8Array | string, suri: string, ss58Format?: Prefix): string {
const { path } = keyExtractPath(suri);
assert(path.length && !path.every(filterHard), 'Expected suri to contain a combination of non-hard paths');
if (!path.length || path.every(filterHard)) {
throw new Error('Expected suri to contain a combination of non-hard paths');
}
let publicKey = decodeAddress(who);
+6 -3
View File
@@ -5,7 +5,7 @@ import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L34
import { assert, u8aConcat } from '@polkadot/util';
import { u8aConcat } from '@polkadot/util';
import { base58Encode } from '../base58';
import { decodeAddress } from './decode';
@@ -16,8 +16,11 @@ export function encodeAddress (key: HexString | Uint8Array | string, ss58Format:
// decode it, this means we can re-encode an address
const u8a = decodeAddress(key);
assert(ss58Format >= 0 && ss58Format <= 16383 && ![46, 47].includes(ss58Format), 'Out of range ss58Format specified');
assert(defaults.allowedDecodedLengths.includes(u8a.length), () => `Expected a valid key to convert, with length ${defaults.allowedDecodedLengths.join(', ')}`);
if ((ss58Format < 0) || (ss58Format > 16383) || [46, 47].includes(ss58Format)) {
throw new Error('Out of range ss58Format specified');
} else if (!defaults.allowedDecodedLengths.includes(u8a.length)) {
throw new Error(`Expected a valid key to convert, with length ${defaults.allowedDecodedLengths.join(', ')}`);
}
const input = u8aConcat(
ss58Format < 64
@@ -5,7 +5,7 @@ import type { HexString } from '@polkadot/util/types';
import type { HashType } from '../secp256k1/types';
import type { Prefix } from './types';
import { assert, u8aConcat } from '@polkadot/util';
import { u8aConcat } from '@polkadot/util';
import { hasher } from '../secp256k1/hasher';
import { encodeAddress } from './encode';
@@ -17,7 +17,9 @@ import { encodeAddress } from './encode';
export function evmToAddress (evmAddress: HexString | string | Uint8Array, ss58Format?: Prefix, hashType: HashType = 'blake2'): string {
const message = u8aConcat('evm:', evmAddress);
assert(message.length === 24, () => `Converting ${evmAddress as string}: Invalid evm address length`);
if (message.length !== 24) {
throw new Error(`Converting ${evmAddress as string}: Invalid evm address length`);
}
return encodeAddress(hasher(hashType, message), ss58Format);
}
+4 -4
View File
@@ -28,13 +28,13 @@ const config = {
* @description
* Validates that the supplied value is valid base32, throwing exceptions if not
*/
export const base32Validate = createValidate(config);
export const base32Validate = /*#__PURE__*/ createValidate(config);
/**
* @name isBase32
* @description Checks if the input is in base32, returning true/false
*/
export const isBase32 = createIs(base32Validate);
export const isBase32 = /*#__PURE__*/ createIs(base32Validate);
/**
* @name base32Decode
@@ -42,7 +42,7 @@ export const isBase32 = createIs(base32Validate);
* @description
* From the provided input, decode the base32 and return the result as an `Uint8Array`.
*/
export const base32Decode = createDecode(config, base32Validate);
export const base32Decode = /*#__PURE__*/ createDecode(config, base32Validate);
/**
* @name base32Encode
@@ -50,4 +50,4 @@ export const base32Decode = createDecode(config, base32Validate);
* @description
* From the provided input, create the base32 and return the result as a string.
*/
export const base32Encode = createEncode(config);
export const base32Encode = /*#__PURE__*/ createEncode(config);
+14 -13
View File
@@ -3,7 +3,7 @@
import type { U8aLike } from '@polkadot/util/types';
import { assert, u8aToU8a } from '@polkadot/util';
import { u8aToU8a } from '@polkadot/util';
// re-export the type so *.d.ts files don't have ../src imports
export type { U8aLike } from '@polkadot/util/types';
@@ -65,22 +65,23 @@ export function createIs (validate: ValidateFn): ValidateFn {
/** @internal */
export function createValidate ({ chars, ipfs, type }: Config): ValidateFn {
return (value?: unknown, ipfsCompat?: boolean): value is string => {
assert(value && typeof value === 'string', () => `Expected non-null, non-empty ${type} string input`);
if (!value || typeof value !== 'string') {
throw new Error(`Expected non-null, non-empty ${type} string input`);
}
if (ipfs && ipfsCompat) {
assert(value[0] === ipfs, () => `Expected ipfs-compatible ${type} to start with '${ipfs}'`);
if (ipfs && ipfsCompat && value[0] !== ipfs) {
throw new Error(`Expected ipfs-compatible ${type} to start with '${ipfs}'`);
}
for (let i = (ipfsCompat ? 1 : 0); i < value.length; i++) {
assert(
chars.includes(value[i]) || (
value[i] === '=' && (
(i === value.length - 1) ||
!chars.includes(value[i + 1])
)
),
() => `Invalid ${type} character "${value[i]}" (0x${value.charCodeAt(i).toString(16)}) at index ${i}`
);
if (!(chars.includes(value[i]) || (
value[i] === '=' && (
(i === value.length - 1) ||
!chars.includes(value[i + 1])
)
))) {
throw new Error(`Invalid ${type} character "${value[i]}" (0x${value.charCodeAt(i).toString(16)}) at index ${i}`);
}
}
return true;
+4 -4
View File
@@ -18,7 +18,7 @@ const config = {
* @description
* Validates that the supplied value is valid base58, throwing exceptions if not
*/
export const base58Validate = createValidate(config);
export const base58Validate = /*#__PURE__*/ createValidate(config);
/**
* @name base58Decode
@@ -26,7 +26,7 @@ export const base58Validate = createValidate(config);
* @description
* From the provided input, decode the base58 and return the result as an `Uint8Array`.
*/
export const base58Decode = createDecode(config, base58Validate);
export const base58Decode = /*#__PURE__*/ createDecode(config, base58Validate);
/**
* @name base58Encode
@@ -34,10 +34,10 @@ export const base58Decode = createDecode(config, base58Validate);
* @description
* From the provided input, create the base58 and return the result as a string.
*/
export const base58Encode = createEncode(config);
export const base58Encode = /*#__PURE__*/ createEncode(config);
/**
* @name isBase58
* @description Checks if the input is in base58, returning true/false
*/
export const isBase58 = createIs(base58Validate);
export const isBase58 = /*#__PURE__*/ createIs(base58Validate);
+4 -4
View File
@@ -17,13 +17,13 @@ const config = {
* @description
* Validates that the supplied value is valid base64
*/
export const base64Validate = createValidate(config);
export const base64Validate = /*#__PURE__*/ createValidate(config);
/**
* @name isBase64
* @description Checks if the input is in base64, returning true/false
*/
export const isBase64 = createIs(base64Validate);
export const isBase64 = /*#__PURE__*/ createIs(base64Validate);
/**
* @name base64Decode
@@ -31,7 +31,7 @@ export const isBase64 = createIs(base64Validate);
* @description
* From the provided input, decode the base64 and return the result as an `Uint8Array`.
*/
export const base64Decode = createDecode(config, base64Validate);
export const base64Decode = /*#__PURE__*/ createDecode(config, base64Validate);
/**
* @name base64Encode
@@ -39,4 +39,4 @@ export const base64Decode = createDecode(config, base64Validate);
* @description
* From the provided input, create the base64 and return the result as a string.
*/
export const base64Encode = createEncode(config);
export const base64Encode = /*#__PURE__*/ createEncode(config);
+3 -2
View File
@@ -1,7 +1,6 @@
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { assert } from '@polkadot/util';
import { isReady, waitReady } from '@polkadot/wasm-crypto';
export const cryptoIsReady = isReady;
@@ -9,7 +8,9 @@ export const cryptoIsReady = isReady;
export function cryptoWaitReady (): Promise<boolean> {
return waitReady()
.then((): boolean => {
assert(isReady(), 'Unable to initialize @polkadot/util-crypto');
if (!isReady()) {
throw new Error('Unable to initialize @polkadot/util-crypto');
}
return true;
})
@@ -1,14 +1,16 @@
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { assert, compactAddLength, isU8a, stringToU8a, u8aConcat } from '@polkadot/util';
import { compactAddLength, isU8a, stringToU8a, u8aConcat } from '@polkadot/util';
import { blake2AsU8a } from '../blake2/asU8a';
const HDKD = compactAddLength(stringToU8a('Ed25519HDKD'));
export function ed25519DeriveHard (seed: Uint8Array, chainCode: Uint8Array): Uint8Array {
assert(isU8a(chainCode) && chainCode.length === 32, 'Invalid chainCode passed to derive');
if (!isU8a(chainCode) || chainCode.length !== 32) {
throw new Error('Invalid chainCode passed to derive');
}
return blake2AsU8a(
u8aConcat(HDKD, seed, chainCode)
+4 -2
View File
@@ -6,7 +6,7 @@ import type { Keypair } from '../types';
import nacl from 'tweetnacl';
import { assert, u8aToU8a } from '@polkadot/util';
import { u8aToU8a } from '@polkadot/util';
import { ed25519Sign as wasmSign, isReady } from '@polkadot/wasm-crypto';
/**
@@ -24,7 +24,9 @@ import { ed25519Sign as wasmSign, isReady } from '@polkadot/wasm-crypto';
* ```
*/
export function ed25519Sign (message: HexString | Uint8Array | string, { publicKey, secretKey }: Partial<Keypair>, onlyJs?: boolean): Uint8Array {
assert(secretKey, 'Expected a valid secretKey');
if (!secretKey) {
throw new Error('Expected a valid secretKey');
}
const messageU8a = u8aToU8a(message);
+6 -3
View File
@@ -5,7 +5,7 @@ import type { HexString } from '@polkadot/util/types';
import nacl from 'tweetnacl';
import { assert, u8aToU8a } from '@polkadot/util';
import { u8aToU8a } from '@polkadot/util';
import { ed25519Verify as wasmVerify, isReady } from '@polkadot/wasm-crypto';
/**
@@ -27,8 +27,11 @@ export function ed25519Verify (message: HexString | Uint8Array | string, signatu
const publicKeyU8a = u8aToU8a(publicKey);
const signatureU8a = u8aToU8a(signature);
assert(publicKeyU8a.length === 32, () => `Invalid publicKey, received ${publicKeyU8a.length}, expected 32`);
assert(signatureU8a.length === 64, () => `Invalid signature, received ${signatureU8a.length} bytes, expected 64`);
if (publicKeyU8a.length !== 32) {
throw new Error(`Invalid publicKey, received ${publicKeyU8a.length}, expected 32`);
} else if (signatureU8a.length !== 64) {
throw new Error(`Invalid signature, received ${signatureU8a.length} bytes, expected 64`);
}
return !onlyJs && isReady()
? wasmVerify(signatureU8a, messageU8a, publicKeyU8a)
+4 -2
View File
@@ -3,7 +3,7 @@
import type { HexString } from '@polkadot/util/types';
import { assert, u8aToHex, u8aToU8a } from '@polkadot/util';
import { u8aToHex, u8aToU8a } from '@polkadot/util';
import { keccakAsU8a } from '../keccak';
import { secp256k1Expand } from '../secp256k1';
@@ -23,7 +23,9 @@ export function ethereumEncode (addressOrPublic?: HexString | string | Uint8Arra
const u8aAddress = u8aToU8a(addressOrPublic);
assert([20, 32, 33, 65].includes(u8aAddress.length), 'Invalid address or publicKey passed');
if (![20, 32, 33, 65].includes(u8aAddress.length)) {
throw new Error('Invalid address or publicKey passed');
}
const address = u8aToHex(getH160(u8aAddress), -1, false);
const hash = u8aToHex(keccakAsU8a(address), -1, false);
@@ -3,7 +3,7 @@
import type { Keypair } from '../../types';
import { assert, bnToU8a, stringToU8a, u8aConcat } from '@polkadot/util';
import { bnToU8a, stringToU8a, u8aConcat } from '@polkadot/util';
import { BN_BE_32_OPTS } from '../../bn';
import { hmacShaAsU8a } from '../../hmac';
@@ -51,7 +51,9 @@ export function hdEthereum (seed: Uint8Array, path = ''): Keypair {
return hd;
}
assert(hdValidatePath(path), 'Invalid derivation path');
if (!hdValidatePath(path)) {
throw new Error('Invalid derivation path');
}
const parts = path.split('/').slice(1);
+8 -5
View File
@@ -3,8 +3,6 @@
import type { Keypair } from '../../types';
import { assert } from '@polkadot/util';
import { ed25519PairFromSeed } from '../../ed25519';
import { mnemonicValidate } from '../../mnemonic';
import { HARDENED, hdValidatePath } from '../validatePath';
@@ -17,14 +15,19 @@ export function hdLedger (_mnemonic: string, path: string): Keypair {
.map((s) => s.trim())
.filter((s) => s);
assert([12, 24, 25].includes(words.length), 'Expected a mnemonic with 24 words (or 25 including a password)');
if (![12, 24, 25].includes(words.length)) {
throw new Error('Expected a mnemonic with 24 words (or 25 including a password)');
}
const [mnemonic, password] = words.length === 25
? [words.slice(0, 24).join(' '), words[24]]
: [words.join(' '), ''];
assert(mnemonicValidate(mnemonic), 'Invalid mnemonic passed to ledger derivation');
assert(hdValidatePath(path), 'Invalid derivation path');
if (!mnemonicValidate(mnemonic)) {
throw new Error('Invalid mnemonic passed to ledger derivation');
} else if (!hdValidatePath(path)) {
throw new Error('Invalid derivation path');
}
const parts = path.split('/').slice(1);
let seed = ledgerMaster(mnemonic, password);
+4 -2
View File
@@ -3,13 +3,15 @@
import type { EncryptedJson } from './types';
import { assert, hexToU8a, isHex } from '@polkadot/util';
import { hexToU8a, isHex } from '@polkadot/util';
import { base64Decode } from '../base64';
import { jsonDecryptData } from './decryptData';
export function jsonDecrypt ({ encoded, encoding }: EncryptedJson, passphrase?: string | null): Uint8Array {
assert(encoded, 'No encrypted data available to decode');
if (!encoded) {
throw new Error('No encrypted data available to decode');
}
return jsonDecryptData(
isHex(encoded)
+9 -4
View File
@@ -3,15 +3,18 @@
import type { EncryptedJsonEncoding } from './types';
import { assert, stringToU8a, u8aFixLength } from '@polkadot/util';
import { stringToU8a, u8aFixLength } from '@polkadot/util';
import { naclDecrypt } from '../nacl';
import { scryptEncode, scryptFromU8a } from '../scrypt';
import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants';
export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: string | null, encType: EncryptedJsonEncoding[] = ENCODING): Uint8Array {
assert(encrypted, 'No encrypted data available to decode');
assert(passphrase || !encType.includes('xsalsa20-poly1305'), 'Password required to decode encrypted data');
if (!encrypted) {
throw new Error('No encrypted data available to decode');
} else if (encType.includes('xsalsa20-poly1305') && !passphrase) {
throw new Error('Password required to decode encrypted data');
}
let encoded: Uint8Array | null = encrypted;
@@ -34,7 +37,9 @@ export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: str
);
}
assert(encoded, 'Unable to decode using the supplied passphrase');
if (!encoded) {
throw new Error('Unable to decode using the supplied passphrase');
}
return encoded;
}
+3 -4
View File
@@ -21,8 +21,7 @@ import { createAsHex, createBitHasher, createDualHasher } from '../helpers';
* keccakAsU8a('123'); // => Uint8Array
* ```
*/
export const keccakAsU8a = createDualHasher(
export const keccakAsU8a = /*#__PURE__*/ createDualHasher(
{ 256: keccak256, 512: keccak512 },
{ 256: keccak256Js, 512: keccak512Js }
);
@@ -31,13 +30,13 @@ export const keccakAsU8a = createDualHasher(
* @name keccak256AsU8a
* @description Creates a keccak256 Uint8Array from the input.
*/
export const keccak256AsU8a = createBitHasher(256, keccakAsU8a);
export const keccak256AsU8a = /*#__PURE__*/ createBitHasher(256, keccakAsU8a);
/**
* @name keccak512AsU8a
* @description Creates a keccak512 Uint8Array from the input.
*/
export const keccak512AsU8a = createBitHasher(512, keccakAsU8a);
export const keccak512AsU8a = /*#__PURE__*/ createBitHasher(512, keccakAsU8a);
/**
* @name keccakAsHex
+3 -3
View File
@@ -1,8 +1,6 @@
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { assert } from '@polkadot/util';
import { DeriveJunction } from './DeriveJunction';
const RE_JUNCTION = /\/(\/?)([^/]+)/g;
@@ -28,7 +26,9 @@ export function keyExtractPath (derivePath: string): ExtractResult {
}
}
assert(constructed === derivePath, () => `Re-constructed path "${constructed}" does not match input`);
if (constructed !== derivePath) {
throw new Error(`Re-constructed path "${constructed}" does not match input`);
}
return {
parts,
+3 -3
View File
@@ -3,13 +3,13 @@
import type { Keypair } from '../types';
import { assert } from '@polkadot/util';
import { DeriveJunction } from './DeriveJunction';
export function createSeedDeriveFn (fromSeed: (seed: Uint8Array) => Keypair, derive: (seed: Uint8Array, chainCode: Uint8Array) => Uint8Array): (keypair: Keypair, junction: DeriveJunction) => Keypair {
return (keypair: Keypair, { chainCode, isHard }: DeriveJunction): Keypair => {
assert(isHard, 'A soft key was found in the path and is not supported');
if (!isHard) {
throw new Error('A soft key was found in the path and is not supported');
}
return fromSeed(
derive(keypair.secretKey.subarray(0, 32), chainCode)
@@ -1,6 +1,7 @@
// Copyright 2017-2022 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { entropyToMnemonic, mnemonicToEntropy } from './bip39';
import DEFAULT_WORDLIST from './bip39-en';
describe('wordlist', (): void => {
@@ -12,3 +13,13 @@ describe('wordlist', (): void => {
expect(DEFAULT_WORDLIST.some((n) => !n.length || n.trim() !== n)).toEqual(false);
});
});
describe('bip39', (): void => {
it('has a two-way entropy <-> mnemonic', (): void => {
const m = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
expect(
entropyToMnemonic(mnemonicToEntropy(m))
).toEqual(m);
});
});
+25 -15
View File
@@ -14,7 +14,7 @@
// - Remove mnemonicToSeed (we only use the sync variant)
// - generateMnemonic takes number of words (instead of strength)
import { assert, stringToU8a, u8aToU8a } from '@polkadot/util';
import { stringToU8a, u8aToU8a } from '@polkadot/util';
import { pbkdf2Encode } from '../pbkdf2';
import { randomAsU8a } from '../random';
@@ -53,14 +53,18 @@ export function mnemonicToSeedSync (mnemonic: string, password?: string): Uint8A
export function mnemonicToEntropy (mnemonic: string): Uint8Array {
const words = normalize(mnemonic).split(' ');
assert(words.length % 3 === 0, INVALID_MNEMONIC);
if (words.length % 3 !== 0) {
throw new Error(INVALID_MNEMONIC);
}
// convert word indices to 11 bit binary strings
const bits = words
.map((word): string => {
const index = DEFAULT_WORDLIST.indexOf(word);
assert(index !== -1, INVALID_MNEMONIC);
if (index === -1) {
throw new Error(INVALID_MNEMONIC);
}
return index.toString(2).padStart(11, '0');
})
@@ -72,30 +76,36 @@ export function mnemonicToEntropy (mnemonic: string): Uint8Array {
const checksumBits = bits.slice(dividerIndex);
// calculate the checksum and compare
const entropyBytes = entropyBits.match(/(.{1,8})/g)?.map(binaryToByte);
const matched = entropyBits.match(/(.{1,8})/g);
const entropyBytes = matched && matched.map(binaryToByte);
assert(entropyBytes && (entropyBytes.length % 4 === 0) && (entropyBytes.length >= 16) && (entropyBytes.length <= 32), INVALID_ENTROPY);
if (!entropyBytes || (entropyBytes.length % 4 !== 0) || (entropyBytes.length < 16) || (entropyBytes.length > 32)) {
throw new Error(INVALID_ENTROPY);
}
const entropy = u8aToU8a(entropyBytes);
const newChecksum = deriveChecksumBits(entropy);
assert(newChecksum === checksumBits, INVALID_CHECKSUM);
if (deriveChecksumBits(entropy) !== checksumBits) {
throw new Error(INVALID_CHECKSUM);
}
return entropy;
}
export function entropyToMnemonic (entropy: Uint8Array): string {
// 128 <= ENT <= 256
assert((entropy.length % 4 === 0) && (entropy.length >= 16) && (entropy.length <= 32), INVALID_ENTROPY);
if ((entropy.length % 4 !== 0) || (entropy.length < 16) || (entropy.length > 32)) {
throw new Error(INVALID_ENTROPY);
}
const entropyBits = bytesToBinary(Array.from(entropy));
const checksumBits = deriveChecksumBits(entropy);
const matched = `${bytesToBinary(Array.from(entropy))}${deriveChecksumBits(entropy)}`.match(/(.{1,11})/g);
const mapped = matched && matched.map((binary) => DEFAULT_WORDLIST[binaryToByte(binary)]);
// we just set it prior, so this is a safe check
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
return (entropyBits + checksumBits).match(/(.{1,11})/g)!
.map((binary) => DEFAULT_WORDLIST[binaryToByte(binary)])
.join(' ');
if (!mapped || (mapped.length < 12)) {
throw new Error('Unable to map entropy to mnemonic');
}
return mapped.join(' ');
}
export function generateMnemonic (numWords: 12 | 15 | 18 | 21 | 24): string {
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/util-crypto', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/util-crypto', path: 'auto', type: 'auto', version: '10.2.1' };
+3 -3
View File
@@ -12,7 +12,7 @@ import { createBitHasher, createDualHasher } from '../helpers';
* @name shaAsU8a
* @summary Creates a sha Uint8Array from the input.
*/
export const shaAsU8a = createDualHasher(
export const shaAsU8a = /*#__PURE__*/ createDualHasher(
{ 256: sha256, 512: sha512 },
{ 256: sha256Js, 512: sha512Js }
);
@@ -21,10 +21,10 @@ export const shaAsU8a = createDualHasher(
* @name sha256AsU8a
* @summary Creates a sha256 Uint8Array from the input.
*/
export const sha256AsU8a = createBitHasher(256, shaAsU8a);
export const sha256AsU8a = /*#__PURE__*/ createBitHasher(256, shaAsU8a);
/**
* @name sha512AsU8a
* @summary Creates a sha512 Uint8Array from the input.
*/
export const sha512AsU8a = createBitHasher(512, shaAsU8a);
export const sha512AsU8a = /*#__PURE__*/ createBitHasher(512, shaAsU8a);
+16 -14
View File
@@ -10,21 +10,23 @@ describe('xxhashAsHex', (): void => {
await waitReady();
});
it('returns a 64-bit value by default', (): void => {
expect(
xxhashAsHex('abc')
).toEqual('0x990977adf52cbc44');
});
describe.each([false, true])('onlyJs=%p', (onlyJs): void => {
it('returns a 64-bit value by default', (): void => {
expect(
xxhashAsHex('abc', undefined, onlyJs)
).toEqual('0x990977adf52cbc44');
});
it('returns a 128-bit value (as specified)', (): void => {
expect(
xxhashAsHex('abc', 128)
).toEqual('0x990977adf52cbc440889329981caa9be');
});
it('returns a 128-bit value (as specified)', (): void => {
expect(
xxhashAsHex('abc', 128, onlyJs)
).toEqual('0x990977adf52cbc440889329981caa9be');
});
it('returns a 256-bit value (as specified)', (): void => {
expect(
xxhashAsHex('abc', 256)
).toEqual('0x990977adf52cbc440889329981caa9bef7da5770b2b8a05303b75d95360dd62b');
it('returns a 256-bit value (as specified)', (): void => {
expect(
xxhashAsHex('abc', 256, onlyJs)
).toEqual('0x990977adf52cbc440889329981caa9bef7da5770b2b8a05303b75d95360dd62b');
});
});
});
+8 -8
View File
@@ -34,18 +34,18 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/x-bigint": "10.1.2",
"@polkadot/x-global": "10.1.2",
"@polkadot/x-textdecoder": "10.1.2",
"@polkadot/x-textencoder": "10.1.2",
"@types/bn.js": "^5.1.0",
"@babel/runtime": "^7.20.6",
"@polkadot/x-bigint": "10.2.1",
"@polkadot/x-global": "10.2.1",
"@polkadot/x-textdecoder": "10.2.1",
"@polkadot/x-textencoder": "10.2.1",
"@types/bn.js": "^5.1.1",
"bn.js": "^5.2.1"
},
"devDependencies": {
"@polkadot/x-randomvalues": "10.1.2"
"@polkadot/x-randomvalues": "10.2.1"
}
}
+19
View File
@@ -1,12 +1,31 @@
// Copyright 2017-2022 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { perf } from '../test/performance';
import { arrayFlatten } from '.';
const PERF_ONE = [[1, 2, 3, 4, 5]];
const PERF_MUL = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
describe('arrayFlatten', (): void => {
it('flattens arrays', (): void => {
expect(
arrayFlatten([[0], [1, 2, 3], [4, 5], [6], [], [7, 8]])
).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8]);
});
it('flattens a single entry', (): void => {
expect(
arrayFlatten([[1, 2, 3, 4, 5]])
).toEqual([1, 2, 3, 4, 5]);
});
it('flattens an empty', (): void => {
expect(
arrayFlatten([])
).toEqual([]);
});
perf('arrayFlatten (single)', 10_000_000, [[PERF_ONE]], arrayFlatten);
perf('arrayFlatten (multi)', 700_000, [[PERF_MUL]], arrayFlatten);
});
+4 -2
View File
@@ -19,8 +19,10 @@
* ```
*/
export function arrayFlatten <T> (arrays: readonly T[][]): T[] {
// noop for the single-entry case
if (arrays.length === 1) {
// noop for the empty & single-entry case
if (arrays.length === 0) {
return [];
} else if (arrays.length === 1) {
return arrays[0];
}
+2 -2
View File
@@ -7,10 +7,10 @@ import { createCmp } from './helpers';
* @name nMax
* @summary Finds and returns the highest value in an array of bigint.
*/
export const nMax = createCmp<bigint>((a, b) => a > b);
export const nMax = /*#__PURE__*/ createCmp<bigint>((a, b) => a > b);
/**
* @name nMin
* @summary Finds and returns the lowest value in an array of bigint.
*/
export const nMin = createCmp<bigint>((a, b) => a < b);
export const nMin = /*#__PURE__*/ createCmp<bigint>((a, b) => a < b);
+6
View File
@@ -10,6 +10,12 @@ describe('nToHex', (): void => {
).toBe('0x00');
});
it('converts null values to 0x00000000 (with bitLength)', (): void => {
expect(
nToHex(null, { bitLength: 32 })
).toBe('0x00000000');
});
it('converts values to a prefixed hex representation', (): void => {
expect(
nToHex(128)
+1 -6
View File
@@ -7,15 +7,10 @@ import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types';
import { u8aToHex } from '../u8a';
import { nToU8a } from './toU8a';
/** @internal */
const ZERO_STR = '0x00';
/**
* @name nToHex
* @summary Creates a hex value from a bigint object.
*/
export function nToHex <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN | bigint | number | null, { bitLength, isLe = false, isNegative = false }: NumberOptions = {}): HexString {
return !value
? ZERO_STR
: u8aToHex(nToU8a(value, { bitLength, isLe, isNegative }));
return u8aToHex(nToU8a(value || 0, { bitLength, isLe, isNegative }));
}
+1 -1
View File
@@ -11,7 +11,7 @@ describe('nToU8a', (): void => {
it('converts null values to 0x00', (): void => {
expect(
nToU8a(null)
).toEqual(new Uint8Array());
).toEqual(new Uint8Array(1));
});
it('converts null values to 0x00000000 (bitLength)', (): void => {
+1 -1
View File
@@ -48,7 +48,7 @@ export function nToU8a <ExtToBn extends ToBn | ToBigInt> (value?: ExtToBn | BN |
if (valueBi === _0n) {
return bitLength === -1
? new Uint8Array()
? new Uint8Array(1)
: new Uint8Array(Math.ceil((bitLength || 0) / 8));
}
+2 -2
View File
@@ -17,7 +17,7 @@ import { BN } from './bn';
* bnMax([new BN(1), new BN(3), new BN(2)]).toString(); // => '3'
* ```
*/
export const bnMax = createCmp<BN>((a, b) => a.gt(b));
export const bnMax = /*#__PURE__*/ createCmp<BN>((a, b) => a.gt(b));
/**
* @name bnMin
@@ -32,4 +32,4 @@ export const bnMax = createCmp<BN>((a, b) => a.gt(b));
* bnMin([new BN(1), new BN(3), new BN(2)]).toString(); // => '1'
* ```
*/
export const bnMin = createCmp<BN>((a, b) => a.lt(b));
export const bnMin = /*#__PURE__*/ createCmp<BN>((a, b) => a.lt(b));
+6
View File
@@ -10,6 +10,12 @@ describe('bnToHex', (): void => {
).toBe('0x00');
});
it('converts null values to 0x00000000 (with bitLength)', (): void => {
expect(
bnToHex(null, { bitLength: 32 })
).toBe('0x00000000');
});
it('converts BN values to a prefixed hex representation', (): void => {
expect(
bnToHex(new BN(128))
+1 -5
View File
@@ -7,8 +7,6 @@ import type { BN } from './bn';
import { u8aToHex } from '../u8a';
import { bnToU8a } from './toU8a';
const ZERO_STR = '0x00';
/**
* @name bnToHex
* @summary Creates a hex value from a BN.js bignumber object.
@@ -25,7 +23,5 @@ const ZERO_STR = '0x00';
* ```
*/
export function bnToHex <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint | number | null, { bitLength = -1, isLe = false, isNegative = false }: NumberOptions = {}): HexString {
return !value
? ZERO_STR
: u8aToHex(bnToU8a(value, { bitLength, isLe, isNegative }));
return u8aToHex(bnToU8a(value, { bitLength, isLe, isNegative }));
}
+1 -1
View File
@@ -11,7 +11,7 @@ describe('bnToU8a', (): void => {
it('converts null values to 0x00', (): void => {
expect(
bnToU8a(null)
).toEqual(new Uint8Array());
).toEqual(new Uint8Array(1));
});
it('converts null values to 0x00000000 (bitLength)', (): void => {
+1 -1
View File
@@ -30,7 +30,7 @@ export function bnToU8a <ExtToBn extends ToBn> (value?: ExtToBn | BN | bigint |
if (!value) {
return bitLength === -1
? new Uint8Array()
? new Uint8Array(1)
: new Uint8Array(byteLength);
}
+10
View File
@@ -0,0 +1,10 @@
// Copyright 2017-2022 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { hasBuffer } from './has';
describe('hasBuffer', (): void => {
it('has Buffer (Jest + Node.js)', (): void => {
expect(hasBuffer).toEqual(typeof Buffer !== 'undefined');
});
});
+10 -8
View File
@@ -2,22 +2,18 @@
// SPDX-License-Identifier: Apache-2.0
import { BigInt } from '@polkadot/x-bigint';
import { xglobal } from '@polkadot/x-global';
// Since we run in very different environments, we have to ensure we have all
// the types used here for detection (some of these may require Node definitions,
// which are not available in Deno/browser)
declare const __dirname: unknown;
declare const Buffer: unknown;
declare const module: unknown;
declare const process: unknown;
declare const require: unknown;
/** true if the environment has proper BigInt support */
export const hasBigInt = typeof BigInt === 'function' && typeof BigInt.asIntN === 'function';
/** true if the environment has support for Buffer */
export const hasBuffer = typeof Buffer !== 'undefined';
/** true if the environment is CJS */
export const hasCjs = typeof require === 'function' && typeof module !== 'undefined';
@@ -27,8 +23,14 @@ export const hasDirname = typeof __dirname !== 'undefined';
/** true if the environment is ESM */
export const hasEsm = !hasCjs;
/** true if the environment has process available (typically Node.js) */
export const hasProcess = typeof process === 'object';
/** true if the environment has WebAssembly available */
export const hasWasm = typeof WebAssembly !== 'undefined';
// NOTE We check the following on globalThis, avoiding specific polyfill detection
// that some bundlers such as parcel would add (this is a check, not a use)
/** true if the environment has support for Buffer (typically Node.js) */
export const hasBuffer = typeof xglobal.Buffer !== 'undefined';
/** true if the environment has process available (typically Node.js) */
export const hasProcess = typeof xglobal.process === 'object';
+2 -2
View File
@@ -16,8 +16,8 @@ interface Codec {
toU8a: (isBare?: unknown) => Uint8Array;
}
const checkCodec = isOnObject<Codec>('toHex', 'toU8a');
const checkRegistry = isOnObject<Registry>('get');
const checkCodec = /*#__PURE__*/ isOnObject<Codec>('toHex', 'toU8a');
const checkRegistry = /*#__PURE__*/ isOnObject<Registry>('get');
export function isCodec <T extends Codec = Codec> (value?: unknown): value is T {
return checkCodec(value) && checkRegistry(value.registry);
+1 -1
View File
@@ -16,4 +16,4 @@ interface Compact<T> {
* @name isCompact
* @summary Tests for SCALE-Compact-like object instance.
*/
export const isCompact: <T> (value?: unknown) => value is Compact<T> = isOnObject('toBigInt', 'toBn', 'toNumber', 'unwrap');
export const isCompact: <T> (value?: unknown) => value is Compact<T> = /*#__PURE__*/ isOnObject('toBigInt', 'toBn', 'toNumber', 'unwrap');
+6
View File
@@ -21,4 +21,10 @@ describe('isObject', (): void => {
isObject(null)
).toEqual(false);
});
it('returns false on bigint', (): void => {
expect(
isObject(123n)
).toEqual(false);
});
});
+1 -1
View File
@@ -19,4 +19,4 @@ import { isOn } from './helpers';
* console.log('isObservable', isObservable(...));
* ```
*/
export const isObservable = isOn<Observable>('next');
export const isObservable = /*#__PURE__*/ isOn<Observable>('next');
+1 -1
View File
@@ -3,4 +3,4 @@
import { isOnObject } from './helpers';
export const isPromise = isOnObject<Promise<unknown>>('catch', 'then');
export const isPromise = /*#__PURE__*/ isOnObject<Promise<unknown>>('catch', 'then');
+1 -1
View File
@@ -5,4 +5,4 @@ import type { ToBigInt } from '../types';
import { isOn } from './helpers';
export const isToBigInt = isOn<ToBigInt>('toBigInt');
export const isToBigInt = /*#__PURE__*/ isOn<ToBigInt>('toBigInt');
+1 -1
View File
@@ -5,4 +5,4 @@ import type { ToBn } from '../types';
import { isOn } from './helpers';
export const isToBn = isOn<ToBn>('toBn');
export const isToBn = /*#__PURE__*/ isOn<ToBn>('toBn');
+5 -5
View File
@@ -3,6 +3,8 @@
import type { Logger, Logger$Data } from './types';
import { xglobal } from '@polkadot/x-global';
import { formatDate } from './format/formatDate';
import { isBn } from './is/bn';
import { isBuffer } from './is/buffer';
@@ -13,12 +15,10 @@ import { u8aToHex } from './u8a/toHex';
import { u8aToU8a } from './u8a/toU8a';
import { hasProcess } from './has';
declare const process: { env: Record<string, string> };
type ConsoleType = 'error' | 'log' | 'warn';
type LogType = ConsoleType | 'debug';
const logTo = {
const logTo = <const> {
debug: 'log',
error: 'error',
log: 'log',
@@ -72,7 +72,7 @@ function apply (log: LogType, type: string, values: Logger$Data, maxSize = -1):
return apply(log, type, Array.isArray(fnResult) ? fnResult : [fnResult], maxSize);
}
console[logTo[log] as 'log'](
console[logTo[log]](
formatDate(new Date()),
type,
...values
@@ -124,7 +124,7 @@ function getDebugFlag (env: readonly string[], type: string): boolean {
}
function parseEnv (type: string): [boolean, number] {
const env = (hasProcess ? process : {}).env || {};
const env = (hasProcess ? xglobal.process as { env: Record<string, string> } : {}).env || {};
const maxSize = parseInt(env.DEBUG_MAX || '-1', 10);
return [
+17 -12
View File
@@ -6,16 +6,21 @@
* @description Defer the operation to the queue for evaluation on the next tick
*/
export function nextTick (onExec: () => unknown, onError?: (error: Error) => unknown): void {
Promise
.resolve()
.then((): void => {
onExec();
})
.catch((error): void => {
if (onError) {
onError(error as Error);
} else {
console.error(error);
}
});
// While Promise.resolve().then(...) would defer to the nextTick, this
// actually does not play as nicely in browsers like the setTimeout(...)
// approach. So the safer, though less optimal approach is the one taken here
setTimeout((): void => {
Promise
.resolve()
.then((): void => {
onExec();
})
.catch((error: Error): void => {
if (onError) {
onError(error);
} else {
console.error(error);
}
});
}, 0);
}
+6 -6
View File
@@ -4,22 +4,22 @@
import { numberToHex } from '.';
describe('numberToHex', (): void => {
it('converts undefined to 0x', (): void => {
it('converts undefined to 0x00', (): void => {
expect(
numberToHex()
).toEqual('0x');
).toEqual('0x00');
});
it('converts null to 0x', (): void => {
it('converts null to 0x00000000 (with bitLength)', (): void => {
expect(
numberToHex(null)
).toEqual('0x');
numberToHex(null, 32)
).toEqual('0x00000000');
});
it('converts Nan to 0x', (): void => {
expect(
numberToHex(NaN)
).toEqual('0x');
).toEqual('0x00');
});
it('converts 0 to 0x00', (): void => {
+1 -5
View File
@@ -21,11 +21,7 @@ import { hexFixLength } from '../hex/fixLength';
* ```
*/
export function numberToHex (value?: number | null, bitLength = -1): HexString {
if (value === undefined || value === null || isNaN(value)) {
return '0x';
}
const hex = value.toString(16);
const hex = (!value || Number.isNaN(value) ? 0 : value).toString(16);
return hexFixLength(hex.length % 2 ? `0${hex}` : hex, bitLength, true);
}
+3 -3
View File
@@ -7,19 +7,19 @@ describe('numberToU8a', (): void => {
it('converts undefined to empty', (): void => {
expect(
numberToU8a()
).toEqual(new Uint8Array());
).toEqual(new Uint8Array(1));
});
it('converts null to empty', (): void => {
expect(
numberToU8a(null)
).toEqual(new Uint8Array());
).toEqual(new Uint8Array(1));
});
it('converts NaN to empty', (): void => {
expect(
numberToU8a(NaN)
).toEqual(new Uint8Array());
).toEqual(new Uint8Array(1));
});
it('converts 0 to u8a', (): void => {
+3 -5
View File
@@ -19,9 +19,7 @@ import { numberToHex } from './toHex';
* ```
*/
export function numberToU8a (value?: number | null, bitLength = -1): Uint8Array {
return value === undefined || value === null || isNaN(value)
? new Uint8Array()
: hexToU8a(
numberToHex(value, bitLength)
);
return hexToU8a(
numberToHex(value, bitLength)
);
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/util', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/util', path: 'auto', type: 'auto', version: '10.2.1' };
+2 -2
View File
@@ -65,7 +65,7 @@ function converter (format: (w: string, i: number) => string): (value: AnyString
* @name stringCamelCase
* @summary Convert a dash/dot/underscore/space separated Ascii string/String to camelCase
*/
export const stringCamelCase = converter((w, i) =>
export const stringCamelCase = /*#__PURE__*/ converter((w, i) =>
// lowercase for first letter/first word, else uppercase first, rest unchanged
(i ? CC_TO_UP[w.charCodeAt(0)] : CC_TO_LO[w.charCodeAt(0)]) + w.slice(1)
);
@@ -74,7 +74,7 @@ export const stringCamelCase = converter((w, i) =>
* @name stringPascalCase
* @summary Convert a dash/dot/underscore/space separated Ascii string/String to PascalCase
*/
export const stringPascalCase = converter((w) =>
export const stringPascalCase = /*#__PURE__*/ converter((w) =>
// uppercase the first character, leave the rest unchanged
CC_TO_UP[w.charCodeAt(0)] + w.slice(1)
);
+2 -2
View File
@@ -27,7 +27,7 @@ function converter (map: readonly string[]): (value?: AnyString | null) => strin
* stringLowerFirst('ABC'); // => 'aBC'
* ```
*/
export const stringLowerFirst = converter(CC_TO_LO);
export const stringLowerFirst = /*#__PURE__*/ converter(CC_TO_LO);
/**
* @name stringUpperFirst
@@ -43,4 +43,4 @@ export const stringLowerFirst = converter(CC_TO_LO);
* stringUpperFirst('abc'); // => 'Abc'
* ```
*/
export const stringUpperFirst = converter(CC_TO_UP);
export const stringUpperFirst = /*#__PURE__*/ converter(CC_TO_UP);
+3 -3
View File
@@ -20,9 +20,9 @@
"./shim.cjs"
],
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/x-global": "10.1.2"
"@babel/runtime": "^7.20.6",
"@polkadot/x-global": "10.2.1"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-bigint', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-bigint', path: 'auto', type: 'auto', version: '10.2.1' };
+3 -3
View File
@@ -17,11 +17,11 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/util": "10.1.2",
"@babel/runtime": "^7.20.6",
"@polkadot/util": "10.2.1",
"buffer-es6": "^4.9.3"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-bundle', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-bundle', path: 'auto', type: 'auto', version: '10.2.1' };
+4 -4
View File
@@ -17,14 +17,14 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"browser": "browser.js",
"main": "node.js",
"react-native": "react-native.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/x-global": "10.1.2",
"@babel/runtime": "^7.20.6",
"@polkadot/x-global": "10.2.1",
"@types/node-fetch": "^2.6.2",
"node-fetch": "^3.2.9"
"node-fetch": "^3.3.0"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-fetch', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-fetch', path: 'auto', type: 'auto', version: '10.2.1' };
+2 -2
View File
@@ -17,9 +17,9 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.9"
"@babel/runtime": "^7.20.6"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-global', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-global', path: 'auto', type: 'auto', version: '10.2.1' };
+5 -5
View File
@@ -17,18 +17,18 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"browser": "browser.js",
"main": "node.js",
"react-native": "react-native.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/x-global": "10.1.2"
"@babel/runtime": "^7.20.6",
"@polkadot/x-global": "10.2.1"
},
"devDependencies": {
"@types/react-native": "^0.69.3"
"@types/react-native": "^0.70.7"
},
"denoDependencies": {
"crypto": "std@0.148.0/node/crypto.ts"
"crypto": "std@0.161.0/node/crypto.ts"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-randomvalues', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-randomvalues', path: 'auto', type: 'auto', version: '10.2.1' };
+4 -4
View File
@@ -17,15 +17,15 @@
},
"sideEffects": false,
"type": "module",
"version": "10.1.2",
"version": "10.2.1",
"browser": "browser.js",
"main": "node.js",
"react-native": "react-native.js",
"dependencies": {
"@babel/runtime": "^7.18.9",
"@polkadot/x-global": "10.1.2"
"@babel/runtime": "^7.20.6",
"@polkadot/x-global": "10.2.1"
},
"denoDependencies": {
"util": "std@0.148.0/node/util.ts"
"util": "std@0.161.0/node/util.ts"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/x-textdecoder', path: 'auto', type: 'auto', version: '10.1.2' };
export const packageInfo = { name: '@polkadot/x-textdecoder', path: 'auto', type: 'auto', version: '10.2.1' };

Some files were not shown because too many files have changed in this diff Show More