Compare commits

...
175 Commits
Author SHA1 Message Date
github-actions[bot] 3e6d86b768 [CI Skip] release/stable 12.3.1
skip-checks: true
2023-06-11 06:26:55 +00:00
Jaco 8aab41648e 12.3.1 (#1845) 2023-06-11 09:20:32 +03:00
github-actions[bot] 4a535c08c7 [CI Skip] bump/beta 12.2.3-3-x
skip-checks: true
2023-06-10 08:09:54 +00:00
Jaco 715486d54e Additional adjustments to keyring types (#1844) 2023-06-10 11:01:23 +03:00
github-actions[bot] 1073dc14aa [CI Skip] bump/beta 12.2.3-2-x
skip-checks: true
2023-06-10 04:50:38 +00:00
Jaco 5cca95e855 Adjust object index typings (#1843)
* Adjust object index typings

* Update packages/util/src/is/childClass.ts

* Expand meta definition

* Extend meta with extension info

* Adjust

* CHANGELOG
2023-06-10 07:44:28 +03:00
github-actions[bot] 942b623273 [CI Skip] bump/beta 12.2.3-1-x
skip-checks: true
2023-06-06 05:37:49 +00:00
Jaco eea99656ad Only allow padding characters in base64 strings (#1842)
* Only allow padding characters in base64 strings

* Explicit padding sequence error
2023-06-06 08:31:44 +03:00
github-actions[bot] 04b6df9ac5 [CI Skip] bump/beta 12.2.3-0-x
skip-checks: true
2023-06-05 18:29:35 +00:00
Carlo Sala d5132b56de feat(networks): add zeitgeist Ledger support (#1840)
* feat(networks): add zeitgeist Ledger support

* fix(networks): update test
2023-06-05 21:23:31 +03:00
github-actions[bot] 1fdc2c8dae [CI Skip] release/stable 12.2.2
skip-checks: true
2023-06-04 09:06:26 +00:00
Jaco b6a2693e5f 12.2.2 (#1839) 2023-06-04 11:58:18 +03:00
github-actions[bot] 8b3687e062 [CI Skip] bump/beta 12.2.2-7-x
skip-checks: true
2023-06-04 08:30:55 +00:00
Jaco 3a8429b687 Bump noble/{curves, hashes} (#1838) 2023-06-04 11:24:40 +03:00
github-actions[bot] 26e9b01198 [CI Skip] bump/beta 12.2.2-6-x
skip-checks: true
2023-06-02 10:51:44 +00:00
Jaco 76d71d946d Bump deps (w/ TS 5.1) (#1837)
* Bump deps (w/ TS 5.1)

* Adjust fallback

* Revert promisify adjustments
2023-06-02 13:44:54 +03:00
github-actions[bot] 0ebc7bd374 [CI Skip] bump/beta 12.2.2-5-x
skip-checks: true
2023-05-30 08:57:58 +00:00
Jaco d94c126744 Apply missing count assignment in for loops (#1836) 2023-05-30 11:50:04 +03:00
github-actions[bot] 86597dcb17 [CI Skip] bump/beta 12.2.2-4-x
skip-checks: true
2023-05-28 07:53:44 +00:00
Jaco 1be682827b Bump deps (incl Ledger) (#1835) 2023-05-28 10:47:42 +03:00
github-actions[bot] 081b6b4f2b [CI Skip] bump/beta 12.2.2-3-x
skip-checks: true
2023-05-25 07:37:17 +00:00
Jaco 7dc38e78cf jg-bump-deps (#1834) 2023-05-25 10:29:17 +03:00
github-actions[bot] dcf214f250 [CI Skip] bump/beta 12.2.2-2-x
skip-checks: true
2023-05-21 09:48:48 +00:00
Jaco 2e82528e1b Bump dev (w/ eslint config adj) (#1832) 2023-05-21 12:42:39 +03:00
github-actions[bot] 090b91910f [CI Skip] bump/beta 12.2.2-1-x
skip-checks: true
2023-05-18 09:05:38 +00:00
Jaco 058d197646 Adjust tsconfig usage (w/ latest dev) (#1831) 2023-05-18 11:59:17 +03:00
github-actions[bot] 0fca8904e6 [CI Skip] bump/beta 12.2.2-0-x
skip-checks: true
2023-05-18 05:35:04 +00:00
Jaco 0bf7bc416a Bump dev deps (#1830) 2023-05-18 08:29:07 +03:00
github-actions[bot] ea08763307 [CI Skip] release/stable 12.2.1
skip-checks: true
2023-05-13 08:25:36 +00:00
Jaco 5272645abe 12.2.1 (#1829) 2023-05-13 11:17:53 +03:00
Jaco e5373c35c8 Unroll u8aToBigInt loops (#1821)
* Unroll u8aToBigInt loops

* Bump dev

* Rolling tests
2023-05-13 10:51:46 +03:00
github-actions[bot] b73b96e412 [CI Skip] bump/beta 12.1.3-2-x
skip-checks: true
2023-05-06 09:00:28 +00:00
Jaco 18d24bf509 Bump dev (#1827) 2023-05-06 11:52:33 +03:00
github-actions[bot] fe230f143f [CI Skip] bump/beta 12.1.3-1-x
skip-checks: true
2023-05-05 07:07:53 +00:00
Jaco 6357c1e040 Update Constructor interface params (#1823)
* Update Constructor interface params

* Adjust

* Adjust
2023-05-05 10:01:56 +03:00
github-actions[bot] 1876efe13e [CI Skip] bump/beta 12.1.3-0-x
skip-checks: true
2023-05-05 06:46:01 +00:00
Jaco 9de142b5f6 Bump deps (#1826) 2023-05-05 09:39:58 +03:00
github-actions[bot] e5cb0ba2b4 [CI Skip] release/stable 12.1.2
skip-checks: true
2023-05-01 16:14:41 +00:00
Jaco dba5d3e7b3 Fix typings for isChildClass (#1824)
* Fix typings for isChildClass

* Adjust
2023-05-01 19:08:41 +03:00
github-actions[bot] 8ccfecfff8 [CI Skip] bump/beta 12.1.2-0-x
skip-checks: true
2023-04-29 10:42:54 +00:00
Jaco f2e79ffe67 Align u8aToBigInt tests with u8aToBn (#1820)
* Align u8aToBigInt tests with u8aToBn

* Remove unused import
2023-04-29 13:33:53 +03:00
github-actions[bot] e7f595a11f [CI Skip] release/stable 12.1.1
skip-checks: true
2023-04-29 05:50:45 +00:00
Jaco 770471aef0 12.1.1 (#1819) 2023-04-29 08:44:25 +03:00
github-actions[bot] 6b1ff0036e [CI Skip] bump/beta 12.0.2-2-x
skip-checks: true
2023-04-28 06:13:30 +00:00
Jaco fee81b89ac Bump deps (#1818) 2023-04-28 09:07:41 +03:00
github-actions[bot] c4d5b8e1ae [CI Skip] bump/beta 12.0.2-1-x
skip-checks: true
2023-04-26 09:36:39 +00:00
Jaco 5674b1df67 Bump deps w/ export ordering (#1817) 2023-04-26 12:29:21 +03:00
github-actions[bot] 5ccb3e85f8 [CI Skip] bump/beta 12.0.2-0-x
skip-checks: true
2023-04-24 04:59:26 +00:00
Jaco 785a23433d Flatten Buffer | Uint8Array types (#1816)
* Flatten Buffer | Uint8Array types

* Remove dangling Buffer references

* CHANGELOG

* Adjust
2023-04-24 07:53:31 +03:00
github-actions[bot] bead42ca5f [CI Skip] release/stable 12.0.1
skip-checks: true
2023-04-22 07:44:07 +00:00
Jaco 2d2a1a5989 12.0.1 (#1815)
* 12.0.1

* Inline xxhash single-use

* Adjust comments
2023-04-22 10:37:53 +03:00
github-actions[bot] db4dde0a57 [CI Skip] bump/beta 11.1.4-19-x
skip-checks: true
2023-04-21 08:23:53 +00:00
Jaco b5d83f8836 Allow wordlist? param to mnemonic* functions (#1814) 2023-04-21 11:16:43 +03:00
github-actions[bot] cdf6cc6096 [CI Skip] bump/beta 11.1.4-18-x
skip-checks: true
2023-04-21 07:34:55 +00:00
Jaco dfd07e04d4 Align x-randomvalues with webCrypto (#1782)
* Align x-randomvalues with webCrypto

* Deno export from browser

* export * for x-ws

* export * from RN

* CHANGELOG
2023-04-21 10:27:30 +03:00
github-actions[bot] f5a3a6fd73 [CI Skip] bump/beta 11.1.4-17-x
skip-checks: true
2023-04-21 07:18:16 +00:00
Jaco 51a7263d38 Bump dev (w/ Node 16+ only) (#1813)
* Bump dev (w/ Node 16+ only)

* Lint

* Fix build
2023-04-21 10:10:27 +03:00
github-actions[bot] e3b11360ab [CI Skip] bump/beta 11.1.4-16-x
skip-checks: true
2023-04-20 06:58:05 +00:00
Jaco b4bed3d801 Bump deps (#1812) 2023-04-20 09:52:10 +03:00
github-actions[bot] 1f8b573d81 [CI Skip] bump/beta 11.1.4-15-x
skip-checks: true
2023-04-15 11:37:12 +00:00
Jaco a0e5d48208 CHANGELOG (#1811) 2023-04-15 14:30:49 +03:00
github-actions[bot] 6ce32b8039 [CI Skip] bump/beta 11.1.4-14-x
skip-checks: true
2023-04-15 11:15:05 +00:00
Jaco 3ee810904e Adjust isCodec with better API alignment (#1810)
* Adjust isCodec with better API alignment

* Adjust tests

* Remove test dupes
2023-04-15 14:07:44 +03:00
github-actions[bot] ed73a7912b [CI Skip] bump/beta 11.1.4-13-x
skip-checks: true
2023-04-14 07:28:50 +00:00
Jaco 4ec2cf9e43 Small adjustment to x-* exports (#1809) 2023-04-14 10:22:53 +03:00
github-actions[bot] 38ac05203e [CI Skip] release/beta 11.1.4-12
skip-checks: true
2023-04-13 13:13:49 +00:00
Jaco bb6a2b4468 Add missing peerDependencies for x-randomvalues (#1808)
* Add missing peerDependencies for x-randomvalues

* publish
2023-04-13 16:07:34 +03:00
github-actions[bot] 3c9b20e902 [CI Skip] release/beta 11.1.4-11
skip-checks: true
2023-04-13 11:39:47 +00:00
Jaco e1a2ea49cb x-randomvalues w/ shared base64 decoding (#1807)
* x-randomvalues w/ shared base64 decoding

* Adjust

* npm publish
2023-04-13 14:33:45 +03:00
github-actions[bot] 892004563f [CI Skip] bump/beta 11.1.4-10-x
skip-checks: true
2023-04-13 06:20:56 +00:00
Jaco efe4ce8d9d Allow for wordlists in JS bip39 functions (#1805) 2023-04-13 09:14:45 +03:00
github-actions[bot] f0f561e243 [CI Skip] bump/beta 11.1.4-9-x
skip-checks: true
2023-04-12 19:52:44 +00:00
Shamilkhan 56e34586b3 Add genesis hash for Cere Network (#1806)
* Add genesis hash for Cere Network

* Put Cere Network in correct alphabet order

* Rename CereNetwork to Cere
2023-04-12 22:46:39 +03:00
github-actions[bot] 667fe8fb17 [CI Skip] bump/beta 11.1.4-8-x
skip-checks: true
2023-04-12 11:09:35 +00:00
Jaco 3fd8074877 Add missing bip39 wordlists (only en is used) (#1803) 2023-04-12 14:01:27 +03:00
github-actions[bot] 91a2eac220 [CI Skip] release/beta 11.1.4-7
skip-checks: true
2023-04-12 10:04:21 +00:00
Jaco 455ae2ccde Use @noble/curves (secp256k1 + ed25519) (#1776)
* Use @noble/curves (secp256k1 only for now)

* Re-add canonical signatures (now lowS)

* Swap tweetnacl usage for ed25519

* Adjust previously failing tests

* Adjust test for ethereum encoding

* hasBigInt for ed25519 operations

* CHANGELOG

* Publich beta to npm for size check
2023-04-12 12:58:17 +03:00
github-actions[bot] 9d43b787fd [CI Skip] bump/beta 11.1.4-6-x
skip-checks: true
2023-04-12 09:45:36 +00:00
Jaco 29551e46b0 Import box functionality from tweetnacl (#1785)
* Import box functionality from tweetnacl

* Remove box/boxOpen functionality

* Additional comment

* Import secretbox test vectors

* Allow empty base64 input

* Combine non-xor crypto_stream usage with xor

* Adjust

* inline let

* Rename tests, extract test vectors

* Adjust chnages comments

* Remove box keypair

* Remove rng set operation

* Inline adjust

* Verify adjustment
2023-04-12 12:39:31 +03:00
Jaco 103745f845 Trace tweetnacl usage (Step 5: secretbox & .open available) (#1802) 2023-04-12 12:25:41 +03:00
Jaco cd7a32cf1f Trace tweetnacl usage (step 4: apply TS types) (#1801) 2023-04-12 12:11:40 +03:00
Jaco 5004d1d79f Trace tweetnacl usage (step 3: comment all code) (#1800) 2023-04-12 11:42:15 +03:00
Jaco 2607203925 Trace tweetnacl usage (step 2: move to TS) (#1799) 2023-04-12 11:39:17 +03:00
Jaco 5abab5bf13 Trace tweetnacl usage (step 1: raw initial import) (#1798) 2023-04-12 11:35:50 +03:00
github-actions[bot] a990b4e40f [CI Skip] bump/beta 11.1.4-5-x
skip-checks: true
2023-04-12 08:14:47 +00:00
Jaco 997f8f6a51 Align x-bigint extraction with other x-* (#1797) 2023-04-12 11:08:48 +03:00
github-actions[bot] 23e055869c [CI Skip] bump/beta 11.1.4-4-x
skip-checks: true
2023-04-11 12:00:36 +00:00
Jaco de85d063a4 Bump dev (w/ lint updates) (#1795)
* Bump dev (w/ lint updates)

* Bump dev

* Adjust behavior for global setting

* Adjust versionDetect expectations
2023-04-11 14:52:49 +03:00
github-actions[bot] 5964f790b5 [CI Skip] bump/beta 11.1.4-3-x
skip-checks: true
2023-04-10 07:27:42 +00:00
Jaco a767ef68ca Bump dev (w/ eslint adjustments) (#1794) 2023-04-10 10:21:33 +03:00
github-actions[bot] c096a4981d [CI Skip] bump/beta 11.1.4-2-x
skip-checks: true
2023-04-08 08:09:52 +00:00
Jaco 7dcdef17c3 Bump TypeScript (#1793)
* Bump TypeScript

* Bump dev

* Bump dev, no npm:
2023-04-08 11:02:20 +03:00
github-actions[bot] ef839a7a42 [CI Skip] bump/beta 11.1.4-1-x
skip-checks: true
2023-04-04 05:40:36 +00:00
Jaco 7bf1706994 Update lock wf (#1791) 2023-04-04 08:31:58 +03:00
github-actions[bot] 2999987fb0 [CI Skip] bump/beta 11.1.4-0-x
skip-checks: true
2023-04-02 07:01:09 +00:00
Jaco 6ba45086b5 Move type-only imports (w/ verbatimModuleSyntax) (#1790) 2023-04-02 09:53:43 +03:00
github-actions[bot] e3c51d4b6b [CI Skip] release/stable 11.1.3
skip-checks: true
2023-04-01 07:04:11 +00:00
Jaco 1295c85df3 11.1.3 (#1789) 2023-04-01 09:58:20 +03:00
github-actions[bot] 14d66c32de [CI Skip] bump/beta 11.1.3-4-x
skip-checks: true
2023-03-31 06:24:39 +00:00
Jaco b794d22ac4 Allow empty string as valid base32/base58/base64 decoder input (#1788)
* Allow empty string as valid base32/base58/base64 decoder input

* Remove empty failure

* Validation with optional validation flag

* Empty validation
2023-03-31 09:18:38 +03:00
github-actions[bot] edb62407e2 [CI Skip] bump/beta 11.1.3-3-x
skip-checks: true
2023-03-31 05:14:41 +00:00
Jaco 45b040fbf8 Additional __PURE__ annotations (#1787)
* Additional __PURE__ annotations

* Revert as const (This _could_ yield breaking external changes)
2023-03-31 08:08:01 +03:00
github-actions[bot] 777b823317 [CI Skip] bump/beta 11.1.3-2-x
skip-checks: true
2023-03-29 04:28:57 +00:00
Cameron Fairchild c5ef717398 Add bittensor details (#1783)
* add with todo

* update genesis hash

* remove from ledger

* remove from ledger
2023-03-29 07:21:56 +03:00
github-actions[bot] 98f0933da5 [CI Skip] bump/beta 11.1.3-1-x
skip-checks: true
2023-03-25 15:52:28 +00:00
Jaco 493d0df0c1 Add repo dev req. for Node.js (#1779) 2023-03-25 17:46:33 +02:00
github-actions[bot] 5d8e92f17c [CI Skip] bump/beta 11.1.3-0-x
skip-checks: true
2023-03-25 10:57:53 +00:00
Jaco 2ce178cad2 Bump dev (w/ some node:test adjustments) (#1778) 2023-03-25 12:51:53 +02:00
github-actions[bot] 9ccac88372 [CI Skip] release/stable 11.1.2
skip-checks: true
2023-03-25 07:20:00 +00:00
Jaco 0aa441de96 11.1.2 (#1777)
* 11.1.2

* Bump dev

* Bump deps
2023-03-25 09:14:10 +02:00
github-actions[bot] 78941a3cde [CI Skip] bump/beta 11.1.2-3-x
skip-checks: true
2023-03-24 08:37:26 +00:00
Jaco 514570a5fb Additional hw-ledger cleanups (#1775)
* Additional hw-ledger cleanups

* Rename ledgerName
2023-03-24 10:29:45 +02:00
github-actions[bot] ad2da94408 [CI Skip] bump/beta 11.1.2-2-x
skip-checks: true
2023-03-24 08:14:57 +00:00
Jaco 803edbb8cc Small Ledger process dedupe (#1774)
* Small Ledger process dedupe

* Add yarn.lock
2023-03-24 10:08:45 +02:00
github-actions[bot] 94692cbbb4 [CI Skip] bump/beta 11.1.2-1-x
skip-checks: true
2023-03-24 07:43:44 +00:00
Jaco 0a27c23439 Specific per-method JSDoc for hw-ledger (#1773)
* Specific per-method JSDoc for hw-ledger

* Adjust, less types floating around
2023-03-24 09:36:42 +02:00
github-actions[bot] 0a1cfb15ef [CI Skip] bump/beta 11.1.2-0-x
skip-checks: true
2023-03-23 09:17:47 +00:00
Jaco cd494d7de0 Expand error details on invalid publicKey (#1772) 2023-03-23 11:11:53 +02:00
github-actions[bot] 4f5029118e [CI Skip] release/stable 11.1.1
skip-checks: true
2023-03-18 12:18:29 +00:00
Jaco 2df8d01186 11.1.1 (#1771) 2023-03-18 14:12:07 +02:00
github-actions[bot] f1b3240728 [CI Skip] bump/beta 11.0.3-9-x
skip-checks: true
2023-03-18 10:30:36 +00:00
Mikhail Fedosov 748b26924e feat: add 3dpass network (#1769) 2023-03-18 12:24:39 +02:00
github-actions[bot] 26f6572f29 [CI Skip] bump/beta 11.0.3-8-x
skip-checks: true
2023-03-18 10:04:15 +00:00
Jaco 8e3a75ed8d Bump deps (& remove unused overrides) (#1770) 2023-03-18 11:58:18 +02:00
github-actions[bot] c13d1b4ae6 [CI Skip] bump/beta 11.0.3-7-x
skip-checks: true
2023-03-17 06:14:08 +00:00
Jaco 17388b7865 Bump to TS 5.0 (#1768)
* Bump to TS 5.0

* Fix build
2023-03-17 08:06:31 +02:00
github-actions[bot] 85785be8cf [CI Skip] bump/beta 11.0.3-6-x
skip-checks: true
2023-03-17 05:29:15 +00:00
Jaco 211af1f999 Bump dev deps (#1767) 2023-03-17 07:22:49 +02:00
github-actions[bot] b8116fcf5a [CI Skip] bump/beta 11.0.3-5-x
skip-checks: true
2023-03-15 15:12:53 +00:00
Jaco 79593b0a70 Bump dev (#1766)
* Bump dev

* Change ref types
2023-03-15 17:06:07 +02:00
github-actions[bot] 4ecf53dcf4 [CI Skip] bump/beta 11.0.3-4-x
skip-checks: true
2023-03-15 12:08:22 +00:00
Jaco 5652023c5a Bump dev (#1765) 2023-03-15 14:02:11 +02:00
github-actions[bot] f6e667df26 [CI Skip] bump/beta 11.0.3-3-x
skip-checks: true
2023-03-14 11:19:14 +00:00
Jaco aeac277590 Remove stale workflow (#1764) 2023-03-14 13:05:34 +02:00
github-actions[bot] dca3f17b1c [CI Skip] bump/beta 11.0.3-2-x
skip-checks: true
2023-03-14 07:56:38 +00:00
Jaco b22b225252 Remove support for encrypt/decrypt on keypair (#1762)
* Remove support for encrypt/decrupt on keypair

* Update Keypair type

* Remove encrypt/decrypt tests

* Remove ed2curve dependency

* Remove export

* Adjust nobody
2023-03-14 09:41:49 +02:00
github-actions[bot] 6d1944bef9 [CI Skip] bump/beta 11.0.3-1-x
skip-checks: true
2023-03-14 07:32:48 +00:00
Jaco 357b5feb2e Adjust x-global type definitions (#1763)
* Adjust x-global type definitions

* Re-add Record<string, unknown>

* Adjust for deno
2023-03-14 09:20:50 +02:00
github-actions[bot] 354a2a4eaa [CI Skip] bump/beta 11.0.3-0-x
skip-checks: true
2023-03-12 10:14:34 +00:00
Jaco 3fd61e678a Bump dev (#1761)
* Bump dev

* Adjust dev/node/test/node.d.ts imports

* Adjust extensionless import

* Additional adjustments
2023-03-12 12:01:35 +02:00
github-actions[bot] 71d2802f00 [CI Skip] release/stable 11.0.2
skip-checks: true
2023-03-11 07:00:52 +00:00
Jaco 816e30fb0a 11.0.2 (#1760) 2023-03-11 08:49:14 +02:00
github-actions[bot] 77c6177c9a [CI Skip] bump/beta 11.0.2-4-x
skip-checks: true
2023-03-10 06:44:17 +00:00
Jaco 9f97924d33 Update GH actions (#1758) 2023-03-10 08:32:08 +02:00
github-actions[bot] d7d8edcc9b [CI Skip] bump/beta 11.0.2-3-x
skip-checks: true
2023-03-09 14:57:30 +00:00
Jaco d6047e38d3 Align tsconfig to allow moduleResolution: nodenext (#1757)
* Align tsconfig to allow moduleResolution: nodenext

* Revert node.d.ts reference types
2023-03-09 16:42:46 +02:00
github-actions[bot] 5f44768796 [CI Skip] bump/beta 11.0.2-2-x
skip-checks: true
2023-03-09 09:16:23 +00:00
Jaco 9c224f5076 Use .js imports in src (#1756)
* Use .js imports in src

* Revert node/test/node -> node/test/node.d.ts (for now)

* util-crypto

* Additional

* Adjust tsconfig aliases

* Bump dev
2023-03-09 11:04:03 +02:00
github-actions[bot] bcb7861d88 [CI Skip] bump/beta 11.0.2-1-x
skip-checks: true
2023-03-06 12:29:43 +00:00
Jaco 0b85a4d5e2 Bump dev deps (#1755) 2023-03-06 14:17:56 +02:00
github-actions[bot] c17ef47548 [CI Skip] bump/beta 11.0.2-0-x
skip-checks: true
2023-03-05 12:08:14 +00:00
Jaco df7f533491 jg-rm-babel-config (#1754) 2023-03-05 13:52:42 +02:00
github-actions[bot] 500a38e1ab [CI Skip] release/stable 11.0.1
skip-checks: true
2023-03-04 15:01:52 +00:00
Jaco 3437fb65cd 11.0.1 (#1753)
* 11.0.1

* Re-adjust for ws usage

* Correct dev dependencies

* Bump dev
2023-03-04 16:50:01 +02:00
Jaco 3d43aba4a1 Swap x-ws to use ws (#1749)
* Swap x-ws to use ws

* Revert swc usage

* Remove unneeded --env to test
2023-03-04 15:02:04 +02:00
github-actions[bot] 7cd5204fb7 [CI Skip] bump/beta 10.4.3-9-x
skip-checks: true
2023-03-03 09:30:06 +00:00
Jaco 3fdf3b5523 Bump dev & update gh workflows (#1752) 2023-03-03 11:24:21 +02:00
github-actions[bot] 8fd0fe846f [CI Skip] bump/beta 10.4.3-8-x
skip-checks: true
2023-03-01 11:20:36 +00:00
Jaco 130a59fb02 Align gh workflows (#1751)
* Align gh workflows

* continue-on-error: true
2023-03-01 13:13:43 +02:00
github-actions[bot] e6aec6d178 [CI Skip] bump/beta 10.4.3-7-x
skip-checks: true
2023-02-28 09:51:47 +00:00
Jaco 6fb73f3124 Add __PURE__ annotations for x-* exports (#1750) 2023-02-28 11:46:56 +02:00
github-actions[bot] ea96abc1a4 [CI Skip] bump/beta 10.4.3-6-x
skip-checks: true
2023-02-27 09:46:00 +00:00
Jaco 9c08fa6206 Bump dev deps (#1748)
* Bump dev deps

* Bump dev
2023-02-27 11:39:53 +02:00
github-actions[bot] 8edb2abe30 [CI Skip] bump/beta 10.4.3-5-x
skip-checks: true
2023-02-25 09:18:47 +00:00
Jaco 3e2c3a6ed8 Move test cryptoWaitReady top-level (#1747)
* Move test cryptoWaitReady top-level

* Add missing mod.ts

* Revert mod.ts add

* Add types reference for tests

* Adjust

* adjust

* node:fs & node:path
2023-02-25 11:13:51 +02:00
github-actions[bot] 1e35c5cd25 [CI Skip] bump/beta 10.4.3-4-x
skip-checks: true
2023-02-24 08:15:05 +00:00
Jaco 40dc599acc Remove usage of {describe, it}.each (#1746)
* Remove usage of {describe, it}.each

* Bump dev

* Reference test types once per module
2023-02-24 10:10:07 +02:00
github-actions[bot] d1d6fc631c [CI Skip] bump/beta 10.4.3-3-x
skip-checks: true
2023-02-22 07:20:28 +00:00
Jaco 28c6139068 Bump deps (#1745)
* Bump deps

* Bump dev
2023-02-22 09:13:21 +02:00
github-actions[bot] b00d8573fd [CI Skip] bump/beta 10.4.3-2-x
skip-checks: true
2023-02-20 15:42:30 +00:00
Jaco 6afebd70d0 Bump dev deps (#1744) 2023-02-20 17:37:21 +02:00
github-actions[bot] 1f4d423682 [CI Skip] bump/beta 10.4.3-1-x
skip-checks: true
2023-02-19 14:10:41 +00:00
Jaco 57718cacfb Small adjustment to test command params (#1743) 2023-02-19 16:06:23 +02:00
github-actions[bot] b51d4e13fb [CI Skip] bump/beta 10.4.3-0-x
skip-checks: true
2023-02-19 09:37:24 +00:00
Jaco 08af19e2d5 Bump deps (#1742) 2023-02-19 11:32:55 +02:00
607 changed files with 11085 additions and 8564 deletions
-2
View File
@@ -1,2 +0,0 @@
packages/x-noble-hashes/**/*.ts
packages/x-noble-secp256k1/**/*.ts
-22
View File
@@ -1,22 +0,0 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const base = require('@polkadot/dev/config/eslint.cjs');
module.exports = {
...base,
ignorePatterns: [
...base.ignorePatterns
],
parserOptions: {
...base.parserOptions,
project: [
'./tsconfig.eslint.json'
]
},
rules: {
...base.rules,
// this seems very broken atm, false positives
'@typescript-eslint/unbound-method': 'off'
}
};
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
steps:
- uses: jacogr/action-merge@d2d64b4545acd93b0a9575177d3d215ae3f92029
with:
checks: build,lint,test
checks: pr (build),pr (lint),pr (test)
labels: -auto
strategy: squash
token: ${{ secrets.GH_PAT_BOT }}
+5 -5
View File
@@ -10,16 +10,16 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: dessant/lock-threads@f1a42f0f44eb83361d617a014663e1a76cf282d2
- uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836
with:
github-token: ${{ secrets.GH_PAT_BOT }}
issue-lock-inactive-days: '7'
issue-lock-comment: >
issue-inactive-days: '7'
issue-comment: >
This thread has been automatically locked since there has not been
any recent activity after it was closed. Please open a new issue
if you think you have a related problem or query.
pr-lock-inactive-days: '2'
pr-lock-comment: >
pr-inactive-days: '2'
pr-comment: >
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
+3 -3
View File
@@ -3,10 +3,10 @@ on: [pull_request]
jobs:
pr:
continue-on-error: true
strategy:
matrix:
step: ['lint', 'test', 'build', 'deno']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
@@ -16,11 +16,11 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 'lts/*'
- uses: denoland/setup-deno@004814556e37c54a2f6e31384c9e18e983317366
- uses: denoland/setup-deno@v1
with:
deno-version: vx.x.x
- name: ${{ matrix.step }}
if: always()
run: |
yarn install --immutable | grep -v 'YN0013'
yarn install --immutable
yarn ${{ matrix.step }}
+1 -2
View File
@@ -10,7 +10,6 @@ jobs:
strategy:
matrix:
step: ['build:release']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
@@ -28,5 +27,5 @@ jobs:
node-version: 'lts/*'
- name: ${{ matrix.step }}
run: |
yarn install --immutable | grep -v 'YN0013'
yarn install --immutable
yarn ${{ matrix.step }}
-19
View File
@@ -1,19 +0,0 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '50 1/3 * * *'
jobs:
stale:
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- 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.'
stale-issue-label: 'stale'
exempt-issue-labels: '-size-l,-size-m,-size-s,-size-xl,-size-xs,[bug],ci'
days-before-stale: 21
days-before-close: 7
+5
View File
@@ -2,6 +2,11 @@ enableImmutableInstalls: false
enableProgressBars: false
logFilters:
# Discard any "cannot be found in cache" messages
- code: YN0013
level: discard
nodeLinker: node-modules
plugins:
+120
View File
@@ -1,5 +1,125 @@
# CHANGELOG
## 12.3.1 Jun 11, 2023
Changes:
- Only allow padding characters in base64 strings
- Expand typings for keyring meta with known keys
- Adjust object index access for stricter tsconfig settings
## 12.2.2 Jun 4, 2023
Changes:
- Apply missing count assignment for `for (...)` loops
- Remove unused `@types/*` dev dependencies
- Upgrade dependencies to latest stable versions
## 12.2.1 May 13, 2023
Changes:
- Align `u8aToBigInt` tests with `u8aToBn`
- Unroll loops on most-frequently used paths for `u8aToBigInt`
- Add `module` to `package.json` export map (ESM-only)
- Upgrade dependencies to latest stable versions
## 12.1.2 May 1, 2023
Changes:
- Adjust typing for `isChildClass` & `Constructor` usage
## 12.1.1 Apr 29, 2023
Changes:
- Add shareable `identity` & `noop` functions
- Flatten `Buffer | Uint8Array` types (as used) to base-only `Uint8Array`
- Apply `readonly` specifiers to private class fields where applicable
- Adjust compilation output for `__internal__` class fields
- Remove unused types from `util`
- Upgrade dependencies to latest stable versions
## 12.0.1 Apr 22, 2023
Contributed:
- Add Cere genesisHash (Thanks to https://github.com/shamilkhan)
Changes:
- Swap secp256k1 functionality to `@noble/curves`
- Swap ed25519 functionality to `@noble/curves`
- Replace `tweetnacl` secretbox usage with slimmer local version
- Adjust `isCodec` helper with closer API alignment
- Initial steps to multi-language bip39 support
- Use Node webcrypto for Node `getRandomValues` support
- Upgrade dependencies to latest stable versions
- Drop support for Node 14 (EOL 30 Apr 2023)
## 11.1.3 Apr 1, 2023
Contributed:
- Add Bittensor genesisHash (Thanks to https://github.com/camfairchild)
Changes:
- Allow empty string as valid base32/base58/base64 decoder input
- Add additional/missing `/*#__PURE__*/` annotations
- Upgrade dependencies to latest stable versions
## 11.1.2 Mar 25, 2023
Changes:
- Expand error details for invalid publicKeys in secp256k1 compress/expand operations
- Expand `@polkadot/hw-ledger` with specific per-method JSDoc
- Upgrade dependencies to latest stable versions
## 11.1.1 Mar 18, 2023
Contributed:
- Add 3DPass genesisHash (Thanks to https://github.com/fedosov)
Changes:
- Remove support for encrypt/decrypt functionality on keypair
- Upgrade dependencies to latest stable versions
## 11.0.2 Mar 11, 2023
Changes:
- Use consistent `.js` imports in source files (TS moduleResolution)
- Remove TS resolveJsonModule option
- Upgrade to `@polkadot/wasm-crypto` 7.0.3
## 11.0.1 Mar 4, 2023
Changes:
- Change `@polkadot/x-ws` to use [ws](https://www.npmjs.com/package/ws) package (previous: `websocket`)
- Add `/*#__PURE__*/` annotations for `@polkadot/x-*` packages
- Swap TS -> JS compiler to use tsc (from babel)
- Adjust all tests to use `node:test` runner (ESM variants)
- Move `cryptoWaitReady()` top-level in test files
- Upgrade to `@polkadot/wasm-crypto` 7.0.1
## 10.4.2 Feb 19, 2023
Contributed:
+5 -2
View File
@@ -1,5 +1,5 @@
1539 Jaco 10.4.2 (#1741)
12 Carlo Sala feat(networks): support ledger for pendulum (#1739)
1626 Jaco 12.3.1 (#1845)
13 Carlo Sala feat(networks): add zeitgeist Ledger support (#1840)
9 Antoine Estienne Add eth uri keyring test (#1291)
6 Amaury Martiny Add tests from Rust (#283)
5 Jakub Pánik Add HydraDX parachain to genesis (#1583)
@@ -23,6 +23,7 @@
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 Cameron Fairchild Add bittensor details (#1783)
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)
@@ -38,6 +39,7 @@
1 Lezek123 logger - wildcard include/exclude with DEBUG env (#932)
1 Mario Neises remove redudant export (#257)
1 Miguel Hervas Add CFG Ledger Support (#1057)
1 Mikhail Fedosov feat: add 3dpass network (#1769)
1 Mohsan Riaz Add Ternoa for ledger hardware support (#1711)
1 nahuseyoum Reserving 65 for Aventus based on the new extended range (#871)
1 Nantian add acala ledger config (#1485)
@@ -46,6 +48,7 @@
1 Raymond Zhong Add Edgeware ledger app (#1006)
1 Reto Trinkler Adding 4 as address type of ss58 for Katal Chain (#639)
1 Rocco Musolino remove doc broken link (#697)
1 Shamilkhan Add genesis hash for Cere Network (#1806)
1 Song Zhou Add in ability to encrypt/decrypt msg with keyring (#1070)
1 Thibaut Sardan add hasLedgerSupport prop to networks (#835)
1 Tomokazu Kozuma fix comment (#1119)
-4
View File
@@ -1,4 +0,0 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
module.exports = require('@polkadot/dev/config/babel-config-cjs.cjs');
+8
View File
@@ -0,0 +1,8 @@
// Copyright 2017-2023 @polkadot/dev authors & contributors
// SPDX-License-Identifier: Apache-2.0
import baseConfig from '@polkadot/dev/config/eslint';
export default [
...baseConfig
];
-19
View File
@@ -1,19 +0,0 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const config = require('@polkadot/dev/config/jest.cjs');
module.exports = Object.assign({}, config, {
moduleNameMapper: {
'@polkadot/hw-ledger-transports(.*)$': '<rootDir>/packages/hw-ledger-transports/src/node',
// eslint-disable-next-line sort-keys
'@polkadot/hw-ledger(.*)$': '<rootDir>/packages/hw-ledger/src/$1',
'@polkadot/keyring(.*)$': '<rootDir>/packages/keyring/src/$1',
'@polkadot/networks(.*)$': '<rootDir>/packages/networks/src/$1',
'@polkadot/util-(crypto)(.*)$': '<rootDir>/packages/util-$1/src/$2',
// eslint-disable-next-line sort-keys
'@polkadot/util(.*)$': '<rootDir>/packages/util/src/$1',
'@polkadot/x-(bigint|global)(.*)$': '<rootDir>/packages/x-$1/src/$2',
'@polkadot/x-(fetch|randomvalues|textdecoder|textencoder|ws)(.*)$': '<rootDir>/packages/x-$1/src/node'
}
});
+14 -12
View File
@@ -1,6 +1,9 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"engines": {
"node": ">=18.14"
},
"homepage": "https://github.com/polkadot-js/common#readme",
"license": "Apache-2.0",
"packageManager": "yarn@3.2.0",
@@ -11,34 +14,33 @@
},
"sideEffects": false,
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"versions": {
"git": "10.4.2",
"npm": "10.4.2"
"git": "12.3.1",
"npm": "12.3.1"
},
"workspaces": [
"packages/*"
],
"scripts": {
"build": "polkadot-dev-build-ts",
"build:networks": "yarn test:one packages/networks/src",
"build:networks": "polkadot-dev-run-test packages/networks/src",
"build:release": "polkadot-ci-ghact-build",
"build:rollup": "polkadot-exec-rollup --config",
"clean": "polkadot-dev-clean-build",
"deno": "yarn polkadot-dev-deno-map && yarn build && deno check --import-map=import_map.json mod.ts",
"lint": "polkadot-dev-run-lint",
"postinstall": "polkadot-dev-yarn-only",
"test": "NODE_OPTIONS=--experimental-vm-modules polkadot-dev-run-test --coverage --runInBand --testPathIgnorePatterns toMiniSecretCmp",
"test:mnemonicCmp": "polkadot-dev-run-test packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts",
"test:node": "polkadot-dev-run-node-test --browser ^toMiniSecretCmp",
"test:one": "polkadot-dev-run-test --runInBand"
"test": "polkadot-dev-run-test --env browser ^mnemonic/toMiniSecretCmp",
"test:mnemonicCmp": "polkadot-dev-run-test --env browser mnemonic/toMiniSecretCmp",
"test:node": "polkadot-dev-run-test --env browser ^mnemonic/toMiniSecretCmp",
"test:one": "polkadot-dev-run-test --env browser"
},
"devDependencies": {
"@babel/core": "^7.20.12",
"@polkadot/dev": "^0.68.37",
"@types/jest": "^29.4.0"
"@polkadot/dev": "^0.75.19",
"@types/node": "^20.3.0"
},
"resolutions": {
"typescript": "^4.9.5"
"typescript": "^5.1.3"
}
}
+8 -10
View File
@@ -1,13 +1,11 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"contributors": [],
"engines": {
"node": ">=14.0.0"
"node": ">=16"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/hw-ledger-transports#readme",
"license": "Apache-2.0",
"maintainers": [],
"name": "@polkadot/hw-ledger-transports",
"repository": {
"directory": "packages/hw-ledger-transports",
@@ -16,18 +14,18 @@
},
"sideEffects": false,
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"browser": "browser.js",
"main": "node.js",
"react-native": "react-native.js",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@ledgerhq/hw-transport": "^6.28.1",
"@ledgerhq/hw-transport-webhid": "^6.27.12",
"@ledgerhq/hw-transport-webusb": "^6.27.12",
"@polkadot/util": "10.4.2"
"@ledgerhq/hw-transport": "^6.28.4",
"@ledgerhq/hw-transport-webhid": "^6.27.15",
"@ledgerhq/hw-transport-webusb": "^6.27.15",
"@polkadot/util": "12.3.1",
"tslib": "^2.5.3"
},
"optionalDependencies": {
"@ledgerhq/hw-transport-node-hid-singleton": "^6.28.9"
"@ledgerhq/hw-transport-node-hid-singleton": "^6.28.12"
}
}
+5 -17
View File
@@ -1,23 +1,11 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { TransportDef } from './types';
import LedgerHid from '@ledgerhq/hw-transport-webhid';
import LedgerUsb from '@ledgerhq/hw-transport-webusb';
import LedgerWebHid from '@ledgerhq/hw-transport-webhid';
import LedgerWebUsb from '@ledgerhq/hw-transport-webusb';
import { createDefs } from './util.js';
export { packageInfo } from './packageInfo';
export { packageInfo } from './packageInfo.js';
export const transports: TransportDef[] = [
{
create: (): Promise<Transport> =>
LedgerWebUsb.create(),
type: 'webusb'
},
{
create: (): Promise<Transport> =>
LedgerWebHid.create(),
type: 'hid'
}
];
export const transports = /*#__PURE__*/ createDefs(['webusb', LedgerUsb], ['hid', LedgerHid]);
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
import others from './detectOther';
import { packageInfo } from './packageInfo';
import others from './detectOther.js';
import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
+3 -3
View File
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { TransportDef } from './types';
import { createDefs } from './util.js';
export { packageInfo } from './packageInfo';
export { packageInfo } from './packageInfo.js';
export const transports: TransportDef[] = [];
export const transports = /*#__PURE__*/ createDefs();
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './empty';
export * from './empty.js';
+4 -11
View File
@@ -1,17 +1,10 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type Transport from '@ledgerhq/hw-transport';
import type { TransportDef } from './types';
import LedgerHid from '@ledgerhq/hw-transport-node-hid-singleton';
export { packageInfo } from './packageInfo';
import { createDefs } from './util.js';
export const transports: TransportDef[] = [
{
create: (): Promise<Transport> =>
LedgerHid.create(),
type: 'hid'
}
];
export { packageInfo } from './packageInfo.js';
export const transports = /*#__PURE__*/ createDefs(['hid', LedgerHid]);
@@ -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.4.2' };
export const packageInfo = { name: '@polkadot/hw-ledger-transports', path: 'auto', type: 'auto', version: '12.3.1' };
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './empty';
export * from './empty.js';
+7 -3
View File
@@ -1,13 +1,17 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import Transport from '@ledgerhq/hw-transport';
// CJS, so we use import * syntax
import type * as HwTransport from '@ledgerhq/hw-transport';
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
// u2f is deprecated an therefore not added
export type TransportType = 'hid' | 'webusb';
export type Transport = HwTransport.default;
export interface TransportDef {
/** Create a transport to be used in Ledger operations */
create (): Promise<Transport>;
/** The type of the underlying transport definition */
type: LedgerTypes;
type: TransportType;
}
+12
View File
@@ -0,0 +1,12 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Transport, TransportDef, TransportType } from './types.js';
export function createDefs (...items: readonly [type: TransportType, Clazz: unknown][]): TransportDef[] {
return items.map(([type, Clazz]): TransportDef => ({
create: (): Promise<Transport> =>
(Clazz as Pick<TransportDef, 'create'>).create(),
type
}));
}
@@ -5,6 +5,9 @@
"outDir": "./build",
"rootDir": "./src"
},
"exclude": [
"**/mod.ts"
],
"references": [
{ "path": "../util/tsconfig.build.json" }
]
+6 -9
View File
@@ -1,13 +1,11 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"contributors": [],
"engines": {
"node": ">=14.0.0"
"node": ">=16"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/hw-ledger#readme",
"license": "Apache-2.0",
"maintainers": [],
"name": "@polkadot/hw-ledger",
"repository": {
"directory": "packages/hw-ledger",
@@ -19,13 +17,12 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@ledgerhq/hw-transport": "^6.28.1",
"@polkadot/hw-ledger-transports": "10.4.2",
"@polkadot/util": "10.4.2",
"@zondax/ledger-substrate": "^0.40.5"
"@polkadot/hw-ledger-transports": "12.3.1",
"@polkadot/util": "12.3.1",
"@zondax/ledger-substrate": "^0.40.7",
"tslib": "^2.5.3"
}
}
+51 -40
View File
@@ -2,17 +2,18 @@
// SPDX-License-Identifier: Apache-2.0
import type { SubstrateApp } from '@zondax/ledger-substrate';
import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types';
import type { TransportDef, TransportType } from '@polkadot/hw-ledger-transports/types';
import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerVersion } from './types.js';
import { newSubstrateApp } from '@zondax/ledger-substrate';
import { transports } from '@polkadot/hw-ledger-transports';
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';
import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants.js';
import { ledgerApps } from './defaults.js';
export { packageInfo } from './packageInfo';
export { packageInfo } from './packageInfo.js';
type Chain = keyof typeof ledgerApps;
@@ -29,30 +30,40 @@ async function wrapError <T extends WrappedResult> (promise: Promise<T>): Promis
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)
/**
* @name Ledger
*
* @description
* A very basic wrapper for a ledger app -
* - it connects automatically on use, creating an underlying interface as required
* - Promises reject with errors (unwrapped errors from @zondax/ledger-substrate)
*/
export class Ledger {
readonly #ledgerName: string;
readonly #transportDef: TransportDef;
#app: SubstrateApp | null = null;
#chain: Chain;
constructor (transport: TransportType, chain: Chain) {
const ledgerName = ledgerApps[chain];
const transportDef = transports.find(({ type }) => type === transport);
#transport: LedgerTypes;
constructor (transport: LedgerTypes, chain: Chain) {
// u2f is deprecated
if (!['hid', 'webusb'].includes(transport)) {
throw new Error(`Unsupported transport ${transport}`);
} else if (!Object.keys(ledgerApps).includes(chain)) {
throw new Error(`Unsupported chain ${chain}`);
if (!ledgerName) {
throw new Error(`Unsupported Ledger chain ${chain}`);
} else if (!transportDef) {
throw new Error(`Unsupported Ledger transport ${transport}`);
}
this.#chain = chain;
this.#transport = transport;
this.#ledgerName = ledgerName;
this.#transportDef = transportDef;
}
/**
* Returns the address associated with a specific account & address offset. Optionally
* asks for on-device confirmation
*/
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> => {
return this.withApp(async (app: SubstrateApp): Promise<LedgerAddress> => {
const { address, pubKey } = await wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm));
return {
@@ -62,8 +73,11 @@ export class Ledger {
});
}
/**
* Returns the version of the Ledger application on the device
*/
public async getVersion (): Promise<LedgerVersion> {
return this.#withApp(async (app: SubstrateApp): Promise<LedgerVersion> => {
return this.withApp(async (app: SubstrateApp): Promise<LedgerVersion> => {
const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await wrapError(app.getVersion());
return {
@@ -74,8 +88,11 @@ export class Ledger {
});
}
/**
* Signs a transaction on the Ledger device
*/
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> => {
return this.withApp(async (app: SubstrateApp): Promise<LedgerSignature> => {
const buffer = u8aToBuffer(message);
const { signature } = await wrapError(app.sign(account + accountOffset, change, addressIndex + addressOffset, buffer));
@@ -85,31 +102,25 @@ export class Ledger {
});
}
#getApp = async (): Promise<SubstrateApp> => {
if (!this.#app) {
const def = transports.find(({ type }) => type === this.#transport);
/**
* @internal
*
* Returns a created SubstrateApp to perform operations against. Generally
* this is only used internally, to ensure consistent bahavior.
*/
async withApp <T> (fn: (app: SubstrateApp) => Promise<T>): Promise<T> {
try {
if (!this.#app) {
const transport = await this.#transportDef.create();
if (!def) {
throw new Error(`Unable to find a transport for ${this.#transport}`);
this.#app = newSubstrateApp(transport, this.#ledgerName);
}
const transport = await def.create();
this.#app = newSubstrateApp(transport, ledgerApps[this.#chain]);
}
return this.#app;
};
#withApp = async <T> (fn: (app: SubstrateApp) => Promise<T>): Promise<T> => {
try {
const app = await this.#getApp();
return await fn(app);
return await fn(this.#app);
} catch (error) {
this.#app = null;
throw error;
}
};
}
}
+12 -8
View File
@@ -1,16 +1,20 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { supportedApps } from '@zondax/ledger-substrate';
import { ledgerApps } from './defaults';
import { ledgerApps } from './defaults.js';
describe('ledgerApps', (): void => {
it.each(Object.keys(ledgerApps))('%s is available in @zondax/ledger-substrate', (k): void => {
expect(
supportedApps.find(({ name }) =>
name === ledgerApps[k]
)
).toBeDefined();
});
for (const k of Object.keys(ledgerApps)) {
it(`${k} is available in @zondax/ledger-substrate`, (): void => {
expect(
supportedApps.find(({ name }) =>
name === ledgerApps[k]
)
).toBeDefined();
});
}
});
+2 -1
View File
@@ -38,5 +38,6 @@ export const ledgerApps: Record<string, string> = {
ternoa: 'Ternoa',
unique: 'Unique',
vtb: 'VTB',
xxnetwork: 'XXNetwork'
xxnetwork: 'XXNetwork',
zeitgeist: 'Zeitgeist'
};
+2 -2
View File
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
import others from './detectOther';
import { packageInfo } from './packageInfo';
import others from './detectOther.js';
import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './detectPackage';
import './detectPackage.js';
export * from './bundle';
export * from './bundle.js';
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './index';
export * from './index.js';
+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.4.2' };
export const packageInfo = { name: '@polkadot/hw-ledger', path: 'auto', type: 'auto', version: '12.3.1' };
-2
View File
@@ -3,8 +3,6 @@
import type { HexString } from '@polkadot/util/types';
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
export interface AccountOptions {
/** The index of the account */
account: number;
+4
View File
@@ -5,6 +5,10 @@
"outDir": "./build",
"rootDir": "./src"
},
"exclude": [
"**/*.spec.ts",
"**/mod.ts"
],
"references": [
{ "path": "../hw-ledger-transports/tsconfig.build.json" },
{ "path": "../util/tsconfig.build.json" }
+16
View File
@@ -0,0 +1,16 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "..",
"outDir": "./build",
"rootDir": "./src",
"emitDeclarationOnly": false,
"noEmit": true
},
"include": [
"**/*.spec.ts"
],
"references": [
{ "path": "../hw-ledger/tsconfig.build.json" }
]
}
+7 -9
View File
@@ -1,14 +1,12 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"contributors": [],
"description": "Keyring management",
"engines": {
"node": ">=14.0.0"
"node": ">=16"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme",
"license": "Apache-2.0",
"maintainers": [],
"name": "@polkadot/keyring",
"repository": {
"directory": "packages/keyring",
@@ -20,15 +18,15 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@polkadot/util": "10.4.2",
"@polkadot/util-crypto": "10.4.2"
"@polkadot/util": "12.3.1",
"@polkadot/util-crypto": "12.3.1",
"tslib": "^2.5.3"
},
"peerDependencies": {
"@polkadot/util": "10.4.2",
"@polkadot/util-crypto": "10.4.2"
"@polkadot/util": "12.3.1",
"@polkadot/util-crypto": "12.3.1"
}
}
+9 -8
View File
@@ -1,15 +1,16 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { Keyring } from './keyring';
// all external
// eslint-disable-next-line deprecation/deprecation
export { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-crypto';
export * from './defaults';
export { createPair } from './pair';
export { packageInfo } from './packageInfo';
export { createTestKeyring } from './testing';
export { createTestPairs } from './testingPairs';
// all named
export { Keyring } from './keyring.js';
export { packageInfo } from './packageInfo.js';
export { createPair } from './pair/index.js';
export { createTestKeyring } from './testing.js';
export { createTestPairs } from './testingPairs.js';
export { Keyring };
// all starred
export * from './defaults.js';
+2 -2
View File
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
import others from './detectOther';
import { packageInfo } from './packageInfo';
import others from './detectOther.js';
import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
+7 -7
View File
@@ -1,19 +1,19 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair$Json } from './types';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import type { KeyringPair$Json } from './types.js';
import { hexToU8a, stringToU8a } from '@polkadot/util';
import { base64Decode, cryptoWaitReady, encodeAddress, randomAsU8a, setSS58Format } from '@polkadot/util-crypto';
import { decodePair } from './pair/decode';
import Keyring from '.';
import { decodePair } from './pair/decode.js';
import Keyring from './index.js';
await cryptoWaitReady();
describe('keypair', (): void => {
beforeEach(async (): Promise<void> => {
await cryptoWaitReady();
});
describe('ed25519', (): void => {
const publicKeyOne = new Uint8Array([47, 140, 97, 41, 216, 22, 207, 81, 195, 116, 188, 127, 8, 195, 230, 62, 209, 86, 207, 120, 174, 251, 74, 101, 80, 217, 123, 135, 153, 121, 119, 238]);
const publicKeyTwo = new Uint8Array([215, 90, 152, 1, 130, 177, 10, 183, 213, 75, 254, 211, 201, 100, 7, 58, 14, 225, 114, 243, 218, 166, 35, 37, 175, 2, 26, 104, 247, 7, 81, 26]);
+3 -3
View File
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './detectPackage';
import './detectPackage.js';
import { Keyring } from './bundle';
import { Keyring } from './bundle.js';
export * from './bundle';
export * from './bundle.js';
export default Keyring;
+6 -6
View File
@@ -2,14 +2,14 @@
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding, Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from './types';
import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from './types.js';
import { hexToU8a, isHex, stringToU8a } from '@polkadot/util';
import { base64Decode, decodeAddress, ed25519PairFromSeed as ed25519FromSeed, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, secp256k1PairFromSeed as secp256k1FromSeed, sr25519PairFromSeed as sr25519FromSeed } from '@polkadot/util-crypto';
import { DEV_PHRASE } from './defaults';
import { createPair } from './pair';
import { Pairs } from './pairs';
import { createPair } from './pair/index.js';
import { DEV_PHRASE } from './defaults.js';
import { Pairs } from './pairs.js';
const PairFromSeed = {
ecdsa: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed),
@@ -43,7 +43,7 @@ export class Keyring implements KeyringInstance {
readonly #type: KeypairType;
#ss58?: number;
#ss58?: number | undefined;
public decodeAddress = decodeAddress;
@@ -246,7 +246,7 @@ export class Keyring implements KeyringInstance {
public encodeAddress = (address: Uint8Array | string, ss58Format?: number): string => {
return this.type === 'ethereum'
? ethereumEncode(address)
: encodeAddress(address, ss58Format === undefined ? this.#ss58 : ss58Format);
: encodeAddress(address, ss58Format ?? this.#ss58);
};
/**
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './index';
export * from './index.js';
+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.4.2' };
export const packageInfo = { name: '@polkadot/keyring', path: 'auto', type: 'auto', version: '12.3.1' };
+3 -1
View File
@@ -1,7 +1,9 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { createTestPairs } from '../testingPairs';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { createTestPairs } from '../testingPairs.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
+2 -2
View File
@@ -2,12 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/types';
import type { PairInfo } from './types';
import type { PairInfo } from './types.js';
import { u8aEq } from '@polkadot/util';
import { jsonDecryptData } from '@polkadot/util-crypto';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults.js';
const SEED_OFFSET = PKCS8_HEADER.length;
+4 -2
View File
@@ -1,10 +1,12 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { NONCE_LENGTH, SCRYPT_LENGTH } from '@polkadot/util-crypto/json/constants';
import { createTestPairs } from '../testingPairs';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults';
import { createTestPairs } from '../testingPairs.js';
import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults.js';
const PKCS8_LENGTH = PKCS8_DIVIDER.length + PKCS8_HEADER.length + PUB_LENGTH + SEC_LENGTH;
const ENCODED_LENGTH = 16 + PKCS8_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH;
+2 -2
View File
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { PairInfo } from './types';
import type { PairInfo } from './types.js';
import { u8aConcat } from '@polkadot/util';
import { naclEncrypt, scryptEncode, scryptToU8a } from '@polkadot/util-crypto';
import { PKCS8_DIVIDER, PKCS8_HEADER } from './defaults';
import { PKCS8_DIVIDER, PKCS8_HEADER } from './defaults.js';
export function encodePair ({ publicKey, secretKey }: PairInfo, passphrase?: string): Uint8Array {
if (!secretKey) {
+7 -115
View File
@@ -1,27 +1,23 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { hexToU8a, u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, encodeAddress as toSS58, setSS58Format } from '@polkadot/util-crypto';
import { PAIRSSR25519 } from '../testing';
import { createTestPairs } from '../testingPairs';
import { createPair } from '.';
import { PAIRSSR25519 } from '../testing.js';
import { createTestPairs } from '../testingPairs.js';
import { createPair } from './index.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
const TEST_ADDRESS = '0x4119b2e6c3Cb618F4f0B93ac77f9BeeC7FF02887';
await cryptoWaitReady();
describe('pair', (): void => {
beforeEach(async (): Promise<void> => {
await cryptoWaitReady();
});
const SIGNATURE = new Uint8Array([80, 191, 198, 147, 225, 207, 75, 88, 126, 39, 129, 109, 191, 38, 72, 181, 75, 254, 81, 143, 244, 79, 237, 38, 236, 141, 28, 252, 134, 26, 169, 234, 79, 33, 153, 158, 151, 34, 175, 188, 235, 20, 35, 135, 83, 120, 139, 211, 233, 130, 1, 208, 201, 215, 73, 80, 56, 98, 185, 196, 11, 8, 193, 14]);
const ENCRYPTED = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 59, 53, 85, 227, 40, 107, 48, 234, 198, 238, 157, 238, 224, 235, 179, 75, 153, 241, 142, 254]);
// the last byte is changed from 254 -> 253
const ENCRYPTED_CHANGED = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 59, 53, 85, 227, 40, 107, 48, 234, 198, 238, 157, 238, 224, 235, 179, 75, 153, 241, 142, 253]);
it('has a publicKey', (): void => {
expect(
@@ -98,93 +94,6 @@ describe('pair', (): void => {
).toBe(false);
});
it('allows encrypting', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.alice.encryptMessage(
message,
keyring.bob.publicKey,
new Uint8Array(24)
)
).toEqual(ENCRYPTED);
});
it('validates a correctly encrypted message', (): void => {
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
expect(
keyring.bob.decryptMessage(
ENCRYPTED,
keyring.alice.publicKey
)
).toEqual(message);
});
it('fails a correctly encrypted message (message changed)', (): void => {
expect(
keyring.bob.decryptMessage(
ENCRYPTED_CHANGED,
keyring.alice.publicKey
)
).toEqual(null);
});
it('fails a correctly encrypted message (sender changed)', (): void => {
expect(
keyring.bob.decryptMessage(
ENCRYPTED,
keyring.charlie.publicKey
)
).toEqual(null);
});
it('fails a correctly encrypted message (receiver changed)', (): void => {
expect(
keyring.charlie.decryptMessage(
ENCRYPTED,
keyring.alice.publicKey
)
).toEqual(null);
});
it('validates encryption between ed25519 & sr25519 key pairs', (): void => {
const PASS = 'testing';
const encodedA = keyring.alice.encodePkcs8(PASS);
const encodedB = keyring.bob.encodePkcs8(PASS);
const pairA = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.alice.publicKey });
const pairB = createPair({ toSS58, type: 'sr25519' }, { publicKey: keyring.bob.publicKey });
pairA.decodePkcs8(PASS, encodedA);
pairB.decodePkcs8(PASS, encodedB);
const message = new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]);
// alice-sr25519 -> bob-ed25519
const encrypted1 = pairA.encryptMessage(message, keyring.bob.publicKey);
// alice-sr25519 -> bob-sr25519
const encrypted2 = pairA.encryptMessage(message, pairB.publicKey);
// alice-ed25519 -> bob-sr25519
const encrypted3 = keyring.alice.encryptMessage(message, pairB.publicKey);
// decrypt: Bob-ed25519 - use alice-ed25519 pubkey
expect(
keyring.bob.decryptMessage(encrypted3, keyring.alice.publicKey)
).toEqual(message);
// decrypt: Bob-ed25519 - use alice-sr25519 pubkey
expect(
keyring.bob.decryptMessage(encrypted1, pairA.publicKey)
).toEqual(message);
// decrypt: Bob-sr25519 - use alice-sr25519 pubkey
expect(
pairB.decryptMessage(encrypted2, pairA.publicKey)
).toEqual(message);
});
it('allows setting/getting of meta', (): void => {
keyring.bob.setMeta({ foo: 'bar', something: 'else' });
@@ -276,22 +185,5 @@ describe('pair', (): void => {
});
expect(json.address).toEqual(u8aToHex(PUBLICDERIVED));
});
it('denies access to encryptMessage/decryptMessage API', (): void => {
const PASS = 'testing';
const encoded = keyring.alice.encodePkcs8(PASS);
const pair = createPair({ toSS58, type: 'ethereum' }, { publicKey: keyring.alice.publicKey });
pair.decodePkcs8(PASS, encoded);
expect(
() => pair.encryptMessage(
new Uint8Array(4), // null message
keyring.bob.publicKey,
new Uint8Array(24)
)
).toThrow('Secp256k1 not supported yet');
});
});
});
+6 -33
View File
@@ -3,15 +3,15 @@
import type { HexString } from '@polkadot/util/types';
import type { EncryptedJsonEncoding, Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types';
import type { PairInfo } from './types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types.js';
import type { PairInfo } from './types.js';
import { objectSpread, u8aConcat, u8aEmpty, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
import { blake2AsU8a, convertPublicKeyToCurve25519, convertSecretKeyToCurve25519, ed25519PairFromSeed as ed25519FromSeed, ed25519Sign, ethereumEncode, keccakAsU8a, keyExtractPath, keyFromPath, naclOpen, naclSeal, secp256k1Compress, secp256k1Expand, secp256k1PairFromSeed as secp256k1FromSeed, secp256k1Sign, signatureVerify, sr25519PairFromSeed as sr25519FromSeed, sr25519Sign, sr25519VrfSign, sr25519VrfVerify } from '@polkadot/util-crypto';
import { blake2AsU8a, ed25519PairFromSeed as ed25519FromSeed, ed25519Sign, ethereumEncode, keccakAsU8a, keyExtractPath, keyFromPath, secp256k1Compress, secp256k1Expand, secp256k1PairFromSeed as secp256k1FromSeed, secp256k1Sign, signatureVerify, sr25519PairFromSeed as sr25519FromSeed, sr25519Sign, sr25519VrfSign, sr25519VrfVerify } from '@polkadot/util-crypto';
import { decodePair } from './decode';
import { encodePair } from './encode';
import { pairToJson } from './toJson';
import { decodePair } from './decode.js';
import { encodePair } from './encode.js';
import { pairToJson } from './toJson.js';
interface Setup {
toSS58: (publicKey: Uint8Array) => string;
@@ -144,22 +144,6 @@ export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: P
},
// eslint-disable-next-line sort-keys
decodePkcs8,
decryptMessage: (encryptedMessageWithNonce: HexString | string | Uint8Array, senderPublicKey: HexString | string | Uint8Array): Uint8Array | null => {
if (isLocked(secretKey)) {
throw new Error('Cannot encrypt with a locked key pair');
} else if (['ecdsa', 'ethereum'].includes(type)) {
throw new Error('Secp256k1 not supported yet');
}
const messageU8a = u8aToU8a(encryptedMessageWithNonce);
return naclOpen(
messageU8a.slice(24, messageU8a.length),
messageU8a.slice(0, 24),
convertPublicKeyToCurve25519(u8aToU8a(senderPublicKey)),
convertSecretKeyToCurve25519(secretKey)
);
},
derive: (suri: string, meta?: KeyringPair$Meta): KeyringPair => {
if (type === 'ethereum') {
throw new Error('Unable to derive on this keypair');
@@ -175,17 +159,6 @@ export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: P
encodePkcs8: (passphrase?: string): Uint8Array => {
return recode(passphrase);
},
encryptMessage: (message: HexString | string | Uint8Array, recipientPublicKey: HexString | string | Uint8Array, nonceIn?: Uint8Array): Uint8Array => {
if (isLocked(secretKey)) {
throw new Error('Cannot encrypt with a locked key pair');
} else if (['ecdsa', 'ethereum'].includes(type)) {
throw new Error('Secp256k1 not supported yet');
}
const { nonce, sealed } = naclSeal(u8aToU8a(message), convertSecretKeyToCurve25519(secretKey), convertPublicKeyToCurve25519(u8aToU8a(recipientPublicKey)), nonceIn);
return u8aConcat(nonce, sealed);
},
lock: (): void => {
secretKey = new Uint8Array();
},
+11 -27
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types.js';
// empty publicKey
const publicKey = new Uint8Array(32);
@@ -28,48 +28,32 @@ const json: KeyringPair$Json = {
const pair: KeyringPair = {
address,
addressRaw: publicKey,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
decodePkcs8: (passphrase?: string, encoded?: Uint8Array): void =>
decodePkcs8: (_passphrase?: string, _encoded?: Uint8Array): void =>
undefined,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
decryptMessage: (encryptedMessageWithNonce: string | Uint8Array, senderPublicKey: string | Uint8Array): Uint8Array | null =>
null,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
derive: (suri: string, meta?: KeyringPair$Meta): KeyringPair =>
derive: (_suri: string, _meta?: KeyringPair$Meta): KeyringPair =>
pair,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
encodePkcs8: (passphrase?: string): Uint8Array =>
encodePkcs8: (_passphrase?: string): Uint8Array =>
new Uint8Array(0),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
encryptMessage: (message: string | Uint8Array, recipientPublicKey: string | Uint8Array, _nonce?: Uint8Array): Uint8Array =>
new Uint8Array(),
isLocked: true,
lock: (): void => {
// no locking, it is always locked
},
meta,
publicKey,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
setMeta: (meta: KeyringPair$Meta): void =>
setMeta: (_meta: KeyringPair$Meta): void =>
undefined,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
sign: (message: Uint8Array): Uint8Array =>
sign: (_message: Uint8Array): Uint8Array =>
new Uint8Array(64),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
toJson: (passphrase?: string): KeyringPair$Json =>
toJson: (_passphrase?: string): KeyringPair$Json =>
json,
type: 'ed25519',
// eslint-disable-next-line @typescript-eslint/no-unused-vars
unlock: (passphrase?: string): void =>
unlock: (_passphrase?: string): void =>
undefined,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
verify: (message: Uint8Array, signature: Uint8Array): boolean =>
verify: (_message: Uint8Array, _signature: Uint8Array): boolean =>
false,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
vrfSign: (message: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): Uint8Array =>
vrfSign: (_message: Uint8Array, _context?: string | Uint8Array, _extra?: string | Uint8Array): Uint8Array =>
new Uint8Array(96),
// eslint-disable-next-line @typescript-eslint/no-unused-vars
vrfVerify: (message: Uint8Array, vrfResult: Uint8Array, context?: string | Uint8Array, extra?: string | Uint8Array): boolean =>
vrfVerify: (_message: Uint8Array, _vrfResult: Uint8Array, _context?: string | Uint8Array, _extra?: string | Uint8Array): boolean =>
false
};
+3 -1
View File
@@ -1,7 +1,9 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { createTestPairs } from '../testingPairs';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { createTestPairs } from '../testingPairs.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
+1 -1
View File
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair$Json, KeyringPair$Meta } from '../types';
import type { KeyringPair$Json, KeyringPair$Meta } from '../types.js';
import { objectSpread } from '@polkadot/util';
import { jsonEncryptFormat } from '@polkadot/util-crypto';
+1 -1
View File
@@ -3,6 +3,6 @@
export interface PairInfo {
publicKey: Uint8Array;
secretKey?: Uint8Array;
secretKey?: Uint8Array | undefined;
seed?: Uint8Array | null;
}
+8 -14
View File
@@ -1,29 +1,23 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringPair } from '../types';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, ed25519PairFromSeed, encodeAddress as toSS58, randomAsU8a, secp256k1PairFromSeed, sr25519PairFromSeed } from '@polkadot/util-crypto';
import { createPair } from '.';
import { createPair } from './index.js';
const MESSAGE = 'this is a test message';
const CONTEXT = 'some context';
await cryptoWaitReady();
const ecdsa = createPair({ toSS58, type: 'ecdsa' }, secp256k1PairFromSeed(randomAsU8a()));
const ed25519 = createPair({ toSS58, type: 'ed25519' }, ed25519PairFromSeed(randomAsU8a()));
const sr25519 = createPair({ toSS58, type: 'sr25519' }, sr25519PairFromSeed(randomAsU8a()));
describe('vrf', (): void => {
let ecdsa: KeyringPair;
let ed25519: KeyringPair;
let sr25519: KeyringPair;
beforeAll(async (): Promise<void> => {
await cryptoWaitReady();
ecdsa = createPair({ toSS58, type: 'ecdsa' }, secp256k1PairFromSeed(randomAsU8a()));
ed25519 = createPair({ toSS58, type: 'ed25519' }, ed25519PairFromSeed(randomAsU8a()));
sr25519 = createPair({ toSS58, type: 'sr25519' }, sr25519PairFromSeed(randomAsU8a()));
});
it('has deterministic signature values for ecdsa', (): void => {
const sig1 = ecdsa.vrfSign(MESSAGE, CONTEXT);
const sig2 = ecdsa.vrfSign(MESSAGE, CONTEXT);
+1 -1
View File
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
import type { KeyringPair, KeyringPairs } from './types';
import type { KeyringPair, KeyringPairs } from './types.js';
import { isHex, isU8a, u8aToHex, u8aToU8a } from '@polkadot/util';
import { decodeAddress } from '@polkadot/util-crypto';
+8 -8
View File
@@ -1,6 +1,8 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
// From https://github.com/paritytech/substrate/wiki/Secret-URI-Test-Vectors
import type { KeypairType } from '@polkadot/util-crypto/types';
@@ -8,7 +10,7 @@ import type { KeypairType } from '@polkadot/util-crypto/types';
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto';
import Keyring from '.';
import Keyring from './index.js';
const PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk';
const ETHEREUM_PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
@@ -87,15 +89,13 @@ const TESTS = {
]
};
await cryptoWaitReady();
describe('keyring.addFromUri', (): void => {
Object.entries(TESTS).forEach(([type, tests]): void => {
for (const [type, tests] of Object.entries(TESTS)) {
const keyring = new Keyring({ type: type as KeypairType });
beforeEach(async (): Promise<void> => {
await cryptoWaitReady();
});
describe(type, (): void => {
describe(`${type}`, (): void => {
tests.forEach(({ pk, ss, uri }): void => {
it(`creates ${uri}`, (): void => {
const pair = keyring.addFromUri(uri, {}, type as KeypairType);
@@ -105,5 +105,5 @@ describe('keyring.addFromUri', (): void => {
});
});
});
});
}
});
+3 -3
View File
@@ -3,12 +3,12 @@
import type { HexString } from '@polkadot/util/types';
import type { KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringInstance, KeyringOptions } from './types';
import type { KeyringInstance, KeyringOptions } from './types.js';
import { hexToU8a } from '@polkadot/util';
import { Keyring } from './keyring';
import { createPair } from './pair';
import { createPair } from './pair/index.js';
import { Keyring } from './keyring.js';
interface PairDef {
name?: string;
+20 -12
View File
@@ -1,19 +1,19 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto';
import { createTestPairs } from './testingPairs';
import Keyring from '.';
import Keyring from './index.js';
import { createTestPairs } from './testingPairs.js';
const TEST_ADD = '0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac';
describe('testingPairs', (): void => {
beforeEach(async (): Promise<void> => {
await cryptoWaitReady();
});
await cryptoWaitReady();
describe('testingPairs', (): void => {
it('creates without failing', (): void => {
expect(
Object.keys(createTestPairs())
@@ -47,7 +47,7 @@ describe('testingPairs', (): void => {
).toEqual(TEST_ADD);
});
it('checks eth test addresses', (): void => {
describe('checks eth test addresses', (): void => {
const ring = createTestPairs({ type: 'ethereum' });
const keyring = new Keyring({ type: 'ethereum' });
// priv keys generated by ganache-cli --mnemonic "bottom drive obey lake curtain smoke basket hold race lonely fit walk"
@@ -62,12 +62,20 @@ describe('testingPairs', (): void => {
'0x4c42532034540267bf568198ccec4cb822a025da542861fcb146a5fab6433ff8',
'0x94c49300a58d576011096bcb006aa06f5a91b34b4383891e8029c21dc39fbb8b'];
// @ts-expect-error We should not delete from the maps, however this is a test
delete ring.nobody;
Object.keys(ring).forEach((testKeyring, i) => {
if (i < 6) {
expect(u8aToHex(ring[testKeyring].publicKey)).toEqual(u8aToHex(keyring.createFromUri(privKeys[i]).publicKey));
}
});
Object
.keys(ring)
.filter((_, i) => i < 6)
.forEach((testKeyring, i) => {
it(`checks #${i}`, (): void => {
expect(
u8aToHex(ring[testKeyring].publicKey)
).toEqual(
u8aToHex(keyring.createFromUri(privKeys[i]).publicKey)
);
});
});
});
});
+36 -5
View File
@@ -1,16 +1,47 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KeyringOptions, KeyringPair } from './types';
import type { KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringOptions, KeyringPair } from './types.js';
import { nobody } from './pair/nobody';
import { createTestKeyring } from './testing';
import { nobody } from './pair/nobody.js';
import { createTestKeyring } from './testing.js';
export interface TestKeyringMap {
nobody: KeyringPair;
[index: string]: KeyringPair;
}
export function createTestPairs (options?: KeyringOptions, isDerived = true): TestKeyringMap {
export interface TestKeyringMapSubstrate extends TestKeyringMap {
alice: KeyringPair;
bob: KeyringPair;
charlie: KeyringPair;
dave: KeyringPair;
eve: KeyringPair;
ferdie: KeyringPair;
}
export interface TestKeyringMapEthereum extends TestKeyringMap {
Alith: KeyringPair;
Baltathar: KeyringPair;
Charleth: KeyringPair;
Dorothy: KeyringPair;
Ethan: KeyringPair;
Faith: KeyringPair;
}
export type DetectMap<O extends KeyringOptions | undefined> = DetectPairType<O> extends 'ethereum'
? TestKeyringMapEthereum
: TestKeyringMapSubstrate;
export type DetectPairType<O extends KeyringOptions | undefined> = O extends KeyringOptions
? O['type'] extends KeypairType
? O['type']
: 'sr25519'
: 'sr25519';
export function createTestPairs <O extends KeyringOptions, M = DetectMap<O>> (options?: O, isDerived = true): M {
const keyring = createTestKeyring(options, isDerived);
const pairs = keyring.getPairs();
const map: TestKeyringMap = { nobody: nobody() };
@@ -19,5 +50,5 @@ export function createTestPairs (options?: KeyringOptions, isDerived = true): Te
map[p.meta.name as string] = p;
}
return map;
return map as M;
}
+52 -3
View File
@@ -15,7 +15,58 @@ export interface KeyringOptions {
type?: KeypairType;
}
export type KeyringPair$Meta = Record<string, unknown>;
export interface KeyringPair$MetaHardware {
accountIndex?: number;
accountOffset?: number;
addressOffset?: number;
hardwareType?: 'ledger';
}
export interface KeyringPair$MetaFlags {
isDefaultAuthSelected?: boolean;
isExternal?: boolean;
isHardware?: boolean;
isHidden?: boolean;
isInjected?: boolean;
isMultisig?: boolean;
isProxied?: boolean;
isRecent?: boolean;
isTesting?: boolean;
}
export interface KeyringPair$MetaContract {
abi: string;
genesisHash?: HexString | null;
}
export interface KeyringPair$MetaExtension {
source?: string;
}
export interface KeyringPair$MetaMultisig {
threshold?: number;
who?: string[];
}
export interface KeyringPair$MetaParent {
parentAddress?: string;
parentName?: string;
}
export interface KeyringPair$Meta extends KeyringPair$MetaExtension, KeyringPair$MetaFlags, KeyringPair$MetaHardware, KeyringPair$MetaMultisig, KeyringPair$MetaParent {
address?: string;
contract?: KeyringPair$MetaContract;
genesisHash?: HexString | null;
name?: string;
suri?: string;
tags?: string[];
type?: KeypairType;
whenCreated?: number;
whenEdited?: number;
whenUsed?: number;
[key: string]: unknown;
}
export interface KeyringPair$Json extends EncryptedJson {
/** The ss58 encoded address or the hex-encoded version (the latter is for ETH-compat chains) */
@@ -47,8 +98,6 @@ export interface KeyringPair {
sign (message: HexString | string | Uint8Array, options?: SignOptions): Uint8Array;
toJson (passphrase?: string): KeyringPair$Json;
unlock (passphrase?: string): void;
encryptMessage (message: HexString | string | Uint8Array, recipientPublicKey: HexString | string | Uint8Array, nonce?: Uint8Array): Uint8Array;
decryptMessage (encryptedMessageWithNonce: HexString | string | Uint8Array, senderPublicKey: HexString | string | Uint8Array): Uint8Array | null;
verify (message: HexString | string | Uint8Array, signature: Uint8Array, signerPublic: HexString | string | Uint8Array): boolean;
vrfSign (message: HexString | string | Uint8Array, context?: HexString | string | Uint8Array, extra?: HexString | string | Uint8Array): Uint8Array;
vrfVerify (message: HexString | string | Uint8Array, vrfResult: Uint8Array, signerPublic: HexString | Uint8Array | string, context?: HexString | string | Uint8Array, extra?: HexString | string | Uint8Array): boolean;
+4
View File
@@ -5,6 +5,10 @@
"outDir": "./build",
"rootDir": "./src"
},
"exclude": [
"**/*.spec.ts",
"**/mod.ts"
],
"references": [
{ "path": "../util/tsconfig.build.json" },
{ "path": "../util-crypto/tsconfig.build.json" }
+18
View File
@@ -0,0 +1,18 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "..",
"outDir": "./build",
"rootDir": "./src",
"emitDeclarationOnly": false,
"noEmit": true
},
"include": [
"**/*.spec.ts"
],
"references": [
{ "path": "../keyring/tsconfig.build.json" },
{ "path": "../util/tsconfig.build.json" },
{ "path": "../util-crypto/tsconfig.build.json" }
]
}
+6 -8
View File
@@ -1,14 +1,12 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"contributors": [],
"description": "A list of all available Substrate networks and their applicable prefixes",
"engines": {
"node": ">=14.0.0"
"node": ">=16"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/networks#readme",
"license": "Apache-2.0",
"maintainers": [],
"name": "@polkadot/networks",
"repository": {
"directory": "packages/networks",
@@ -17,14 +15,14 @@
},
"sideEffects": false,
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@polkadot/util": "10.4.2",
"@substrate/ss58-registry": "^1.38.0"
"@polkadot/util": "12.3.1",
"@substrate/ss58-registry": "^1.40.0",
"tslib": "^2.5.3"
},
"devDependencies": {
"@polkadot/hw-ledger": "10.4.2"
"@polkadot/hw-ledger": "12.3.1"
}
}
+3 -1
View File
@@ -1,10 +1,12 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { ledgerApps } from '@polkadot/hw-ledger/defaults';
import { isHex } from '@polkadot/util';
import { knownGenesis, knownLedger } from './defaults';
import { knownGenesis, knownLedger } from './defaults/index.js';
describe('defaults', (): void => {
describe('genesis', (): void => {
+13 -1
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KnownGenesis } from '../types';
import type { KnownGenesis } from '../types.js';
// 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
@@ -29,10 +29,16 @@ export const knownGenesis: KnownGenesis = {
'bifrost-kusama': [
'0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed'
],
bittensor: [
'0x2f0555cc76fc2840a25a6ea3b9637146806f1f44b090c175ffde2a7e5ab36c03'
],
centrifuge: [
'0xb3db41421702df9a7fcac62b53ffeac85f7853cc4e689e0b93aeb3db18c09d82',
'0x67dddf2673b69e5f875f6f25277495834398eafd67f492e09f3f3345e003d1b5'
],
cere: [
'0x81443836a9a24caaa23f1241897d1235717535711d1d3fe24eae4fdc942c092c'
],
composable: [
'0xdaab8df776eb52ec604a5df5d388bb62a050a0aaec4556a64265b9d42755552d'
],
@@ -82,6 +88,9 @@ export const knownGenesis: KnownGenesis = {
origintrail: [
'0xe7e0962324a3b86c83404dbea483f25fb5dab4c224791c81b756cfc948006174'
],
p3d: [
'0x6c5894837ad89b6d92b114a2fb3eafa8fe3d26a54848e3447015442cd6ef4e66'
],
parallel: [
'0xe61a41c53f5dcd0beb09df93b34402aada44cb05117b71059cce40a2723a4e97'
],
@@ -148,5 +157,8 @@ export const knownGenesis: KnownGenesis = {
],
xxnetwork: [
'0x50dd5d206917bf10502c68fb4d18a59fc8aa31586f4e8856b493e43544aa82aa'
],
zeitgeist: [
'0x1bf2a2ecb4a868de66ea8610f2ce7c8c43706561b6476031315f6640fe38e060'
]
};
+1 -1
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KnownIcon } from '../types';
import type { KnownIcon } from '../types.js';
// these are icon overrides
export const knownIcon: KnownIcon = {
+4 -4
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @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';
export { knownGenesis } from './genesis.js';
export { knownIcon } from './icons.js';
export { knownLedger } from './ledger.js';
export { knownTestnet } from './testnets.js';
+3 -2
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KnownLedger } from '../types';
import type { KnownLedger } from '../types.js';
// 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)
@@ -42,5 +42,6 @@ export const knownLedger: KnownLedger = {
ternoa: 0x00003e3,
unique: 0x00000162,
vtb: 0x000002b6,
xxnetwork: 0x000007a3
xxnetwork: 0x000007a3,
zeitgeist: 0x00000162
};
+1 -1
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KnownTestnet } from '../types';
import type { KnownTestnet } from '../types.js';
// testnets should not allow selection
export const knownTestnet: KnownTestnet = {
+2 -2
View File
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
import others from './detectOther';
import { packageInfo } from './packageInfo';
import others from './detectOther.js';
import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
+9 -7
View File
@@ -1,18 +1,20 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { SubstrateNetwork } from './types';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
import { allNetworks, availableNetworks, selectableNetworks } from '.';
import type { SubstrateNetwork } from './types.js';
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
import { allNetworks, availableNetworks, selectableNetworks } from './index.js';
describe('availableNetworks', (): void => {
it('has the correct starting order', (): void => {
expect(availableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]);
});
it.skip('has a sorted list (first external, last external)', (): void => {
expect(availableNetworks[3].displayName).toEqual('Acala');
it('has a sorted list (first external, last external)', (): void => {
expect(availableNetworks[3].displayName).toEqual('3DP network');
expect(availableNetworks[availableNetworks.length - 1].displayName).toEqual('ZERO');
});
@@ -112,7 +114,7 @@ describe('selectableNetworks', (): void => {
});
it('has a sorted list (first external, last external)', (): void => {
expect(selectableNetworks[3].displayName).toEqual('Acala');
expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('xx network');
expect(selectableNetworks[3].displayName).toEqual('3DP network');
expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('Zeitgeist');
});
});
+2 -2
View File
@@ -5,5 +5,5 @@
// ... put it back, but keep it removed
// import './detectPackage';
export * from './interfaces';
export { packageInfo } from './packageInfo';
export * from './interfaces.js';
export { packageInfo } from './packageInfo.js';
+2 -2
View File
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { KnownSubstrate, Network, SubstrateNetwork } from './types';
import type { KnownSubstrate, Network, SubstrateNetwork } from './types.js';
import knownSubstrate from '@substrate/ss58-registry';
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
// These are known prefixes that are not sorted
const UNSORTED = [0, 2, 42];
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './index';
export * from './index.js';
+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.4.2' };
export const packageInfo = { name: '@polkadot/networks', path: 'auto', type: 'auto', version: '12.3.1' };
+8 -6
View File
@@ -1,11 +1,13 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import known from '@substrate/ss58-registry';
import fs from 'fs';
import path from 'path';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import other from './test/ss58registry.test.json' assert { type: 'json' };
import known from '@substrate/ss58-registry';
import fs from 'node:fs';
import path from 'node:path';
const other = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'packages/networks/test/ss58registry.json'), 'utf-8')) as unknown;
describe('@substrate/ss58-registry', (): void => {
it('has known values', (): void => {
@@ -14,13 +16,13 @@ describe('@substrate/ss58-registry', (): void => {
try {
expect(JSON.parse(json)).toEqual(other);
} catch (error) {
if (process.env.GITHUB_REPOSITORY) {
if (process.env['GITHUB_REPOSITORY']) {
console.error(json);
throw error;
}
fs.writeFileSync(path.join(__dirname, './test/ss58registry.test.json'), json, { flag: 'w' });
fs.writeFileSync(path.join(process.cwd(), 'packages/networks/test/ss58registry.json'), json, { flag: 'w' });
}
});
});
+2 -1
View File
@@ -2,6 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { RegistryEntry } from '@substrate/ss58-registry';
import type { HexString } from '@polkadot/util/types';
export type Icon = 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
@@ -9,7 +10,7 @@ export type KnownIcon = Record<string, Icon>;
export type KnownLedger = Record<string, number>;
export type KnownGenesis = Record<string, string[]>;
export type KnownGenesis = Record<string, HexString[]>;
export type KnownSubstrate = RegistryEntry;
@@ -597,7 +597,7 @@
{
"prefix": 50,
"network": "composable",
"displayName": "Composable",
"displayName": "Composable Finance",
"symbols": [
"LAYR"
],
@@ -716,7 +716,7 @@
{
"prefix": 65,
"network": "aventus",
"displayName": "AvN Mainnet",
"displayName": "Aventus Mainnet",
"symbols": [
"AVT"
],
@@ -1285,6 +1285,19 @@
"standardAccount": "*25519",
"website": "https://ajuna.io"
},
{
"prefix": 1516,
"network": "societal",
"displayName": "Societal",
"symbols": [
"SCTL"
],
"decimals": [
12
],
"standardAccount": "*25519",
"website": "https://www.sctl.xyz"
},
{
"prefix": 1985,
"network": "seals",
@@ -1324,6 +1337,19 @@
"standardAccount": "*25519",
"website": "https://explorer.mainnet.cloudwalk.io"
},
{
"prefix": 2021,
"network": "logion",
"displayName": "logion network",
"symbols": [
"LGNT"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://logion.network"
},
{
"prefix": 2032,
"network": "interlay",
@@ -1377,11 +1403,11 @@
"website": "https://chainflip.io/"
},
{
"prefix": 2207,
"network": "SNOW",
"displayName": "SNOW: ICE Canary Network",
"prefix": 2206,
"network": "ICE",
"displayName": "ICE Network",
"symbols": [
"ICZ"
"ICY"
],
"decimals": [
18
@@ -1390,11 +1416,11 @@
"website": "https://icenetwork.io"
},
{
"prefix": 2208,
"network": "ICE",
"displayName": "ICE Network",
"prefix": 2207,
"network": "SNOW",
"displayName": "SNOW: ICE Canary Network",
"symbols": [
"ICY"
"ICZ"
],
"decimals": [
18
@@ -1627,6 +1653,19 @@
"standardAccount": "*25519",
"website": "https://ata.network"
},
{
"prefix": 12155,
"network": "impact",
"displayName": "Impact Protocol Network",
"symbols": [
"BSTY"
],
"decimals": [
18
],
"standardAccount": "*25519",
"website": "https://impactprotocol.network/"
},
{
"prefix": 12191,
"network": "nftmart",
+4 -4
View File
@@ -3,12 +3,12 @@
"compilerOptions": {
"baseUrl": "..",
"outDir": "./build",
"resolveJsonModule": true,
"rootDir": "./src"
},
"include": [
"**/src/**/*.ts",
"**/test/*.json"
"exclude": [
"**/*.spec.ts",
"**/test/*",
"**/mod.ts"
],
"references": [
{ "path": "../hw-ledger/tsconfig.build.json" },
+18
View File
@@ -0,0 +1,18 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "..",
"outDir": "./build",
"rootDir": "./src",
"emitDeclarationOnly": false,
"noEmit": true
},
"include": [
"**/*.spec.ts"
],
"references": [
{ "path": "../hw-ledger/tsconfig.build.json" },
{ "path": "../networks/tsconfig.build.json" },
{ "path": "../util/tsconfig.build.json" }
]
}
+12 -18
View File
@@ -1,14 +1,12 @@
{
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/common/issues",
"contributors": [],
"description": "A collection of useful crypto utilities for @polkadot",
"engines": {
"node": ">=14.0.0"
"node": ">=16"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util-crypto#readme",
"license": "Apache-2.0",
"maintainers": [],
"name": "@polkadot/util-crypto",
"repository": {
"directory": "packages/util-crypto",
@@ -22,29 +20,25 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "10.4.2",
"version": "12.3.1",
"browser": {
"crypto": false,
"stream": false
},
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@noble/hashes": "1.2.0",
"@noble/secp256k1": "1.7.1",
"@polkadot/networks": "10.4.2",
"@polkadot/util": "10.4.2",
"@polkadot/wasm-crypto": "^6.4.1",
"@polkadot/x-bigint": "10.4.2",
"@polkadot/x-randomvalues": "10.4.2",
"@noble/curves": "1.1.0",
"@noble/hashes": "1.3.1",
"@polkadot/networks": "12.3.1",
"@polkadot/util": "12.3.1",
"@polkadot/wasm-crypto": "^7.2.1",
"@polkadot/wasm-util": "^7.2.1",
"@polkadot/x-bigint": "12.3.1",
"@polkadot/x-randomvalues": "12.3.1",
"@scure/base": "1.1.1",
"ed2curve": "^0.3.0",
"tweetnacl": "^1.0.3"
},
"devDependencies": {
"@types/ed2curve": "^0.2.2"
"tslib": "^2.5.3"
},
"peerDependencies": {
"@polkadot/util": "10.4.2"
"@polkadot/util": "12.3.1"
}
}
@@ -1,9 +1,11 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { hexToU8a } from '@polkadot/util';
import { addressToEvm } from './addressToEvm';
import { addressToEvm } from './addressToEvm.js';
describe('addressToEvm', (): void => {
it('creates a valid known EVM address', (): void => {
@@ -3,7 +3,7 @@
import type { HexString } from '@polkadot/util/types';
import { decodeAddress } from './decode';
import { decodeAddress } from './decode.js';
/**
* @name addressToEvm
@@ -1,7 +1,9 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { checkAddress } from '.';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { checkAddress } from './index.js';
describe('checkAddress', (): void => {
it('returns [true, null] for Kusama', (): void => {
+4 -4
View File
@@ -2,11 +2,11 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
import type { Prefix } from './types.js';
import { base58Decode } from '../base58';
import { checkAddressChecksum } from './checksum';
import { defaults } from './defaults';
import { base58Decode } from '../base58/index.js';
import { checkAddressChecksum } from './checksum.js';
import { defaults } from './defaults.js';
/**
* @name checkAddress
@@ -1,8 +1,10 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { base58Decode } from '../base58';
import { checkAddressChecksum } from './checksum';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { base58Decode } from '../base58/index.js';
import { checkAddressChecksum } from './checksum.js';
describe('checkAddressChecksum', (): void => {
it('correctly extracts the info from a 1-byte-prefix address', (): void => {
+1 -1
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { sshash } from './sshash';
import { sshash } from './sshash.js';
export function checkAddressChecksum (decoded: Uint8Array): [boolean, number, number, number] {
const ss58Length = (decoded[0] & 0b0100_0000) ? 2 : 1;
@@ -1,10 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { hexToU8a, stringToU8a, u8aToHex } from '@polkadot/util';
import { ALICE_PUBLIC_SR } from './encode.spec';
import { decodeAddress } from '.';
import { ALICE_PUBLIC_SR } from './encode.spec.js';
import { decodeAddress } from './index.js';
describe('decodeAddress', (): void => {
it('decodes an address', (): void => {
+4 -4
View File
@@ -2,14 +2,14 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
import type { Prefix } from './types.js';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6
import { isHex, isU8a, u8aToU8a } from '@polkadot/util';
import { base58Decode } from '../base58';
import { checkAddressChecksum } from './checksum';
import { defaults } from './defaults';
import { base58Decode } from '../base58/index.js';
import { checkAddressChecksum } from './checksum.js';
import { defaults } from './defaults.js';
export function decodeAddress (encoded?: HexString | string | Uint8Array | null, ignoreChecksum?: boolean, ss58Format: Prefix = -1): Uint8Array {
if (!encoded) {
+1 -1
View File
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { availableNetworks } from '../networks';
import { availableNetworks } from '../networks.js';
export const defaults = {
allowedDecodedLengths: [1, 2, 4, 8, 32, 33],
@@ -1,9 +1,11 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { waitReady } from '@polkadot/wasm-crypto';
import { deriveAddress } from '.';
import { deriveAddress } from './index.js';
describe('deriveAddress', (): void => {
beforeEach(async (): Promise<void> => {
+6 -6
View File
@@ -2,13 +2,13 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
import type { DeriveJunction } from '../key/DeriveJunction';
import type { Prefix } from './types';
import type { DeriveJunction } from '../key/DeriveJunction.js';
import type { Prefix } from './types.js';
import { keyExtractPath } from '../key';
import { sr25519DerivePublic } from '../sr25519';
import { decodeAddress } from './decode';
import { encodeAddress } from './encode';
import { keyExtractPath } from '../key/index.js';
import { sr25519DerivePublic } from '../sr25519/index.js';
import { decodeAddress } from './decode.js';
import { encodeAddress } from './encode.js';
function filterHard ({ isHard }: DeriveJunction): boolean {
return isHard;
@@ -1,10 +1,14 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { encodeAddress } from '.';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { encodeAddress } from './index.js';
// eslint-disable-next-line jest/no-export
export const ALICE_PUBLIC_SR = new Uint8Array([212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]);
// eslint-disable-next-line jest/no-export
export const ALICE_PUBLIC_ED = new Uint8Array([209, 114, 167, 76, 218, 76, 134, 89, 18, 195, 43, 160, 168, 10, 87, 174, 105, 171, 174, 65, 14, 92, 203, 89, 222, 232, 78, 47, 68, 50, 219, 79]);
const SUBKEY = [
+5 -5
View File
@@ -2,15 +2,15 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
import type { Prefix } from './types.js';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L34
import { u8aConcat } from '@polkadot/util';
import { base58Encode } from '../base58';
import { decodeAddress } from './decode';
import { defaults } from './defaults';
import { sshash } from './sshash';
import { base58Encode } from '../base58/index.js';
import { decodeAddress } from './decode.js';
import { defaults } from './defaults.js';
import { sshash } from './sshash.js';
export function encodeAddress (key: HexString | Uint8Array | string, ss58Format: Prefix = defaults.prefix): string {
// decode it, this means we can re-encode an address
@@ -1,7 +1,9 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { encodeDerivedAddress } from '.';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { encodeDerivedAddress } from './index.js';
describe('encodeDerivedAddress', (): void => {
it('creates a valid known derived address', (): void => {
@@ -3,11 +3,11 @@
import type { BN } from '@polkadot/util';
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
import type { Prefix } from './types.js';
import { decodeAddress } from './decode';
import { encodeAddress } from './encode';
import { createKeyDerived } from './keyDerived';
import { decodeAddress } from './decode.js';
import { encodeAddress } from './encode.js';
import { createKeyDerived } from './keyDerived.js';
/**
* @name encodeDerivedAddress
@@ -1,7 +1,9 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { encodeMultiAddress } from '.';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { encodeMultiAddress } from './index.js';
describe('encodeMultiAddress', (): void => {
it('creates a valid known multi address', (): void => {
@@ -3,10 +3,10 @@
import type { BN } from '@polkadot/util';
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
import type { Prefix } from './types.js';
import { encodeAddress } from './encode';
import { createKeyMulti } from './keyMulti';
import { encodeAddress } from './encode.js';
import { createKeyMulti } from './keyMulti.js';
/**
* @name encodeMultiAddress
+4 -2
View File
@@ -1,8 +1,10 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { ALICE_PUBLIC_SR } from './encode.spec';
import { addressEq } from '.';
/// <reference types="@polkadot/dev-test/globals.d.ts" />
import { ALICE_PUBLIC_SR } from './encode.spec.js';
import { addressEq } from './index.js';
describe('addressEq', (): void => {
it('returns false with non-equal', (): void => {

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