Compare commits

...
28 Commits
Author SHA1 Message Date
Github Actions f18293ffe9 [CI Skip] release/stable 6.0.4
skip-checks: true
2021-03-07 15:08:24 +00:00
Jaco Greeff 003dc8d247 6.0.4 (#924) 2021-03-07 16:02:32 +01:00
Github Actions f259de2679 [CI Skip] release/beta 6.0.4-0
skip-checks: true
2021-03-07 11:12:14 +00:00
Yuri b0f783f54b Extra check for process for browser bundles (#923) 2021-03-07 12:05:54 +01:00
Github Actions 4fbdbcf8c5 [CI Skip] release/stable 6.0.3
skip-checks: true
2021-03-05 22:18:23 +00:00
Jaco Greeff ac5c993b27 6.0.3 (cjs import indirection) (#922)
* 6.0.3 (cjs import indirection)

* Bump deps

* Apply suggestions from code review
2021-03-05 23:11:54 +01:00
Github Actions e05dcf7383 [CI Skip] release/stable 6.0.2
skip-checks: true
2021-03-05 15:55:45 +00:00
Jaco Greeff c9ea3ab1ae 6.0.2 (Only use rxjs cjs exports) (#920)
* 6.0.2 (Only use rxjs cjs exports)

* Update CHANGELOG.md

* packageInfo
2021-03-05 16:49:45 +01:00
Github Actions 4b097dcaef [CI Skip] release/stable 6.0.1
skip-checks: true
2021-03-05 15:07:06 +00:00
Jaco Greeff 2a9cca5f1b 6.0 (#919) 2021-03-05 16:00:54 +01:00
Github Actions 8ce3a40c66 [CI Skip] release/beta 6.0.1-9
skip-checks: true
2021-03-05 08:40:25 +00:00
Jaco Greeff 958a13384d Allow for addition of raw pairs to the keyring (#918) 2021-03-05 09:35:12 +01:00
Github Actions e25545c39f [CI Skip] release/beta 6.0.1-8
skip-checks: true
2021-03-04 21:06:19 +00:00
Jaco Greeff bca1e0c5c4 Extract json encryption functions (#917)
* Extract json encryption functions

* Opt

* adjust

* Adjust

* Adjust imports

* callback error
2021-03-04 22:01:20 +01:00
Github Actions bf36024568 [CI Skip] release/beta 6.0.1-7
skip-checks: true
2021-03-04 19:01:05 +00:00
Jaco Greeff 1292a270e0 Bump wasm (#916) 2021-03-04 19:56:00 +01:00
Github Actions 68fe800f63 [CI Skip] release/beta 6.0.1-6
skip-checks: true
2021-03-03 15:47:58 +00:00
Jaco Greeff ceb1575e1a Build cleanups (#914) 2021-03-03 16:32:34 +01:00
Github Actions 4916d63832 [CI Skip] release/beta 6.0.1-5
skip-checks: true
2021-03-03 08:29:40 +00:00
Jaco Greeff d2176485b9 Bump (& berry) (#913) 2021-03-03 09:24:31 +01:00
Github Actions e9dd421b62 [CI Skip] release/beta 6.0.1-4
skip-checks: true
2021-03-02 19:51:57 +00:00
Antoine Estienne 802c241820 Add eth dev addresses (#912)
* added gerald test address

* added 5 dev addresses for eth

* added one pair

* updated seed
2021-03-02 20:45:36 +01:00
Github Actions a3b5ced423 [CI Skip] release/beta 6.0.1-3
skip-checks: true
2021-03-02 19:38:01 +00:00
Jaco Greeff b975766d35 Default output as ESM modules (#911)
* Default output as ESM modules

* 6.0

* packageInfo

* Bump dev & wasm

* empty ignore patterns

* Don't exclude @polkadot

* Bump dev
2021-03-02 20:31:48 +01:00
Github Actions eb460570ac [CI Skip] release/beta 5.9.3-1
skip-checks: true
2021-03-01 20:33:06 +00:00
Jaco Greeff a8658d5b60 Bump deps (#910) 2021-03-01 21:26:38 +01:00
Github Actions fbe462e2e3 [CI Skip] release/beta 5.9.3-0
skip-checks: true
2021-03-01 16:12:37 +00:00
Antoine EstienneandJaco Greeff 04bbf28a57 Jlm test from seed (#909)
* added gerald test address

* add test for fromSeed

* Update packages/util-crypto/src/secp256k1/keypair/fromSeed.spec.ts

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* coorected createfromuri to accept eth priv key

* Update packages/keyring/src/keyring.ts

Co-authored-by: Jaco Greeff <jacogr@gmail.com>

* add isPhraeHex

Co-authored-by: Jaco Greeff <jacogr@gmail.com>
2021-03-01 17:06:12 +01:00
64 changed files with 835 additions and 524 deletions
+6 -2
View File
@@ -1,13 +1,17 @@
6 6
2.6.2 2.6.2
2.12.2 2.12.2
5.2.2 5.2.2
5.2.3 5.2.3
5.4.2 5.4.2
5.4.3 5.4.3
5.4.4 5.4.4
5.5.2 5.5.2
5.6.2 5.6.2
5.6.3 5.6.3
5.9.2 5.9.2
6.0.2
6.0.3
6.0.4
+1 -1
View File
@@ -5,7 +5,7 @@ jobs:
pr: pr:
strategy: strategy:
matrix: matrix:
step: ['lint', 'test', 'build', 'networks:crosscheck'] step: ['lint', 'test', 'build']
name: ${{ matrix.step }} name: ${{ matrix.step }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
-1
View File
@@ -1 +0,0 @@
12
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -10,4 +10,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs - path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version" spec: "@yarnpkg/plugin-version"
yarnPath: .yarn/releases/yarn-2.4.0.cjs yarnPath: .yarn/releases/yarn-2.4.1.cjs
+40
View File
@@ -1,5 +1,45 @@
# CHANGELOG # CHANGELOG
## 6.0.4 Mar 7, 2021
Contributed:
- Enhance check for global process existence (Thanks to https://github.com/Yuripetusko)
Changes:
- Dedupe & optimize logger process.env checks
## 6.0.3 Mar 5, 2021
Changes:
- Add import indirection for both CJS & ESM (where generated source file is commonjs)
## 6.0.2 Mar 5, 2021
Changes:
- Fix `@polkadot/x-rxjs` ESM exports for Node environments (now different due to the ESM conversion)
## 6.0.1 Mar 5, 2021
**Important** In the 6.0 version the default package type has been changed to ESM modules by default. This should not affect usage, however since the output formats changed, a new major version is required.
Contributed:
- Add dev addresses for Frontier-based chains (Thanks to https://github.com/joelamouche)
Changes:
- Build to ESM by default (with cjs versions via export map)
- Allow addition or raw pairs on the keyring via `{add, create}FromPair`
- Extract re-usable json encryption/decryption functions
## 5.9.2 Feb 28, 2021 ## 5.9.2 Feb 28, 2021
Changes: Changes:
+1 -1
View File
@@ -32,5 +32,5 @@ module.exports = Object.assign({}, config, {
'<rootDir>/packages/x-textencoder/build', '<rootDir>/packages/x-textencoder/build',
'<rootDir>/packages/x-ws/build' '<rootDir>/packages/x-ws/build'
], ],
resolver: '@polkadot/dev/config/jest-resolver.cjs' transformIgnorePatterns: ['/node_modules/(?!@polkadot)']
}); });
+4 -4
View File
@@ -7,7 +7,7 @@
"packages/*" "packages/*"
], ],
"resolutions": { "resolutions": {
"typescript": "^4.1.5" "typescript": "^4.2.2"
}, },
"scripts": { "scripts": {
"build": "polkadot-dev-build-ts", "build": "polkadot-dev-build-ts",
@@ -21,9 +21,9 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.13.8", "@babel/core": "^7.13.8",
"@polkadot/dev": "^0.61.30", "@polkadot/dev": "^0.62.5",
"@polkadot/ts": "^0.3.59", "@polkadot/ts": "^0.3.61",
"@types/jest": "^26.0.20" "@types/jest": "^26.0.20"
}, },
"version": "5.9.2" "version": "6.0.4"
} }
+5 -4
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/hw-ledger-transports", "name": "@polkadot/hw-ledger-transports",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"repository": "github:polkadot-js/common", "repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
@@ -11,14 +12,14 @@
"react-native": "react-native.js", "react-native": "react-native.js",
"sideEffects": false, "sideEffects": false,
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@ledgerhq/hw-transport-webusb": "^5.43.0" "@ledgerhq/hw-transport-webusb": "^5.45.0"
}, },
"devDependencies": { "devDependencies": {
"@types/ledgerhq__hw-transport-node-hid": "^4.22.2", "@types/ledgerhq__hw-transport-node-hid": "^4.22.2",
"@types/ledgerhq__hw-transport-webusb": "^4.70.1" "@types/ledgerhq__hw-transport-webusb": "^4.70.1"
}, },
"optionalDependencies": { "optionalDependencies": {
"@ledgerhq/hw-transport-node-hid-singleton": "^5.43.0" "@ledgerhq/hw-transport-node-hid-singleton": "^5.45.0"
} }
} }
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/hw-ledger-transports authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/hw-ledger-transports', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/hw-ledger-transports', version: '6.0.4' };
+7 -6
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/hw-ledger", "name": "@polkadot/hw-ledger",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"repository": "github:polkadot-js/common", "repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
@@ -9,12 +10,12 @@
"main": "index.js", "main": "index.js",
"sideEffects": [ "sideEffects": [
"./detectPackage.js", "./detectPackage.js",
"./detectPackage.mjs" "./detectPackage.cjs"
], ],
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/hw-ledger-transports": "5.9.2", "@polkadot/hw-ledger-transports": "6.0.4",
"@polkadot/util": "^5.9.2", "@polkadot/util": "^6.0.4",
"@zondax/ledger-polkadot": "^0.13.1" "@zondax/ledger-polkadot": "^0.13.4"
} }
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/hw-ledger', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/hw-ledger', version: '6.0.4' };
+8 -7
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/keyring", "name": "@polkadot/keyring",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "Keyring management", "description": "Keyring management",
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
@@ -9,18 +10,18 @@
"main": "index.js", "main": "index.js",
"sideEffects": [ "sideEffects": [
"./detectPackage.js", "./detectPackage.js",
"./detectPackage.mjs" "./detectPackage.cjs"
], ],
"repository": "github:polkadot-js/common", "repository": "github:polkadot-js/common",
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/util": "5.9.2", "@polkadot/util": "6.0.4",
"@polkadot/util-crypto": "5.9.2" "@polkadot/util-crypto": "6.0.4"
}, },
"peerDependencies": { "peerDependencies": {
"@polkadot/util": "5.9.2", "@polkadot/util": "6.0.4",
"@polkadot/util-crypto": "5.9.2" "@polkadot/util-crypto": "6.0.4"
} }
} }
+46 -2
View File
@@ -1,9 +1,12 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import { hexToU8a, stringToU8a } from '@polkadot/util'; import type { KeyringPair$Json } from './types';
import { cryptoWaitReady, encodeAddress, randomAsU8a, setSS58Format } from '@polkadot/util-crypto';
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 Keyring from '.';
describe('keypair', (): void => { describe('keypair', (): void => {
@@ -306,6 +309,7 @@ describe('keypair', (): void => {
describe('ethereum', (): void => { describe('ethereum', (): void => {
// combine mnemonic with derivation path // combine mnemonic with derivation path
const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy' + '/m/44\'/60\'/0\'/0/0'; const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy' + '/m/44\'/60\'/0\'/0/0';
const PRIV_KEY_ONE = '0x070dc3117300011918e26b02176945cc15c3d548cf49fd8418d97f93af699e46';
const ETH_ADDRESS_ONE = '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d'; const ETH_ADDRESS_ONE = '0x31ea8795EE32D782C8ff41a5C68Dcbf0F5B27f6d';
let keyring: Keyring; let keyring: Keyring;
@@ -314,6 +318,22 @@ describe('keypair', (): void => {
keyring = new Keyring({ type: 'ethereum' }); keyring = new Keyring({ type: 'ethereum' });
}); });
it('creates with dev phrase from the private key', (): void => {
const pair = keyring.addFromSeed(hexToU8a(PRIV_KEY_ONE));
expect(
pair.address
).toEqual(ETH_ADDRESS_ONE);
});
it('creates with dev phrase from the private key in createFromUri', (): void => {
const pair = keyring.createFromUri(PRIV_KEY_ONE);
expect(
pair.address
).toEqual(ETH_ADDRESS_ONE);
});
it('creates with dev phrase with derivation path specified', (): void => { it('creates with dev phrase with derivation path specified', (): void => {
const pair = keyring.createFromUri(PHRASE); const pair = keyring.createFromUri(PHRASE);
@@ -412,6 +432,30 @@ describe('keypair', (): void => {
}); });
}); });
describe('raw pair add/create', (): void => {
const json = JSON.parse('{"address":"5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H","encoded":"JQUl8ZpoXv2OMkL9TPylLmcIye2cYhaS9INICbFgZTsAgAAAAQAAAAgAAAAr/0hJOOzokIdBG71TstigLABX9D5xGD7L37ySxtjDrVRg26LL90jLQ47quT9o3bq6ppXMVL6USk7Q4p3WU66bojTFuCDyhpYRhNbUqU6s0rD3S4bhv9lG+pG9vQ4eD5PVQUvxdANmJpYuDg45nrTmsMC5AHGdFGkHW/LHnkmbFid1cvPYkdiBoef5CIEdoly512pxMupVxnJWF1NT","encoding":{"content":["pkcs8","sr25519"],"type":["scrypt","xsalsa20-poly1305"],"version":"3"},"meta":{"name":"hello"}}') as KeyringPair$Json;
const decoded = decodePair('1', base64Decode(json.encoded), json.encoding.type);
const keyring = new Keyring({ ss58Format: 44 });
it('creates a pair from a private/public combo', (): void => {
const pair = keyring.createFromPair(decoded, json.meta, 'sr25519');
expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H');
expect(pair.isLocked).toEqual(false);
expect(pair.meta.name).toEqual('hello');
});
it('adds a pair from a private/public combo', (): void => {
keyring.addFromPair(decoded, json.meta, 'sr25519');
const pair = keyring.getPairs()[0];
expect(pair.address).toEqual('5PjeoaQzCoYbSi42aQRKB3Sx18StCaEAzCbGEEbWbZyfKS3H');
expect(pair.isLocked).toEqual(false);
expect(pair.meta.name).toEqual('hello');
});
});
describe('util', (): void => { describe('util', (): void => {
let keyring: Keyring; let keyring: Keyring;
+37 -8
View File
@@ -1,8 +1,9 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { Keypair, KeypairType } from '@polkadot/util-crypto/types'; import type { Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$JsonEncodingTypes, KeyringPair$Meta } from './types'; import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from './types';
import { assert, hexToU8a, isHex, isUndefined, stringToU8a } from '@polkadot/util'; import { assert, hexToU8a, isHex, isUndefined, stringToU8a } from '@polkadot/util';
import { base64Decode, decodeAddress, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, naclKeypairFromSeed as naclFromSeed, schnorrkelKeypairFromSeed as schnorrkelFromSeed, secp256k1KeypairFromSeed as secp256k1FromSeed } from '@polkadot/util-crypto'; import { base64Decode, decodeAddress, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, naclKeypairFromSeed as naclFromSeed, schnorrkelKeypairFromSeed as schnorrkelFromSeed, secp256k1KeypairFromSeed as secp256k1FromSeed } from '@polkadot/util-crypto';
@@ -90,7 +91,7 @@ export class Keyring implements KeyringInstance {
* of an account backup), and then generates a keyring pair from them that it passes to * of an account backup), and then generates a keyring pair from them that it passes to
* `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.
*/ */
public addFromAddress (address: string | Uint8Array, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, type: KeypairType = this.type, ignoreChecksum?: boolean, encType?: KeyringPair$JsonEncodingTypes[]): KeyringPair { public addFromAddress (address: string | Uint8Array, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, type: KeypairType = this.type, ignoreChecksum?: boolean, encType?: EncryptedJsonEncoding[]): KeyringPair {
const publicKey = this.decodeAddress(address, ignoreChecksum); const publicKey = this.decodeAddress(address, ignoreChecksum);
return this.addPair(createPair({ toSS58: this.encodeAddress, type }, { publicKey, secretKey: new Uint8Array() }, meta, encoded, encType)); return this.addPair(createPair({ toSS58: this.encodeAddress, type }, { publicKey, secretKey: new Uint8Array() }, meta, encoded, encType));
@@ -119,6 +120,16 @@ export class Keyring implements KeyringInstance {
return this.addFromUri(mnemonic, meta, type); return this.addFromUri(mnemonic, meta, type);
} }
/**
* @name addFromPair
* @summary Stores an account created from an explicit publicKey/secreteKey combination
*/
public addFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
return this.addPair(
this.createFromPair(pair, meta, type)
);
}
/** /**
* @name addFromSeed * @name addFromSeed
* @summary Stores an account, given seed data, as a Key/Value (public key, pair) in Keyring Pair Dictionary * @summary Stores an account, given seed data, as a Key/Value (public key, pair) in Keyring Pair Dictionary
@@ -127,7 +138,9 @@ export class Keyring implements KeyringInstance {
* `addPair` to store in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value. * `addPair` to store in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.
*/ */
public addFromSeed (seed: Uint8Array, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair { public addFromSeed (seed: Uint8Array, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
return this.addPair(createPair({ toSS58: this.encodeAddress, type }, keypairFromSeed[type](seed), meta, null)); return this.addPair(
createPair({ toSS58: this.encodeAddress, type }, keypairFromSeed[type](seed), meta, null)
);
} }
/** /**
@@ -146,13 +159,18 @@ export class Keyring implements KeyringInstance {
* @description Creates a pair from a JSON keyfile * @description Creates a pair from a JSON keyfile
*/ */
public createFromJson ({ address, encoded, encoding: { content, type, version }, meta }: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair { public createFromJson ({ address, encoded, encoding: { content, type, version }, meta }: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair {
assert(version !== '3' || content[0] === 'pkcs8', () => `Unable to decode non-pkcs8 type, [${content.join(',')}] found}`);
const cryptoType = version === '0' || !Array.isArray(content) const cryptoType = version === '0' || !Array.isArray(content)
? this.type ? this.type
: content[1]; : content[1];
const encType = !Array.isArray(type) const encType = !Array.isArray(type)
? [type] ? [type]
: type; : type;
// Here the address and publicKey are 32 bytes and isomorphic. This is why the address field needs to be the public key for ethereum type pairs
assert(['ed25519', 'sr25519', 'ecdsa', 'ethereum'].includes(cryptoType), `Unknown crypto type ${cryptoType}`);
// Here the address and publicKey are 32 bytes and isomorphic. This is why the address field needs to be the public key for ethereum type pairs
const publicKey = isHex(address) const publicKey = isHex(address)
? hexToU8a(address) ? hexToU8a(address)
: this.decodeAddress(address, ignoreChecksum); : this.decodeAddress(address, ignoreChecksum);
@@ -160,7 +178,15 @@ export class Keyring implements KeyringInstance {
? hexToU8a(encoded) ? hexToU8a(encoded)
: base64Decode(encoded); : base64Decode(encoded);
return createPair({ toSS58: this.encodeAddress, type: cryptoType }, { publicKey, secretKey: new Uint8Array() }, meta, decoded, encType); return createPair({ toSS58: this.encodeAddress, type: cryptoType as KeypairType }, { publicKey, secretKey: new Uint8Array() }, meta, decoded, encType);
}
/**
* @name createFromPair
* @summary Creates a pair from an explicit publicKey/secreteKey combination
*/
public createFromPair (pair: Keypair, meta: KeyringPair$Meta = {}, type: KeypairType = this.type): KeyringPair {
return createPair({ toSS58: this.encodeAddress, type }, pair, meta, null);
} }
/** /**
@@ -175,11 +201,12 @@ export class Keyring implements KeyringInstance {
: _suri; : _suri;
const { derivePath, password, path, phrase } = keyExtractSuri(suri); const { derivePath, password, path, phrase } = keyExtractSuri(suri);
let seed: Uint8Array; let seed: Uint8Array;
const isPhraseHex = isHex(phrase, 256);
if (isHex(phrase, 256)) { if (isPhraseHex) {
seed = hexToU8a(phrase); seed = hexToU8a(phrase);
} else { } else {
const str = phrase as string; const str = phrase;
const parts = str.split(' '); const parts = str.split(' ');
if ([12, 15, 18, 21, 24].includes(parts.length)) { if ([12, 15, 18, 21, 24].includes(parts.length)) {
@@ -194,7 +221,9 @@ export class Keyring implements KeyringInstance {
} }
const derived = type === 'ethereum' const derived = type === 'ethereum'
? hdEthereum(seed, derivePath.substring(1)) ? isPhraseHex
? keypairFromSeed[type](seed) // for eth, if the private key is provided as suri, it must be derived only once
: hdEthereum(seed, derivePath.substring(1))
: keyFromPath(keypairFromSeed[type](seed), path, type); : keyFromPath(keypairFromSeed[type](seed), path, type);
return createPair({ toSS58: this.encodeAddress, type }, derived, meta, null); return createPair({ toSS58: this.encodeAddress, type }, derived, meta, null);
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/keyring', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/keyring', version: '6.0.4' };
+19 -45
View File
@@ -1,13 +1,13 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { KeyringPair$JsonEncodingTypes } from '../types'; import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { PairInfo } from './types'; import type { PairInfo } from './types';
import { assert, stringToU8a, u8aFixLength } from '@polkadot/util'; import { assert, isUndefined, u8aEq } from '@polkadot/util';
import { naclDecrypt, scryptEncode, scryptFromU8a } from '@polkadot/util-crypto'; import { jsonDecryptData } from '@polkadot/util-crypto';
import { ENCODING, NONCE_LENGTH, PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SCRYPT_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults'; import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults';
const SEED_OFFSET = PKCS8_HEADER.length; const SEED_OFFSET = PKCS8_HEADER.length;
@@ -15,59 +15,33 @@ type DecodeResult = PairInfo & {
secretKey: Uint8Array; secretKey: Uint8Array;
}; };
function decodePkcs8 (encoded: Uint8Array): DecodeResult { export function decodePair (passphrase?: string, encrypted?: Uint8Array | null, _encType?: EncryptedJsonEncoding | EncryptedJsonEncoding[]): DecodeResult {
const header = encoded.subarray(0, PKCS8_HEADER.length); const encType = Array.isArray(_encType) || isUndefined(_encType)
? _encType
: [_encType];
const decrypted = jsonDecryptData(encrypted, passphrase, encType);
const header = decrypted.subarray(0, PKCS8_HEADER.length);
assert(header.toString() === PKCS8_HEADER.toString(), 'Invalid Pkcs8 header found in body'); assert(u8aEq(header, PKCS8_HEADER), 'Invalid Pkcs8 header found in body');
let secretKey = encoded.subarray(SEED_OFFSET, SEED_OFFSET + SEC_LENGTH); let secretKey = decrypted.subarray(SEED_OFFSET, SEED_OFFSET + SEC_LENGTH);
let divOffset = SEED_OFFSET + SEC_LENGTH; let divOffset = SEED_OFFSET + SEC_LENGTH;
let divider = encoded.subarray(divOffset, divOffset + PKCS8_DIVIDER.length); let divider = decrypted.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
// old-style, we have the seed here // old-style, we have the seed here
if (divider.toString() !== PKCS8_DIVIDER.toString()) { if (!u8aEq(divider, PKCS8_DIVIDER)) {
divOffset = SEED_OFFSET + SEED_LENGTH; divOffset = SEED_OFFSET + SEED_LENGTH;
secretKey = encoded.subarray(SEED_OFFSET, divOffset); secretKey = decrypted.subarray(SEED_OFFSET, divOffset);
divider = encoded.subarray(divOffset, divOffset + PKCS8_DIVIDER.length); divider = decrypted.subarray(divOffset, divOffset + PKCS8_DIVIDER.length);
assert(u8aEq(divider, PKCS8_DIVIDER), 'Invalid Pkcs8 divider found in body');
} }
assert(divider.toString() === PKCS8_DIVIDER.toString(), 'Invalid Pkcs8 divider found in body');
const pubOffset = divOffset + PKCS8_DIVIDER.length; const pubOffset = divOffset + PKCS8_DIVIDER.length;
const publicKey = encoded.subarray(pubOffset, pubOffset + PUB_LENGTH); const publicKey = decrypted.subarray(pubOffset, pubOffset + PUB_LENGTH);
return { return {
publicKey, publicKey,
secretKey secretKey
}; };
} }
export function decodePair (passphrase?: string, encrypted?: Uint8Array | null, encType: KeyringPair$JsonEncodingTypes[] = ENCODING): DecodeResult {
assert(encrypted, 'No encrypted data available to decode');
assert(passphrase || !encType.includes('xsalsa20-poly1305'), 'Password required to decode encypted data');
let encoded: Uint8Array | null = encrypted;
if (passphrase) {
let password: Uint8Array;
if (encType.includes('scrypt')) {
const { params, salt } = scryptFromU8a(encrypted);
password = scryptEncode(passphrase, salt, params).password;
encrypted = encrypted.subarray(SCRYPT_LENGTH);
} else {
password = stringToU8a(passphrase);
}
encoded = naclDecrypt(
encrypted.subarray(NONCE_LENGTH),
encrypted.subarray(0, NONCE_LENGTH),
u8aFixLength(password, 256, true)
);
}
assert(encoded, 'Unable to decode using the supplied passphrase');
return decodePkcs8(encoded);
}
-5
View File
@@ -1,14 +1,9 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { KeyringPair$JsonEncodingTypes } from '../types';
export const ENCODING: KeyringPair$JsonEncodingTypes[] = ['scrypt', 'xsalsa20-poly1305'];
export const NONCE_LENGTH = 24;
export const PKCS8_DIVIDER = new Uint8Array([161, 35, 3, 33, 0]); export const PKCS8_DIVIDER = new Uint8Array([161, 35, 3, 33, 0]);
export const PKCS8_HEADER = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]); export const PKCS8_HEADER = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]);
export const PUB_LENGTH = 32; export const PUB_LENGTH = 32;
export const SALT_LENGTH = 32; export const SALT_LENGTH = 32;
export const SEC_LENGTH = 64; export const SEC_LENGTH = 64;
export const SEED_LENGTH = 32; export const SEED_LENGTH = 32;
export const SCRYPT_LENGTH = SALT_LENGTH + (3 * 4);
+3 -1
View File
@@ -1,8 +1,10 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import { NONCE_LENGTH, SCRYPT_LENGTH } from '@polkadot/util-crypto/json/constants';
import { createTestPairs } from '../testingPairs'; import { createTestPairs } from '../testingPairs';
import { NONCE_LENGTH, PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SCRYPT_LENGTH, SEC_LENGTH } from './defaults'; import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults';
const PKCS8_LENGTH = PKCS8_DIVIDER.length + PKCS8_HEADER.length + PUB_LENGTH + SEC_LENGTH; const PKCS8_LENGTH = PKCS8_DIVIDER.length + PKCS8_HEADER.length + PUB_LENGTH + SEC_LENGTH;
const ENCODED_LENGTH = 16 + PKCS8_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH; const ENCODED_LENGTH = 16 + PKCS8_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH;
+3 -2
View File
@@ -1,8 +1,9 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding } from '@polkadot/util-crypto/json/types';
import type { Keypair, KeypairType } from '@polkadot/util-crypto/types'; import type { Keypair, KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair, KeyringPair$Json, KeyringPair$JsonEncodingTypes, KeyringPair$Meta, SignOptions } from '../types'; import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types';
import type { PairInfo } from './types'; import type { PairInfo } from './types';
import { assert, u8aConcat, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util'; import { assert, u8aConcat, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
@@ -87,7 +88,7 @@ function vrfHash (proof: Uint8Array, context?: string | Uint8Array, extra?: stri
* an `encoded` property that is assigned with the encoded public key in hex format, and an `encoding` * an `encoded` property that is assigned with the encoded public key in hex format, and an `encoding`
* property that indicates whether the public key value of the `encoded` property is encoded or not. * property that indicates whether the public key value of the `encoded` property is encoded or not.
*/ */
export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: PairInfo, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, encTypes?: KeyringPair$JsonEncodingTypes[]): KeyringPair { export function createPair ({ toSS58, type }: Setup, { publicKey, secretKey }: PairInfo, meta: KeyringPair$Meta = {}, encoded: Uint8Array | null = null, encTypes?: EncryptedJsonEncoding[]): KeyringPair {
const decodePkcs8 = (passphrase?: string, userEncoded?: Uint8Array | null): void => { const decodePkcs8 = (passphrase?: string, userEncoded?: Uint8Array | null): void => {
const decoded = decodePair(passphrase, userEncoded || encoded, encTypes); const decoded = decodePair(passphrase, userEncoded || encoded, encTypes);
+3 -18
View File
@@ -2,34 +2,19 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { KeypairType } from '@polkadot/util-crypto/types'; import type { KeypairType } from '@polkadot/util-crypto/types';
import type { KeyringPair$Json, KeyringPair$JsonEncodingTypes, KeyringPair$Meta } from '../types'; import type { KeyringPair$Json, KeyringPair$Meta } from '../types';
import { base64Encode } from '@polkadot/util-crypto'; import { jsonEncryptFormat } from '@polkadot/util-crypto';
import { ENCODING } from './defaults';
interface PairStateJson { interface PairStateJson {
address: string; address: string;
meta: KeyringPair$Meta; meta: KeyringPair$Meta;
} }
// version 2 - nonce, encoded (previous)
// version 3 - salt, nonce, encoded
const VERSION = '3';
const ENC_NONE: KeyringPair$JsonEncodingTypes[] = ['none'];
export function pairToJson (type: KeypairType, { address, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json { export function pairToJson (type: KeypairType, { address, meta }: PairStateJson, encoded: Uint8Array, isEncrypted: boolean): KeyringPair$Json {
return { return {
...jsonEncryptFormat(encoded, ['pkcs8', type], isEncrypted),
address, address,
encoded: base64Encode(encoded),
encoding: {
content: ['pkcs8', type],
type: isEncrypted
? ENCODING
: ENC_NONE,
version: VERSION
},
meta meta
}; };
} }
+44 -2
View File
@@ -73,6 +73,49 @@ export const PAIRSSR25519: PairDef[] = [
]; ];
export const PAIRSETHEREUM: PairDef[] = [ export const PAIRSETHEREUM: PairDef[] = [
{
name: 'Alith',
publicKey: hexToU8a('0x02509540919faacf9ab52146c9aa40db68172d83777250b28e4679176e49ccdd9f'),
secretKey: hexToU8a('0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Baltathar',
publicKey: hexToU8a('0x033bc19e36ff1673910575b6727a974a9abd80c9a875d41ab3e2648dbfb9e4b518'),
secretKey: hexToU8a('0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Charleth',
publicKey: hexToU8a('0x0234637bdc0e89b5d46543bcbf8edff329d2702bc995e27e9af4b1ba009a3c2a5e'),
secretKey: hexToU8a('0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Dorothy',
publicKey: hexToU8a('0x02a00d60b2b408c2a14c5d70cdd2c205db8985ef737a7e55ad20ea32cc9e7c417c'),
secretKey: hexToU8a('0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Ethan',
publicKey: hexToU8a('0x025cdc005b752651cd3f728fb9192182acb3a9c89e19072cbd5b03f3ee1f1b3ffa'),
secretKey: hexToU8a('0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
{
name: 'Faith',
publicKey: hexToU8a('0x037964b6c9d546da4646ada28a99e34acaa1d14e7aba861a9055f9bd200c8abf74'),
secretKey: hexToU8a('0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df'),
seed: "m/44'/40'/0'/0",
type: 'ethereum'
},
// Gerald will be removed when moonbeam is done changing dev addresses (should def be done by end of march 21)
{ {
name: 'Gerald', name: 'Gerald',
publicKey: new Uint8Array([3, 98, 79, 114, 14, 174, 103, 106, publicKey: new Uint8Array([3, 98, 79, 114, 14, 174, 103, 106,
@@ -81,7 +124,7 @@ export const PAIRSETHEREUM: PairDef[] = [
198, 190, 114, 152, 60, 235, 98, 15, 198, 190, 114, 152, 60, 235, 98, 15,
191]), 191]),
secretKey: hexToU8a('0x99b3c12287537e38c90a9219d4cb074a89a16e9cdb20bf85728ebd97c343e342'), secretKey: hexToU8a('0x99b3c12287537e38c90a9219d4cb074a89a16e9cdb20bf85728ebd97c343e342'),
seed: 'Gerald', seed: "m/44'/40'/0'/0",
type: 'ethereum' type: 'ethereum'
} }
]; ];
@@ -101,7 +144,6 @@ export function createTestKeyring (options: KeyringOptions = {}, isDerived = tru
isTesting: true, isTesting: true,
name: name || seed.replace('//', '_').toLowerCase() name: name || seed.replace('//', '_').toLowerCase()
}; };
const pair = !isDerived && !name const pair = !isDerived && !name
? keyring.addFromUri(seed, meta, options.type) ? keyring.addFromUri(seed, meta, options.type)
: keyring.addPair( : keyring.addPair(
+39
View File
@@ -1,9 +1,11 @@
// Copyright 2017-2021 @polkadot/keyring authors & contributors // Copyright 2017-2021 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto'; import { cryptoWaitReady } from '@polkadot/util-crypto';
import { createTestPairs } from './testingPairs'; import { createTestPairs } from './testingPairs';
import Keyring from '.';
describe('testingPairs', (): void => { describe('testingPairs', (): void => {
beforeEach(async (): Promise<void> => { beforeEach(async (): Promise<void> => {
@@ -27,4 +29,41 @@ describe('testingPairs', (): void => {
createTestPairs({ type: 'ed25519' }).alice.address createTestPairs({ type: 'ed25519' }).alice.address
).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'); ).toEqual('5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY');
}); });
it('has the correct address for Alith (Eth)', (): void => {
expect(
createTestPairs({ type: 'ethereum' }).Alith.address
).toEqual('0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac');
});
it('has the correct address for Alith (Eth), same as obtained by createFromUri', (): void => {
const keyring = new Keyring({ type: 'ethereum' });
const pair = keyring.createFromUri('0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133');
expect(
pair && pair.address
).toEqual('0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac');
});
it('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"
const privKeys: string[] = ['0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133',
'0x8075991ce870b93a8870eca0c0f91913d12f47948ca0fd25b49c6fa7cdbeee8b',
'0x0b6e18cafb6ed99687ec547bd28139cafdd2bffe70e6b688025de6b445aa5c5b',
'0x39539ab1876910bbf3a223d84a29e28f1cb4e2e456503e7e91ed39b2e7223d68',
'0x7dce9bc8babb68fec1409be38c8e1a52650206a7ed90ff956ae8a6d15eeaaef4',
'0xb9d2ea9a615f3165812e8d44de0d24da9bbd164b65c4f0573e1ce2c8dbd9c8df',
'0x96b8a38e12e1a31dee1eab2fffdf9d9990045f5b37e44d8cc27766ef294acf18',
'0x0d6dcaaef49272a5411896be8ad16c01c35d6f8c18873387b71fbc734759b0ab',
'0x4c42532034540267bf568198ccec4cb822a025da542861fcb146a5fab6433ff8',
'0x94c49300a58d576011096bcb006aa06f5a91b34b4383891e8029c21dc39fbb8b'];
delete ring.nobody;
Object.keys(ring).forEach((testKeyring, i) => {
if (i < 6) { expect(u8aToHex(ring[testKeyring].publicKey)).toEqual(u8aToHex(keyring.createFromUri(privKeys[i]).publicKey)); }
});
});
}); });
+5 -14
View File
@@ -2,7 +2,8 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
import type { Prefix } from '@polkadot/util-crypto/address/types'; import type { Prefix } from '@polkadot/util-crypto/address/types';
import type { KeypairType } from '@polkadot/util-crypto/types'; import type { EncryptedJson } from '@polkadot/util-crypto/json/types';
import type { Keypair, KeypairType } from '@polkadot/util-crypto/types';
export interface KeyringOptions { export interface KeyringOptions {
ss58Format?: Prefix; ss58Format?: Prefix;
@@ -11,20 +12,8 @@ export interface KeyringOptions {
export type KeyringPair$Meta = Record<string, unknown>; export type KeyringPair$Meta = Record<string, unknown>;
export type KeyringPair$JsonVersion = '0' | '1' | '2' | '3'; export interface KeyringPair$Json extends EncryptedJson {
export type KeyringPair$JsonEncodingTypes = 'none' | 'scrypt' | 'xsalsa20-poly1305';
export interface KeyringPair$JsonEncoding {
content: ['pkcs8', KeypairType];
type: KeyringPair$JsonEncodingTypes | KeyringPair$JsonEncodingTypes[];
version: KeyringPair$JsonVersion;
}
export interface KeyringPair$Json {
address: string; address: string;
encoded: string;
encoding: KeyringPair$JsonEncoding;
meta: KeyringPair$Meta; meta: KeyringPair$Meta;
} }
@@ -73,9 +62,11 @@ export interface KeyringInstance {
addFromAddress (address: string | Uint8Array, meta?: KeyringPair$Meta, encoded?: Uint8Array | null, type?: KeypairType, ignoreChecksum?: boolean): KeyringPair; addFromAddress (address: string | Uint8Array, meta?: KeyringPair$Meta, encoded?: Uint8Array | null, type?: KeypairType, ignoreChecksum?: boolean): KeyringPair;
addFromJson (pair: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair; addFromJson (pair: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair;
addFromMnemonic (mnemonic: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair; addFromMnemonic (mnemonic: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair;
addFromPair (pair: Keypair, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair
addFromSeed (seed: Uint8Array, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair; addFromSeed (seed: Uint8Array, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair;
addFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair; addFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair;
createFromJson (json: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair; createFromJson (json: KeyringPair$Json, ignoreChecksum?: boolean): KeyringPair;
createFromPair (pair: Keypair, meta: KeyringPair$Meta, type: KeypairType): KeyringPair
createFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair; createFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair;
getPair (address: string | Uint8Array): KeyringPair; getPair (address: string | Uint8Array): KeyringPair;
getPairs (): KeyringPair[]; getPairs (): KeyringPair[];
+5 -4
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/networks", "name": "@polkadot/networks",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A list of all available Substrate networks and their applicable prefixes", "description": "A list of all available Substrate networks and their applicable prefixes",
"main": "index.js", "main": "index.js",
"sideEffects": false, "sideEffects": false,
@@ -12,10 +13,10 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/networks#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/networks#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8" "@babel/runtime": "^7.13.9"
}, },
"devDependencies": { "devDependencies": {
"@polkadot/util": "5.9.2", "@polkadot/util": "6.0.4",
"@polkadot/x-fetch": "5.9.2" "@polkadot/x-fetch": "6.0.4"
} }
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/networks', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/networks', version: '6.0.4' };
+9 -8
View File
@@ -1,11 +1,12 @@
{ {
"name": "@polkadot/util-crypto", "name": "@polkadot/util-crypto",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A collection of useful crypto utilities for @polkadot", "description": "A collection of useful crypto utilities for @polkadot",
"main": "index.js", "main": "index.js",
"sideEffects": [ "sideEffects": [
"./detectPackage.js", "./detectPackage.js",
"./detectPackage.mjs" "./detectPackage.cjs"
], ],
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
@@ -15,11 +16,11 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util-crypto#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/util-crypto#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/networks": "5.9.2", "@polkadot/networks": "6.0.4",
"@polkadot/util": "5.9.2", "@polkadot/util": "6.0.4",
"@polkadot/wasm-crypto": "^3.2.4", "@polkadot/wasm-crypto": "^4.0.2",
"@polkadot/x-randomvalues": "5.9.2", "@polkadot/x-randomvalues": "6.0.4",
"base-x": "^3.0.8", "base-x": "^3.0.8",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
"blakejs": "^1.1.0", "blakejs": "^1.1.0",
@@ -40,6 +41,6 @@
"@types/xxhashjs": "^0.2.2" "@types/xxhashjs": "^0.2.2"
}, },
"peerDependencies": { "peerDependencies": {
"@polkadot/util": "5.9.2" "@polkadot/util": "6.0.4"
} }
} }
+1
View File
@@ -16,6 +16,7 @@ export * from './crypto';
export * from './ethereum'; export * from './ethereum';
export * from './hd'; export * from './hd';
export * from './hmac'; export * from './hmac';
export * from './json';
export * from './keccak'; export * from './keccak';
export * from './key'; export * from './key';
export * from './mnemonic'; export * from './mnemonic';
@@ -0,0 +1,11 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding, EncryptedJsonVersion } from './types';
export const ENCODING: EncryptedJsonEncoding[] = ['scrypt', 'xsalsa20-poly1305'];
export const ENCODING_NONE: EncryptedJsonEncoding[] = ['none'];
export const ENCODING_VERSION: EncryptedJsonVersion = '3';
export const NONCE_LENGTH = 24;
export const SCRYPT_LENGTH = 32 + (3 * 4);
+23
View File
@@ -0,0 +1,23 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJson } from './types';
import { assert, hexToU8a, isHex } from '@polkadot/util';
import { base64Decode } from '../base64';
import { jsonDecryptData } from './decryptData';
export function jsonDecrypt ({ encoded, encoding }: EncryptedJson, passphrase?: string | null): Uint8Array {
assert(encoded, 'No encrypted data available to decode');
return jsonDecryptData(
isHex(encoded)
? hexToU8a(encoded)
: base64Decode(encoded),
passphrase,
Array.isArray(encoding.type)
? encoding.type
: [encoding.type]
);
}
@@ -0,0 +1,40 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJsonEncoding } from './types';
import { assert, stringToU8a, u8aFixLength } from '@polkadot/util';
import { naclDecrypt } from '../nacl';
import { scryptEncode, scryptFromU8a } from '../scrypt';
import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants';
export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: string | null, encType: EncryptedJsonEncoding[] = ENCODING): Uint8Array {
assert(encrypted, 'No encrypted data available to decode');
assert(passphrase || !encType.includes('xsalsa20-poly1305'), 'Password required to decode encypted data');
let encoded: Uint8Array | null = encrypted;
if (passphrase) {
let password: Uint8Array;
if (encType.includes('scrypt')) {
const { params, salt } = scryptFromU8a(encrypted);
password = scryptEncode(passphrase, salt, params).password;
encrypted = encrypted.subarray(SCRYPT_LENGTH);
} else {
password = stringToU8a(passphrase);
}
encoded = naclDecrypt(
encrypted.subarray(NONCE_LENGTH),
encrypted.subarray(0, NONCE_LENGTH),
u8aFixLength(password, 256, true)
);
}
assert(encoded, 'Unable to decode using the supplied passphrase');
return encoded;
}
+25
View File
@@ -0,0 +1,25 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJson } from './types';
import { u8aConcat } from '@polkadot/util';
import { naclEncrypt } from '../nacl';
import { scryptEncode, scryptToU8a } from '../scrypt';
import { jsonEncryptFormat } from './encryptFormat';
export function jsonEncrypt (data: Uint8Array, contentType: string[], passphrase?: string | null): EncryptedJson {
let isEncrypted = false;
let encoded = data;
if (passphrase) {
const { params, password, salt } = scryptEncode(passphrase);
const { encrypted, nonce } = naclEncrypt(encoded, password.subarray(0, 32));
isEncrypted = true;
encoded = u8aConcat(scryptToU8a(salt, params), nonce, encrypted);
}
return jsonEncryptFormat(encoded, contentType, isEncrypted);
}
@@ -0,0 +1,20 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { EncryptedJson } from './types';
import { base64Encode } from '../base64';
import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants';
export function jsonEncryptFormat (encoded: Uint8Array, contentType: string[], isEncrypted: boolean): EncryptedJson {
return {
encoded: base64Encode(encoded),
encoding: {
content: contentType,
type: isEncrypted
? ENCODING
: ENCODING_NONE,
version: ENCODING_VERSION
}
};
}
+7
View File
@@ -0,0 +1,7 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { jsonDecrypt } from './decrypt';
export { jsonDecryptData } from './decryptData';
export { jsonEncrypt } from './encrypt';
export { jsonEncryptFormat } from './encryptFormat';
+17
View File
@@ -0,0 +1,17 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
export type EncryptedJsonVersion = '0' | '1' | '2' | '3';
export type EncryptedJsonEncoding = 'none' | 'scrypt' | 'xsalsa20-poly1305';
export interface EncryptedJsonDescriptor {
content: string[];
type: EncryptedJsonEncoding | EncryptedJsonEncoding[];
version: EncryptedJsonVersion;
}
export interface EncryptedJson {
encoded: string;
encoding: EncryptedJsonDescriptor;
}
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/util-crypto', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/util-crypto', version: '6.0.4' };
+6 -5
View File
@@ -1,11 +1,12 @@
{ {
"name": "@polkadot/util", "name": "@polkadot/util",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A collection of useful utilities for @polkadot", "description": "A collection of useful utilities for @polkadot",
"main": "index.js", "main": "index.js",
"sideEffects": [ "sideEffects": [
"./detectPackage.js", "./detectPackage.js",
"./detectPackage.mjs" "./detectPackage.cjs"
], ],
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
@@ -15,9 +16,9 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/util#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-textdecoder": "5.9.2", "@polkadot/x-textdecoder": "6.0.4",
"@polkadot/x-textencoder": "5.9.2", "@polkadot/x-textencoder": "6.0.4",
"@types/bn.js": "^4.11.6", "@types/bn.js": "^4.11.6",
"bn.js": "^4.11.9", "bn.js": "^4.11.9",
"camelcase": "^5.3.1", "camelcase": "^5.3.1",
+9 -3
View File
@@ -77,11 +77,17 @@ function noop (): void {
} }
function parseEnv (type: string): [boolean, number] { function parseEnv (type: string): [boolean, number] {
const maxSize = parseInt(process?.env?.DEBUG_MAX || '-1', 10); const env = (typeof process === 'object' ? process : {}).env || {};
const maxSize = parseInt(env.DEBUG_MAX || '-1', 10);
return [ return [
(process?.env?.DEBUG || '').toLowerCase().split(',').some((e) => !!e && (e === '*' || type.startsWith(e))), (env.DEBUG || '')
isNaN(maxSize) ? -1 : maxSize .toLowerCase()
.split(',')
.some((e) => !!e && (e === '*' || type.startsWith(e))),
isNaN(maxSize)
? -1
: maxSize
]; ];
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/util', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/util', version: '6.0.4' };
+4 -3
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-fetch", "name": "@polkadot/x-fetch",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A cross-environment fetch replacement", "description": "A cross-environment fetch replacement",
"browser": "browser.js", "browser": "browser.js",
"main": "node.js", "main": "node.js",
@@ -14,8 +15,8 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-fetch#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-fetch#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-global": "5.9.2", "@polkadot/x-global": "6.0.4",
"@types/node-fetch": "^2.5.8", "@types/node-fetch": "^2.5.8",
"node-fetch": "^2.6.1" "node-fetch": "^2.6.1"
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-fetch authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-fetch', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-fetch', version: '6.0.4' };
+3 -2
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-global", "name": "@polkadot/x-global",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A cross-environment global replacement", "description": "A cross-environment global replacement",
"main": "index.js", "main": "index.js",
"sideEffects": false, "sideEffects": false,
@@ -12,7 +13,7 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-global#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-global#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@types/node-fetch": "^2.5.8", "@types/node-fetch": "^2.5.8",
"node-fetch": "^2.6.1" "node-fetch": "^2.6.1"
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-global authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-global', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-global', version: '6.0.4' };
+4 -3
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-randomvalues", "name": "@polkadot/x-randomvalues",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A cross-environment window.crypto.getRandomValues replacement", "description": "A cross-environment window.crypto.getRandomValues replacement",
"browser": "browser.js", "browser": "browser.js",
"main": "node.js", "main": "node.js",
@@ -14,8 +15,8 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-randomvalues#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-randomvalues#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-global": "5.9.2" "@polkadot/x-global": "6.0.4"
}, },
"devDependencies": { "devDependencies": {
"@types/react-native": "^0.63.50" "@types/react-native": "^0.63.50"
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-randomvalues authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-randomvalues', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-randomvalues', version: '6.0.4' };
+11 -2
View File
@@ -1,9 +1,18 @@
{ {
"name": "@polkadot/x-rxjs", "name": "@polkadot/x-rxjs",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A pass-through interface for RxJs (allowing node + mjs usage)", "description": "A pass-through interface for RxJs (allowing node + mjs usage)",
"main": "index.js", "main": "index.js",
"sideEffects": false, "sideEffects": false,
"exports": {
".": {
"node": "./index.js"
},
"./operators": {
"node": "./operators.js"
}
},
"author": "Jaco Greeff <jacogr@gmail.com>", "author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [], "maintainers": [],
"contributors": [], "contributors": [],
@@ -12,7 +21,7 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-rxjs#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-rxjs#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"rxjs": "^6.6.6" "rxjs": "^6.6.6"
} }
} }
@@ -2,12 +2,7 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// This is not great, but while having esm files, rxjs doesn't quite play nicely with // This is not great, but while having esm files, rxjs doesn't quite play nicely with
// Node.js mjs files. (Hopefully this improves in 7.0, although no exports map as of yet) // Node.js esm files. (Hopefully this improves in 7.0, although no exports map as of yet)
//
// Generated via s/export \{ (.*) \} from .*/exports.$1 = rxjs.$1;/ on rxjs/_esm
// This is or our builder
// @polkadot/dev: exports-node
const rxjs = require('rxjs'); const rxjs = require('rxjs');
@@ -2,12 +2,7 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// This is not great, but while having esm files, rxjs doesn't quite play nicely with // This is not great, but while having esm files, rxjs doesn't quite play nicely with
// Node.js mjs files. (Hopefully this improves in 7.0, although no exports map as of yet) // Node.js esm files. (Hopefully this improves in 7.0, although no exports map as of yet)
//
// Generated via s/export \{ (.*) \} from .*/exports.$1 = rxjs.$1;/ on rxjs/_esm
// This is or our builder, to add the correct exports entry
// @polkadot/dev: exports-node
const operators = require('rxjs/operators'); const operators = require('rxjs/operators');
+3
View File
@@ -0,0 +1,3 @@
{
"type": "commonjs"
}
-4
View File
@@ -1,4 +0,0 @@
// Copyright 2017-2021 @polkadot/x-rxjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { animationFrame, animationFrameScheduler, ArgumentOutOfRangeError, asap, asapScheduler, async, asyncScheduler, AsyncSubject, BehaviorSubject, bindCallback, bindNodeCallback, combineLatest, concat, config, ConnectableObservable, defer, EMPTY, empty, EmptyError, forkJoin, from, fromEvent, fromEventPattern, generate, GroupedObservable, identity, iif, interval, isObservable, merge, NEVER, never, noop, Notification, NotificationKind, ObjectUnsubscribedError, Observable, observable, of, onErrorResumeNext, pairs, partition, pipe, queue, queueScheduler, race, range, ReplaySubject, scheduled, Scheduler, Subject, Subscriber, Subscription, throwError, TimeoutError, timer, UnsubscriptionError, using, VirtualAction, VirtualTimeScheduler, zip } from 'rxjs/_esm5/index.js';
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/x-rxjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './cjs/index.js';
-4
View File
@@ -1,4 +0,0 @@
// Copyright 2017-2021 @polkadot/x-rxjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { audit, auditTime, buffer, bufferCount, bufferTime, bufferToggle, bufferWhen, catchError, combineAll, combineLatest, concat, concatAll, concatMap, concatMapTo, count, debounce, debounceTime, defaultIfEmpty, delay, delayWhen, dematerialize, distinct, distinctUntilChanged, distinctUntilKeyChanged, elementAt, endWith, every, exhaust, exhaustMap, expand, filter, finalize, find, findIndex, first, flatMap, groupBy, ignoreElements, isEmpty, last, map, mapTo, materialize, max, merge, mergeAll, mergeMap, mergeMapTo, mergeScan, min, multicast, observeOn, onErrorResumeNext, pairwise, partition, pluck, publish, publishBehavior, publishLast, publishReplay, race, reduce, refCount, repeat, repeatWhen, retry, retryWhen, sample, sampleTime, scan, sequenceEqual, share, shareReplay, single, skip, skipLast, skipUntil, skipWhile, startWith, subscribeOn, switchAll, switchMap, switchMapTo, take, takeLast, takeUntil, takeWhile, tap, throttle, throttleTime, throwIfEmpty, timeInterval, timeout, timeoutWith, timestamp, toArray, window, windowCount, windowTime, windowToggle, windowWhen, withLatestFrom, zip, zipAll } from 'rxjs/_esm5/operators/index.js';
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/x-rxjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './cjs/operators.js';
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-rxjs authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-rxjs', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-rxjs', version: '6.0.4' };
+4 -3
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-textdecoder", "name": "@polkadot/x-textdecoder",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A TextDecoder replacement", "description": "A TextDecoder replacement",
"browser": "browser.js", "browser": "browser.js",
"main": "node.js", "main": "node.js",
@@ -14,7 +15,7 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textdecoder#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textdecoder#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-global": "5.9.2" "@polkadot/x-global": "6.0.4"
} }
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-textdecoder authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-textdecoder', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-textdecoder', version: '6.0.4' };
+4 -3
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-textencoder", "name": "@polkadot/x-textencoder",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A TextDecoder replacement", "description": "A TextDecoder replacement",
"browser": "browser.js", "browser": "browser.js",
"main": "node.js", "main": "node.js",
@@ -14,7 +15,7 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textencoder#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textencoder#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-global": "5.9.2" "@polkadot/x-global": "6.0.4"
} }
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-textencoder', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-textencoder', version: '6.0.4' };
+5 -4
View File
@@ -1,6 +1,7 @@
{ {
"name": "@polkadot/x-ws", "name": "@polkadot/x-ws",
"version": "5.9.2", "version": "6.0.4",
"type": "module",
"description": "A cross-environment WebSocket replacement", "description": "A cross-environment WebSocket replacement",
"browser": "browser.js", "browser": "browser.js",
"main": "node.js", "main": "node.js",
@@ -14,9 +15,9 @@
"bugs": "https://github.com/polkadot-js/common/issues", "bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-ws#readme", "homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-ws#readme",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.13.8", "@babel/runtime": "^7.13.9",
"@polkadot/x-global": "5.9.2", "@polkadot/x-global": "6.0.4",
"@types/websocket": "^1.0.1", "@types/websocket": "^1.0.2",
"websocket": "^1.0.33" "websocket": "^1.0.33"
} }
} }
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright 2017-2021 @polkadot/dev authors & contributors // Copyright 2017-2021 @polkadot/x-ws authors & contributors
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Auto-generated by @polkadot/dev, do not edit // Auto-generated by @polkadot/dev, do not edit
export const packageInfo = { name: '@polkadot/x-ws', version: '5.9.2' }; export const packageInfo = { name: '@polkadot/x-ws', version: '6.0.4' };
+312 -310
View File
File diff suppressed because it is too large Load Diff