Compare commits

...
14 Commits
Author SHA1 Message Date
Github Actions 54e6b61972 [CI Skip] release/stable 5.5.1
skip-checks: true
2021-01-31 07:57:36 +00:00
Jaco Greeff c52a7b1e64 5.5 (#862)
* 5.5

* Remove extra arg from mnemonicToLegacySeed
2021-01-31 08:51:43 +01:00
Github Actions 749cd2e381 [CI Skip] release/beta 5.4.5-1
skip-checks: true
2021-01-30 19:07:49 +00:00
Jaco Greeff 24b1790c99 Add hmac{Sha256, 512} (#861)
* Add hmac{Sha256, 512}

* Adjust

* private hmac
2021-01-30 20:02:21 +01:00
Github Actions 62823635b0 [CI Skip] release/beta 5.4.5-0
skip-checks: true
2021-01-30 17:38:17 +00:00
Jaco Greeff bc84220108 Add Ledger-compatible derivation (#860)
* Add Ledger-compatible derivation

* Export hd from root

* Renames
2021-01-30 18:33:15 +01:00
Jaco Greeff 5158951326 Give bot permissions to post issues 2021-01-26 16:36:49 +01:00
Github Actions 500b739ddd [CI Skip] release/stable 5.4.4
skip-checks: true
2021-01-24 15:44:51 +00:00
Jaco Greeff b741d228ac Use xglobal everywhere 2021-01-24 16:40:04 +01:00
Jaco Greeff 437ff8b51d Use x-gobal in node polyfills 2021-01-24 16:39:22 +01:00
Github Actions 354dd0a7a4 [CI Skip] release/stable 5.4.3
skip-checks: true
2021-01-24 15:03:21 +00:00
Jaco Greeff 3804123ca6 Remove browser.ts global reference (#856)
* Remove browser.ts global reference

* fallback text

* formatting

* Additional formatting

* global > self > window > this

* Add x-global package

* Update tests

* Correct jest mapping
2021-01-24 15:58:42 +01:00
Github Actions bbc752e475 [CI Skip] release/stable 5.4.2
skip-checks: true
2021-01-24 11:13:49 +00:00
Jaco Greeff 80f69b88b2 5.4.2 (#855) 2021-01-24 12:09:14 +01:00
47 changed files with 438 additions and 158 deletions
+4
View File
@@ -3,3 +3,7 @@
2.12.2
5.2.2
5.2.3
5.4.2
5.4.3
5.4.4
+1 -1
View File
@@ -19,6 +19,6 @@ jobs:
if: ${{ failure() }}
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
GITHUB_TOKEN: ${{ secrets.GH_PAT_BOT }}
with:
filename: .github/ss58-check.md
+12
View File
@@ -1,5 +1,17 @@
# CHANGELOG
## 5.5.1 Jan 31, 2021
Changes:
- Added `hdLedger` to util-crypto for Ledger-compatible bip32+ed25519 derivation
- Added `hmac{Sha256, 512}` to util-crypto
- Add `slip44` indices for Ledger into `@polkadot/networks`
- Remove `module` entry in `package.json` (only rely on exports map)
- Remove direct references to `global` object, use `@polkadot/x-global`
- Update `@ledgerhq` dependencies to latest
## 5.4.1 Jan 24, 2021
Contributed:
+2
View File
@@ -14,6 +14,7 @@ module.exports = Object.assign({}, config, {
// eslint-disable-next-line sort-keys
'@polkadot/util(.*)$': '<rootDir>/packages/util/src/$1',
'@polkadot/x-(fetch|randomvalues|textdecoder|textencoder|ws)(.*)$': '<rootDir>/packages/x-$1/src/node',
'@polkadot/x-global(.*)$': '<rootDir>/packages/x-global/src/$1',
'@polkadot/x-rxjs(.*)$': '<rootDir>/packages/x-rxjs/src/$1'
},
modulePathIgnorePatterns: [
@@ -24,6 +25,7 @@ module.exports = Object.assign({}, config, {
'<rootDir>/packages/util/build',
'<rootDir>/packages/util-crypto/build',
'<rootDir>/packages/x-fetch/build',
'<rootDir>/packages/x-global/build',
'<rootDir>/packages/x-randomvalues/build',
'<rootDir>/packages/x-rxjs/build',
'<rootDir>/packages/x-textdecoder/build',
+1 -1
View File
@@ -25,5 +25,5 @@
"@polkadot/ts": "^0.3.59",
"@types/jest": "^26.0.20"
},
"version": "5.4.1"
"version": "5.5.1"
}
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/hw-ledger-transports",
"version": "5.4.1",
"version": "5.5.1",
"repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
@@ -12,13 +12,13 @@
"sideEffects": false,
"dependencies": {
"@babel/runtime": "^7.12.5",
"@ledgerhq/hw-transport-webusb": "^5.40.0"
"@ledgerhq/hw-transport-webusb": "^5.41.0"
},
"devDependencies": {
"@types/ledgerhq__hw-transport-node-hid": "^4.22.2",
"@types/ledgerhq__hw-transport-webusb": "^4.70.1"
},
"optionalDependencies": {
"@ledgerhq/hw-transport-node-hid-singleton": "^5.40.0"
"@ledgerhq/hw-transport-node-hid-singleton": "^5.41.0"
}
}
+3 -4
View File
@@ -1,18 +1,17 @@
{
"name": "@polkadot/hw-ledger",
"version": "5.4.1",
"version": "5.5.1",
"repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"main": "index.js",
"module": "index.mjs",
"sideEffects": false,
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/hw-ledger-transports": "5.4.1",
"@polkadot/util": "^5.4.1",
"@polkadot/hw-ledger-transports": "5.5.1",
"@polkadot/util": "^5.5.1",
"@zondax/ledger-polkadot": "^0.13.0"
}
}
+5 -6
View File
@@ -1,13 +1,12 @@
{
"name": "@polkadot/keyring",
"version": "5.4.1",
"version": "5.5.1",
"description": "Keyring management",
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"main": "index.js",
"module": "index.mjs",
"sideEffects": [
"./detectPackage.js",
"./detectPackage.mjs"
@@ -17,11 +16,11 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/util": "5.4.1",
"@polkadot/util-crypto": "5.4.1"
"@polkadot/util": "5.5.1",
"@polkadot/util-crypto": "5.5.1"
},
"peerDependencies": {
"@polkadot/util": "5.4.1",
"@polkadot/util-crypto": "5.4.1"
"@polkadot/util": "5.5.1",
"@polkadot/util-crypto": "5.5.1"
}
}
+3 -4
View File
@@ -1,9 +1,8 @@
{
"name": "@polkadot/networks",
"version": "5.4.1",
"version": "5.5.1",
"description": "A list of all available Substrate networks and their applicable prefixes",
"main": "index.js",
"module": "index.mjs",
"sideEffects": false,
"repository": "github:polkadot-js/common",
"author": "Jaco Greeff <jacogr@gmail.com>",
@@ -16,7 +15,7 @@
"@babel/runtime": "^7.12.5"
},
"devDependencies": {
"@polkadot/util": "5.4.1",
"@polkadot/x-fetch": "5.4.1"
"@polkadot/util": "5.5.1",
"@polkadot/x-fetch": "5.5.1"
}
}
+4
View File
@@ -36,6 +36,7 @@ const all: NetworkFromSubstrate[] = [
icon: 'polkadot',
network: 'polkadot',
prefix: 0,
slip44: 0x00000162,
standardAccount: '*25519',
symbols: ['DOT'],
website: 'https://polkadot.network'
@@ -53,6 +54,7 @@ const all: NetworkFromSubstrate[] = [
icon: 'polkadot',
network: 'kusama',
prefix: 2,
slip44: 0x000001b2,
standardAccount: '*25519',
symbols: ['KSM'],
website: 'https://kusama.network'
@@ -139,6 +141,7 @@ const all: NetworkFromSubstrate[] = [
hasLedgerSupport: true,
network: 'polymesh',
prefix: 12,
slip44: 0x00000253,
standardAccount: '*25519',
symbols: ['POLYX'],
website: 'https://polymath.network/'
@@ -234,6 +237,7 @@ const all: NetworkFromSubstrate[] = [
hasLedgerSupport: true,
network: 'dock-mainnet',
prefix: 22,
slip44: 0x00000252,
standardAccount: '*25519',
symbols: ['DCK'],
website: 'https://dock.io'
+1
View File
@@ -12,6 +12,7 @@ export interface NetworkFromSubstrate {
hasLedgerSupport?: boolean;
icon?: Icon | null;
isIgnored?: boolean;
slip44?: number;
standardAccount: '*25519' | null;
symbols: string[] | null;
website: string | null;
+6 -7
View File
@@ -1,9 +1,8 @@
{
"name": "@polkadot/util-crypto",
"version": "5.4.1",
"version": "5.5.1",
"description": "A collection of useful crypto utilities for @polkadot",
"main": "index.js",
"module": "index.mjs",
"sideEffects": [
"./detectPackage.js",
"./detectPackage.mjs"
@@ -17,10 +16,10 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util-crypto#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/networks": "5.4.1",
"@polkadot/util": "5.4.1",
"@polkadot/wasm-crypto": "^3.2.1",
"@polkadot/x-randomvalues": "5.4.1",
"@polkadot/networks": "5.5.1",
"@polkadot/util": "5.5.1",
"@polkadot/wasm-crypto": "^3.2.2",
"@polkadot/x-randomvalues": "5.5.1",
"base-x": "^3.0.8",
"blakejs": "^1.1.0",
"bn.js": "^4.11.9",
@@ -40,6 +39,6 @@
"@types/xxhashjs": "^0.2.2"
},
"peerDependencies": {
"@polkadot/util": "5.4.1"
"@polkadot/util": "5.5.1"
}
}
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { hdLedger } from './ledger';
@@ -0,0 +1,34 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import BN from 'bn.js';
import { bnToU8a, u8aConcat } from '@polkadot/util';
import { hmacSha512 } from '../../hmac';
// performs hard-only derivation on the xprv
export function ledgerDerivePrivate (xprv: Uint8Array, index: number): Uint8Array {
const kl = xprv.slice(0, 32);
const kr = xprv.slice(32, 64);
const cc = xprv.slice(64, 96);
const data = new Uint8Array(1 + 64 + 4);
data.set(bnToU8a(index, { bitLength: 32, isLe: true }), 1 + 64);
data.set(kl, 1);
data.set(kr, 1 + 32);
data[0] = 0x00;
const z = hmacSha512(cc, data);
data[0] = 0x01;
const chainCode = hmacSha512(cc, data).slice(32, 64);
const zl = z.slice(0, 32);
const zr = z.slice(32, 64);
const left = bnToU8a(new BN(kl, 16, 'le').add(new BN(zl.slice(0, 28), 16, 'le').mul(new BN(8))), { bitLength: 512, isLe: true }).slice(0, 32);
const right = bnToU8a(new BN(kr, 16, 'le').add(new BN(zr, 16, 'le')), { bitLength: 512, isLe: true }).slice(0, 32);
return u8aConcat(left, right, chainCode);
}
@@ -0,0 +1,24 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { u8aToHex } from '@polkadot/util';
import { hdLedger } from '..';
describe('ledgerDerive', (): void => {
it('derives a known private key for Kusama', (): void => {
expect(u8aToHex(
hdLedger('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about', `m/44'/${0x01b2}'/0'/0'/0'`)
.secretKey
.slice(0, 32)
)).toEqual('0x98cb4e14e0e08ea876f88d728545ea7572dc07dbbe69f1731c418fb827e69d41');
});
it('derives a known private key for Polkadot', (): void => {
expect(u8aToHex(
hdLedger('abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about', `m/44'/${0x80000162}/0'/0'/0'`)
.secretKey
.slice(0, 32)
)).toEqual('0xe8c68348586d53e4e8d1a864b0e4e17c75e4eb06e0c63c1432bef2ba29e69d41');
});
});
@@ -0,0 +1,29 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Keypair } from '../../types';
import { assert } from '@polkadot/util';
import { mnemonicValidate } from '../../mnemonic';
import { naclKeypairFromSeed } from '../../nacl';
import { ledgerDerivePrivate } from './derivePrivate';
import { ledgerMaster } from './master';
import { ledgerValidatePath } from './validatePath';
const HARDENED = 0x80000000;
export function hdLedger (mnemonic: string, path: string): Keypair {
assert(mnemonicValidate(mnemonic), 'Invalid mnemonic passed to ledger derivation');
assert(ledgerValidatePath(path), 'Invalid derivation path');
return naclKeypairFromSeed(
path
.split('/')
.slice(1)
.map((n) => parseInt(n.replace("'", ''), 10))
.map((n) => (n < HARDENED) ? (n + HARDENED) : n)
.reduce((x, n) => ledgerDerivePrivate(x, n), ledgerMaster(mnemonic))
.slice(0, 32)
);
}
@@ -0,0 +1,17 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { u8aToHex } from '@polkadot/util';
import { ledgerMaster } from './master';
const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
const XPRV = '0x402b03cd9c8bed9ba9f9bd6cd9c315ce9fcc59c7c25d37c85a36096617e69d418e35cb4a3b737afd007f0688618f21a8831643c0e6c77fc33c06026d2a0fc93832596435e70647d7d98ef102a32ea40319ca8fb6c851d7346d3bd8f9d1492658';
describe('ledgerDerive', (): void => {
it('derives a known master xprv', (): void => {
expect(u8aToHex(
ledgerMaster(MNEMONIC)
)).toEqual(XPRV);
});
});
@@ -0,0 +1,31 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { u8aConcat } from '@polkadot/util';
import { hmacSha256, hmacSha512 } from '../../hmac';
import { mnemonicToSeedSync } from '../../mnemonic/bip39';
const ED25519_CRYPTO = 'ed25519 seed';
// gets an xprv from a mnemonic
export function ledgerMaster (mnemonic: string): Uint8Array {
const seed = mnemonicToSeedSync(mnemonic);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const chainCode = hmacSha256(ED25519_CRYPTO, new Uint8Array([1, ...seed]));
let priv;
while (!priv || (priv[31] & 0b0010_0000)) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
priv = hmacSha512(ED25519_CRYPTO, priv || seed);
}
priv[0] &= 0b1111_1000;
priv[31] &= 0b0111_1111;
priv[31] |= 0b0100_0000;
return u8aConcat(priv, chainCode);
}
@@ -0,0 +1,14 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
export function ledgerValidatePath (path: string): boolean {
if (!path.startsWith('m/')) {
return false;
}
return !path
.split('/')
.slice(1)
.map((n) => parseInt(n.replace("'", ''), 10))
.some((n) => isNaN(n));
}
+5
View File
@@ -0,0 +1,5 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { hmacSha256 } from './sha256';
export { hmacSha512 } from './sha512';
+14
View File
@@ -0,0 +1,14 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import hash from 'hash.js';
export function hmacSha256 (key: Uint8Array | string, data: Uint8Array): Uint8Array {
return Uint8Array.from(
hash
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
.hmac(hash.sha256, key)
.update(data)
.digest());
}
+14
View File
@@ -0,0 +1,14 @@
// Copyright 2017-2021 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import hash from 'hash.js';
export function hmacSha512 (key: Uint8Array | string, data: Uint8Array): Uint8Array {
return Uint8Array.from(
hash
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
.hmac(hash.sha512, key)
.update(data)
.digest());
}
+2
View File
@@ -12,6 +12,8 @@ export * from './base64';
export * from './blake2';
export * from './crypto';
export * from './ethereum';
export * from './hd';
export * from './hmac';
export * from './keccak';
export * from './key';
export * from './mnemonic';
+4 -8
View File
@@ -3,10 +3,10 @@
// Adapted from https://gist.github.com/calvinmetcalf/91e8e84dc63c75f2aa53
import hash from 'hash.js';
import { u8aConcat } from '@polkadot/util';
import { hmacSha512 } from '../hmac';
export function pbkdf2Sync (password: Uint8Array, salt: Uint8Array, rounds: number, len = 64): Uint8Array {
let out = new Uint8Array();
let num = 0;
@@ -16,16 +16,12 @@ export function pbkdf2Sync (password: Uint8Array, salt: Uint8Array, rounds: numb
num++;
block.writeUInt32BE(num, salt.length);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
let prev = hash.hmac(hash.sha512, password).update(block).digest();
let prev = hmacSha512(password, block);
const md = prev;
let i = 0;
while (++i < rounds) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
prev = hash.hmac(hash.sha512, password).update(prev).digest();
prev = hmacSha512(password, prev);
let j = -1;
+3 -4
View File
@@ -1,9 +1,8 @@
{
"name": "@polkadot/util",
"version": "5.4.1",
"version": "5.5.1",
"description": "A collection of useful utilities for @polkadot",
"main": "index.js",
"module": "index.mjs",
"sideEffects": false,
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
@@ -14,8 +13,8 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/x-textdecoder": "5.4.1",
"@polkadot/x-textencoder": "5.4.1",
"@polkadot/x-textdecoder": "5.5.1",
"@polkadot/x-textencoder": "5.5.1",
"@types/bn.js": "^4.11.6",
"bn.js": "^4.11.9",
"camelcase": "^5.3.1",
+4 -5
View File
@@ -1,6 +1,8 @@
// Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { xglobal } from '@polkadot/x-global';
import { isFunction } from './is/function';
import { isString } from './is/string';
import { assert } from './assert';
@@ -22,8 +24,7 @@ interface PjsChecks extends This {
__polkadotjs: Record<string, VersionPath[]>;
}
type PjsGlobal = NodeJS.Global & PjsChecks;
type PjsWindow = Window & PjsChecks;
type PjsWindow = (Window & This) & PjsChecks;
type FnString = () => string | undefined;
/** @internal */
@@ -33,9 +34,7 @@ function expandPath (path?: string): string {
/** @internal */
function getEntry (name: string): VersionPath[] {
const _global = typeof window !== 'undefined'
? window as PjsWindow
: global as PjsGlobal;
const _global = xglobal as PjsWindow;
if (!_global.__polkadotjs) {
_global.__polkadotjs = {};
+2 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-fetch",
"version": "5.4.1",
"version": "5.5.1",
"description": "A cross-environment fetch replacement",
"browser": "browser.js",
"main": "node.js",
@@ -15,6 +15,7 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-fetch#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/x-global": "5.5.1",
"@types/node-fetch": "^2.5.8",
"node-fetch": "^2.6.1"
}
+3 -1
View File
@@ -1,4 +1,6 @@
// Copyright 2017-2021 @polkadot/x-fetch authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const fetch = global.fetch;
import { xglobal } from '@polkadot/x-global';
export const fetch = xglobal.fetch;
+4 -2
View File
@@ -3,6 +3,8 @@
import nodeFetch from 'node-fetch';
export const fetch = typeof global.fetch === 'undefined'
import { xglobal } from '@polkadot/x-global';
export const fetch = typeof xglobal.fetch === 'undefined'
? nodeFetch as unknown as typeof global.fetch
: global.fetch;
: xglobal.fetch;
+11
View File
@@ -0,0 +1,11 @@
# @polkadot/x-global
A cross-environment global object. checks for global > self > window > this.
Install it via `yarn add @polkadot/x-fetch`
```js
import { xglobal } from '@polkadot/x-global';
console.log(typeof xglobal.TextEncoder);
```
+19
View File
@@ -0,0 +1,19 @@
{
"name": "@polkadot/x-global",
"version": "5.5.1",
"description": "A cross-environment global replacement",
"main": "index.js",
"sideEffects": false,
"author": "Jaco Greeff <jacogr@gmail.com>",
"maintainers": [],
"contributors": [],
"license": "Apache-2.0",
"repository": "github:polkadot-js/common",
"bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-global#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@types/node-fetch": "^2.5.8",
"node-fetch": "^2.6.1"
}
}
+10
View File
@@ -0,0 +1,10 @@
// Copyright 2017-2021 @polkadot/x-fetch authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const xglobal = typeof global !== 'undefined'
? global
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: this as unknown as (Window & typeof globalThis);
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-randomvalues",
"version": "5.4.1",
"version": "5.5.1",
"description": "A cross-environment window.crypto.getRandomValues replacement",
"browser": "browser.js",
"main": "node.js",
@@ -14,7 +14,8 @@
"bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-randomvalues#readme",
"dependencies": {
"@babel/runtime": "^7.12.5"
"@babel/runtime": "^7.12.5",
"@polkadot/x-global": "5.5.1"
},
"devDependencies": {
"@types/react-native": "^0.63.46"
+1 -1
View File
@@ -9,7 +9,7 @@ let warned = false;
export function insecureRandomValues <T extends Uint8Array> (arr: T): T {
if (!warned) {
console.warn('Using an insecure random number generator, this should only happen when running in a debugger without support for crypto.getRandomValues');
console.warn('Using an insecure random number generator, this should only happen when running in a debugger without support for crypto');
warned = true;
}
+4 -2
View File
@@ -7,6 +7,8 @@
import { NativeModules } from 'react-native';
import { xglobal } from '@polkadot/x-global';
import { insecureRandomValues } from './fallback';
interface RNExt {
@@ -29,9 +31,9 @@ function getRandomValuesGlobal <T extends Uint8Array> (arr: T): T {
return crypto.getRandomValues(arr);
}
export const getRandomValues = typeof global.crypto === 'object' && typeof global.crypto.getRandomValues === 'function'
export const getRandomValues = typeof xglobal.crypto === 'object' && typeof xglobal.crypto.getRandomValues === 'function'
? getRandomValuesGlobal
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-explicit-any
: (typeof (global as any).nativeCallSyncHook === 'undefined' || !NativeModules.ExpoRandom)
: (typeof (xglobal as any).nativeCallSyncHook === 'undefined' || !NativeModules.ExpoRandom)
? insecureRandomValues
: getRandomValuesNative;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-rxjs",
"version": "5.4.1",
"version": "5.5.1",
"description": "A pass-through interface for RxJs (allowing node + mjs usage)",
"main": "index.js",
"sideEffects": false,
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-textdecoder",
"version": "5.4.1",
"version": "5.5.1",
"description": "A TextDecoder replacement",
"browser": "browser.js",
"main": "node.js",
@@ -14,6 +14,7 @@
"bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textdecoder#readme",
"dependencies": {
"@babel/runtime": "^7.12.5"
"@babel/runtime": "^7.12.5",
"@polkadot/x-global": "5.5.1"
}
}
+5 -3
View File
@@ -1,8 +1,10 @@
// Copyright 2017-2021 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { xglobal } from '@polkadot/x-global';
import { TextDecoder as Fallback } from './fallback';
export const TextDecoder = typeof global.TextDecoder === 'undefined'
? Fallback as unknown as typeof global.TextDecoder
: global.TextDecoder;
export const TextDecoder = typeof xglobal.TextDecoder === 'undefined'
? Fallback as unknown as typeof xglobal.TextDecoder
: xglobal.TextDecoder;
+5 -3
View File
@@ -3,6 +3,8 @@
import util from 'util';
export const TextDecoder = typeof global.TextDecoder === 'undefined'
? util.TextDecoder as unknown as typeof global.TextDecoder
: global.TextDecoder;
import { xglobal } from '@polkadot/x-global';
export const TextDecoder = typeof xglobal.TextDecoder === 'undefined'
? util.TextDecoder as unknown as typeof xglobal.TextDecoder
: xglobal.TextDecoder;
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-textencoder",
"version": "5.4.1",
"version": "5.5.1",
"description": "A TextDecoder replacement",
"browser": "browser.js",
"main": "node.js",
@@ -14,6 +14,7 @@
"bugs": "https://github.com/polkadot-js/common/issues",
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-textencoder#readme",
"dependencies": {
"@babel/runtime": "^7.12.5"
"@babel/runtime": "^7.12.5",
"@polkadot/x-global": "5.5.1"
}
}
+5 -3
View File
@@ -1,8 +1,10 @@
// Copyright 2017-2021 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { xglobal } from '@polkadot/x-global';
import { TextEncoder as Fallback } from './fallback';
export const TextEncoder = typeof global.TextEncoder === 'undefined'
? Fallback as unknown as typeof global.TextEncoder
: global.TextEncoder;
export const TextEncoder = typeof xglobal.TextEncoder === 'undefined'
? Fallback as unknown as typeof xglobal.TextEncoder
: xglobal.TextEncoder;
+5 -3
View File
@@ -3,6 +3,8 @@
import util from 'util';
import { xglobal } from '@polkadot/x-global';
class NodeFallback {
#encoder: util.TextEncoder;
@@ -18,6 +20,6 @@ class NodeFallback {
}
}
export const TextEncoder = typeof global.TextEncoder === 'undefined'
? NodeFallback as unknown as typeof global.TextEncoder
: global.TextEncoder;
export const TextEncoder = typeof xglobal.TextEncoder === 'undefined'
? NodeFallback as unknown as typeof xglobal.TextEncoder
: xglobal.TextEncoder;
+2 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/x-ws",
"version": "5.4.1",
"version": "5.5.1",
"description": "A cross-environment WebSocket replacement",
"browser": "browser.js",
"main": "node.js",
@@ -15,6 +15,7 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/x-ws#readme",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@polkadot/x-global": "5.5.1",
"@types/websocket": "^1.0.1",
"websocket": "^1.0.33"
}
+3 -1
View File
@@ -1,4 +1,6 @@
// Copyright 2017-2021 @polkadot/x-ws authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const WebSocket = global.WebSocket;
import { xglobal } from '@polkadot/x-global';
export const WebSocket = xglobal.WebSocket;
+5 -3
View File
@@ -3,6 +3,8 @@
import ws from 'websocket';
export const WebSocket = typeof global.WebSocket === 'undefined'
? ws.w3cwebsocket as unknown as typeof global.WebSocket
: global.WebSocket;
import { xglobal } from '@polkadot/x-global';
export const WebSocket = typeof xglobal.WebSocket === 'undefined'
? ws.w3cwebsocket as unknown as typeof xglobal.WebSocket
: xglobal.WebSocket;
+1
View File
@@ -20,6 +20,7 @@
"@polkadot/util": [ "packages/util/src" ],
"@polkadot/util/*": [ "packages/util/src/*" ],
"@polkadot/x-fetch": [ "packages/x-fetch/src/browser" ],
"@polkadot/x-global": [ "packages/x-global/src" ],
"@polkadot/x-randomvalues": [ "packages/x-randomvalues/src/browser" ],
"@polkadot/x-rxjs": ["packages/x-rxjs/src"],
"@polkadot/x-rxjs/*": ["packages/x-rxjs/src/*"],
+99 -84
View File
@@ -1571,81 +1571,81 @@ __metadata:
languageName: node
linkType: hard
"@ledgerhq/devices@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/devices@npm:5.40.0"
"@ledgerhq/devices@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/devices@npm:5.41.0"
dependencies:
"@ledgerhq/errors": ^5.40.0
"@ledgerhq/logs": ^5.40.0
"@ledgerhq/errors": ^5.41.0
"@ledgerhq/logs": ^5.41.0
rxjs: ^6.6.3
semver: ^7.3.4
checksum: da8f5f0b8ac11b6de2e07c2f8ce27ce9044848db33482562ba807dd1673eab8078eb93f1c0cc3e4cd1188db7efdd4d4feae23f5e9e9552abd90563676921637a
checksum: 5f1ff31df030b86789d746d1c6db7bb884b8ca8b884353b56322915a432e5ec24d8f3f0285ee046f7d6b914c7f9d1272e7875de8985add7010d4244b81cb99b5
languageName: node
linkType: hard
"@ledgerhq/errors@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/errors@npm:5.40.0"
checksum: d3e06307c64982080912e284fe74acabe0b5a876473e6d19b9d828f33a20abd099c9de1dfe3922a6e19934b22ad357dfe018d8d4d8ee7c28a2b42fb7fa96b124
"@ledgerhq/errors@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/errors@npm:5.41.0"
checksum: f06e63e1f96fcb89f718ae617b31ec4d0ea83d82dafc92125beebcee0759dfe1fd32b7a72f6b7e656d57a93637f2417743b04adf77a84d2a27f4cd75ac158c25
languageName: node
linkType: hard
"@ledgerhq/hw-transport-node-hid-noevents@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/hw-transport-node-hid-noevents@npm:5.40.0"
"@ledgerhq/hw-transport-node-hid-noevents@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/hw-transport-node-hid-noevents@npm:5.41.0"
dependencies:
"@ledgerhq/devices": ^5.40.0
"@ledgerhq/errors": ^5.40.0
"@ledgerhq/hw-transport": ^5.40.0
"@ledgerhq/logs": ^5.40.0
"@ledgerhq/devices": ^5.41.0
"@ledgerhq/errors": ^5.41.0
"@ledgerhq/hw-transport": ^5.41.0
"@ledgerhq/logs": ^5.41.0
node-hid: 2.1.1
checksum: 1eb4d0c23a261c73e6d5bd5ffd5340d249f8d4dac7f37b3ab63ef916f1d56e1f9829115dfa5f64e427b18314b85868e93adfa86814aec56296adbbff5cba4370
checksum: 791d7bac6e76d26cb47959addf2ab6228f4d9c52777a18509552ff3aca71bf63bdf98dd43f73b545b64b368c6bf297d7ed74207cf26c8aecce6344bf3aeb9c01
languageName: node
linkType: hard
"@ledgerhq/hw-transport-node-hid-singleton@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/hw-transport-node-hid-singleton@npm:5.40.0"
"@ledgerhq/hw-transport-node-hid-singleton@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/hw-transport-node-hid-singleton@npm:5.41.0"
dependencies:
"@ledgerhq/devices": ^5.40.0
"@ledgerhq/errors": ^5.40.0
"@ledgerhq/hw-transport": ^5.40.0
"@ledgerhq/hw-transport-node-hid-noevents": ^5.40.0
"@ledgerhq/logs": ^5.40.0
"@ledgerhq/devices": ^5.41.0
"@ledgerhq/errors": ^5.41.0
"@ledgerhq/hw-transport": ^5.41.0
"@ledgerhq/hw-transport-node-hid-noevents": ^5.41.0
"@ledgerhq/logs": ^5.41.0
lodash: ^4.17.20
node-hid: 2.1.1
usb-detection: ^4.10.0
checksum: d00b53fb243966a81eef7f6be27d01980a7fd30fddb6283c97e6d53d6fcaf4e6afc985318f062479cd4255dd12f3d84bcecea2556c0ed878ed9c3baa5ff982a5
checksum: 2775d1dc3463dab6c13c57eb11830e6dbe1507c20793cc9f499d09a948d82efcfb0f3b2fb695d7885a9f2553390c6ea21c2fe9dcd7c930a2ed3d82792d647a15
languageName: node
linkType: hard
"@ledgerhq/hw-transport-webusb@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/hw-transport-webusb@npm:5.40.0"
"@ledgerhq/hw-transport-webusb@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/hw-transport-webusb@npm:5.41.0"
dependencies:
"@ledgerhq/devices": ^5.40.0
"@ledgerhq/errors": ^5.40.0
"@ledgerhq/hw-transport": ^5.40.0
"@ledgerhq/logs": ^5.40.0
checksum: 88f30b9c1497ee280c36caf2179d8c3cbfddb7f8559c99f67b2b9321aaf5212e9b210cd2bc417f7a75698f6944d593e88d134e5905ffa9e6e33b6e2135c2a516
"@ledgerhq/devices": ^5.41.0
"@ledgerhq/errors": ^5.41.0
"@ledgerhq/hw-transport": ^5.41.0
"@ledgerhq/logs": ^5.41.0
checksum: 9ab9c689068b1c4e7fae600bf4b98f786eb5ca37daad6e6c25911bde57c532cc965d897fa6922b6e7cf8e37610c363515a9db4c7631e3ed5d33a00b1e1c86121
languageName: node
linkType: hard
"@ledgerhq/hw-transport@npm:^5.38.0, @ledgerhq/hw-transport@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/hw-transport@npm:5.40.0"
"@ledgerhq/hw-transport@npm:^5.38.0, @ledgerhq/hw-transport@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/hw-transport@npm:5.41.0"
dependencies:
"@ledgerhq/devices": ^5.40.0
"@ledgerhq/errors": ^5.40.0
"@ledgerhq/devices": ^5.41.0
"@ledgerhq/errors": ^5.41.0
events: ^3.2.0
checksum: 115846866712b2d65e131a09a561d141897b107e65b13500082004e55ae003b5d9724d0610e5010959b1a7ccea809fffb7ba6d66968b209af980ff62e0a57287
checksum: 46dbc86686dd70ea29b6fb46a8c6dd5cd308ebdd02bc6065302f39471fc7b966f69d2b1ced42a2c759fc11d30f85fc64401681b569ce99720102df418bf045bd
languageName: node
linkType: hard
"@ledgerhq/logs@npm:^5.40.0":
version: 5.40.0
resolution: "@ledgerhq/logs@npm:5.40.0"
checksum: 315aba8e7bbb62945c89d0137bd6f466ba0caf560fecf096caf9e8d3d78e2690576a28e595cffbb90cfc57a2adb35e5fcfa2efe630e298ef1a2b41f39bcc955f
"@ledgerhq/logs@npm:^5.41.0":
version: 5.41.0
resolution: "@ledgerhq/logs@npm:5.41.0"
checksum: 83de45a01f5b35b2fdbf23971ce5f5b86553aa44f1fe8a4c186bbef48d1964b4d71a04c5d35d4f583e6923c4d46cb031745dd2277b16c20cd8d06f7a86233b0a
languageName: node
linkType: hard
@@ -1786,13 +1786,13 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/hw-ledger-transports@5.4.1, @polkadot/hw-ledger-transports@workspace:packages/hw-ledger-transports":
"@polkadot/hw-ledger-transports@5.5.1, @polkadot/hw-ledger-transports@workspace:packages/hw-ledger-transports":
version: 0.0.0-use.local
resolution: "@polkadot/hw-ledger-transports@workspace:packages/hw-ledger-transports"
dependencies:
"@babel/runtime": ^7.12.5
"@ledgerhq/hw-transport-node-hid-singleton": ^5.40.0
"@ledgerhq/hw-transport-webusb": ^5.40.0
"@ledgerhq/hw-transport-node-hid-singleton": ^5.41.0
"@ledgerhq/hw-transport-webusb": ^5.41.0
"@types/ledgerhq__hw-transport-node-hid": ^4.22.2
"@types/ledgerhq__hw-transport-webusb": ^4.70.1
dependenciesMeta:
@@ -1806,8 +1806,8 @@ __metadata:
resolution: "@polkadot/hw-ledger@workspace:packages/hw-ledger"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/hw-ledger-transports": 5.4.1
"@polkadot/util": ^5.4.1
"@polkadot/hw-ledger-transports": 5.5.1
"@polkadot/util": ^5.5.1
"@zondax/ledger-polkadot": ^0.13.0
languageName: unknown
linkType: soft
@@ -1817,21 +1817,21 @@ __metadata:
resolution: "@polkadot/keyring@workspace:packages/keyring"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/util": 5.4.1
"@polkadot/util-crypto": 5.4.1
"@polkadot/util": 5.5.1
"@polkadot/util-crypto": 5.5.1
peerDependencies:
"@polkadot/util": 5.4.1
"@polkadot/util-crypto": 5.4.1
"@polkadot/util": 5.5.1
"@polkadot/util-crypto": 5.5.1
languageName: unknown
linkType: soft
"@polkadot/networks@5.4.1, @polkadot/networks@workspace:packages/networks":
"@polkadot/networks@5.5.1, @polkadot/networks@workspace:packages/networks":
version: 0.0.0-use.local
resolution: "@polkadot/networks@workspace:packages/networks"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/util": 5.4.1
"@polkadot/x-fetch": 5.4.1
"@polkadot/util": 5.5.1
"@polkadot/x-fetch": 5.5.1
languageName: unknown
linkType: soft
@@ -1844,15 +1844,15 @@ __metadata:
languageName: node
linkType: hard
"@polkadot/util-crypto@5.4.1, @polkadot/util-crypto@workspace:packages/util-crypto":
"@polkadot/util-crypto@5.5.1, @polkadot/util-crypto@workspace:packages/util-crypto":
version: 0.0.0-use.local
resolution: "@polkadot/util-crypto@workspace:packages/util-crypto"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/networks": 5.4.1
"@polkadot/util": 5.4.1
"@polkadot/wasm-crypto": ^3.2.1
"@polkadot/x-randomvalues": 5.4.1
"@polkadot/networks": 5.5.1
"@polkadot/util": 5.5.1
"@polkadot/wasm-crypto": ^3.2.2
"@polkadot/x-randomvalues": 5.5.1
"@types/bn.js": ^4.11.6
"@types/create-hash": ^1.2.2
"@types/elliptic": ^6.4.12
@@ -1869,17 +1869,17 @@ __metadata:
tweetnacl: ^1.0.3
xxhashjs: ^0.2.2
peerDependencies:
"@polkadot/util": 5.4.1
"@polkadot/util": 5.5.1
languageName: unknown
linkType: soft
"@polkadot/util@5.4.1, @polkadot/util@^5.4.1, @polkadot/util@workspace:packages/util":
"@polkadot/util@5.5.1, @polkadot/util@^5.5.1, @polkadot/util@workspace:packages/util":
version: 0.0.0-use.local
resolution: "@polkadot/util@workspace:packages/util"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-textdecoder": 5.4.1
"@polkadot/x-textencoder": 5.4.1
"@polkadot/x-textdecoder": 5.5.1
"@polkadot/x-textencoder": 5.5.1
"@types/bn.js": ^4.11.6
bn.js: ^4.11.9
camelcase: ^5.3.1
@@ -1887,41 +1887,52 @@ __metadata:
languageName: unknown
linkType: soft
"@polkadot/wasm-crypto-asmjs@npm:^3.2.1":
version: 3.2.1
resolution: "@polkadot/wasm-crypto-asmjs@npm:3.2.1"
"@polkadot/wasm-crypto-asmjs@npm:^3.2.2":
version: 3.2.2
resolution: "@polkadot/wasm-crypto-asmjs@npm:3.2.2"
dependencies:
"@babel/runtime": ^7.12.5
checksum: 8aa86a954d33a562b6f1efb4beb0fc512f43bc36e5465455b3efd05edbc67626055464c7bec06e6ce2c152a8535988459b89a800b5dc044299c5b24a790ad4cf
checksum: ddeaf412f1312ee4a045d2c94046af3b800330ee8b64e6c89f9a40abb93270a4d7fa19141107a45b84f7f24c93d1ed3c16d3c552c2e3ecdea7662dd0348a46e5
languageName: node
linkType: hard
"@polkadot/wasm-crypto-wasm@npm:^3.2.1":
version: 3.2.1
resolution: "@polkadot/wasm-crypto-wasm@npm:3.2.1"
"@polkadot/wasm-crypto-wasm@npm:^3.2.2":
version: 3.2.2
resolution: "@polkadot/wasm-crypto-wasm@npm:3.2.2"
dependencies:
"@babel/runtime": ^7.12.5
checksum: 974372b4dff99b2ec7620a1ba9bb69e181e30ca0f0e814560311cbbc1d851e820676883c5a73b683eb2b0d82765c3256add074586983aa89b46d0d43c6d14507
checksum: 12ff0ea3c30c731269a1428e92a2e9d9f34ff2cbc5bc5d97a1d762c9fa85acc2027fe44eadc293971976137bd79c508de68b465fffe728d4e557d8f4221efb9e
languageName: node
linkType: hard
"@polkadot/wasm-crypto@npm:^3.2.1":
version: 3.2.1
resolution: "@polkadot/wasm-crypto@npm:3.2.1"
"@polkadot/wasm-crypto@npm:^3.2.2":
version: 3.2.2
resolution: "@polkadot/wasm-crypto@npm:3.2.2"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/wasm-crypto-asmjs": ^3.2.1
"@polkadot/wasm-crypto-wasm": ^3.2.1
"@polkadot/wasm-crypto-asmjs": ^3.2.2
"@polkadot/wasm-crypto-wasm": ^3.2.2
peerDependencies:
"@polkadot/util": "*"
"@polkadot/x-randomvalues": "*"
checksum: 388f77a79db8c5d99acae56e5b9cf0a855710a2dd468b4bec4f7687da00f64ebf7cb914b3b7d1613374068556971619220fd4ccf7f8de190ece2387e18c176a9
checksum: 9940cff288e7f027566b16531f92dce560e7f18f6abdae5f1ca41e752aa5c05b7fd1208900c6ee5032d7f0822ee8f425107b84ed9f4c647aa17d1268f27ce30d
languageName: node
linkType: hard
"@polkadot/x-fetch@5.4.1, @polkadot/x-fetch@workspace:packages/x-fetch":
"@polkadot/x-fetch@5.5.1, @polkadot/x-fetch@workspace:packages/x-fetch":
version: 0.0.0-use.local
resolution: "@polkadot/x-fetch@workspace:packages/x-fetch"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-global": 5.5.1
"@types/node-fetch": ^2.5.8
node-fetch: ^2.6.1
languageName: unknown
linkType: soft
"@polkadot/x-global@5.5.1, @polkadot/x-global@workspace:packages/x-global":
version: 0.0.0-use.local
resolution: "@polkadot/x-global@workspace:packages/x-global"
dependencies:
"@babel/runtime": ^7.12.5
"@types/node-fetch": ^2.5.8
@@ -1929,11 +1940,12 @@ __metadata:
languageName: unknown
linkType: soft
"@polkadot/x-randomvalues@5.4.1, @polkadot/x-randomvalues@workspace:packages/x-randomvalues":
"@polkadot/x-randomvalues@5.5.1, @polkadot/x-randomvalues@workspace:packages/x-randomvalues":
version: 0.0.0-use.local
resolution: "@polkadot/x-randomvalues@workspace:packages/x-randomvalues"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-global": 5.5.1
"@types/react-native": ^0.63.46
languageName: unknown
linkType: soft
@@ -1947,19 +1959,21 @@ __metadata:
languageName: unknown
linkType: soft
"@polkadot/x-textdecoder@5.4.1, @polkadot/x-textdecoder@workspace:packages/x-textdecoder":
"@polkadot/x-textdecoder@5.5.1, @polkadot/x-textdecoder@workspace:packages/x-textdecoder":
version: 0.0.0-use.local
resolution: "@polkadot/x-textdecoder@workspace:packages/x-textdecoder"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-global": 5.5.1
languageName: unknown
linkType: soft
"@polkadot/x-textencoder@5.4.1, @polkadot/x-textencoder@workspace:packages/x-textencoder":
"@polkadot/x-textencoder@5.5.1, @polkadot/x-textencoder@workspace:packages/x-textencoder":
version: 0.0.0-use.local
resolution: "@polkadot/x-textencoder@workspace:packages/x-textencoder"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-global": 5.5.1
languageName: unknown
linkType: soft
@@ -1968,6 +1982,7 @@ __metadata:
resolution: "@polkadot/x-ws@workspace:packages/x-ws"
dependencies:
"@babel/runtime": ^7.12.5
"@polkadot/x-global": 5.5.1
"@types/websocket": ^1.0.1
websocket: ^1.0.33
languageName: unknown