Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7278364873 | ||
|
|
291a478290 | ||
|
|
4768817661 | ||
|
|
ebf561f48c | ||
|
|
8bdfd18e1f | ||
|
|
5e48c1036f | ||
|
|
4370e87fea | ||
|
|
0864aef698 | ||
|
|
b898dff53f | ||
|
|
15056a5a6c | ||
|
|
2f5df3e46f | ||
|
|
fd3176c36e | ||
|
|
942bd2baf5 | ||
|
|
db67b97b7a | ||
|
|
c45d42f606 | ||
|
|
401e55a7bd | ||
|
|
5a0158c372 | ||
|
|
2509347330 | ||
|
|
a5bc4bc902 | ||
|
|
7588f21b8f | ||
|
|
78ca8b86a8 | ||
|
|
fc9cb7da9e | ||
|
|
70dacc878c | ||
|
|
0eebd52577 | ||
|
|
100f22bcfe | ||
|
|
36d479380f | ||
|
|
aff728dd5e | ||
|
|
a0c8fa1a84 | ||
|
|
a88990cc73 | ||
|
|
15c03c0aff | ||
|
|
aa3d6803f7 | ||
|
|
0bf8b0a35b | ||
|
|
3fd29ee299 | ||
|
|
1fb62d2964 | ||
|
|
756af81132 | ||
|
|
0ebce80650 | ||
|
|
743311ec19 | ||
|
|
d8237f0687 | ||
|
|
68f3d13d09 | ||
|
|
b9194310a9 | ||
|
|
670078158c | ||
|
|
0f0bea2624 | ||
|
|
82bd15b09c | ||
|
|
9e3b69931f | ||
|
|
b8ed514ca8 | ||
|
|
079ebdb39b | ||
|
|
230a35faf0 | ||
|
|
943e60b47b | ||
|
|
cc67d386b8 | ||
|
|
54384279b2 | ||
|
|
83fcb1fa7b | ||
|
|
a83e2802ed | ||
|
|
27d524c758 | ||
|
|
262e010a08 | ||
|
|
c3a8f0c3d7 | ||
|
|
b045104c3e | ||
|
|
12bc342cc6 | ||
|
|
1a1f351207 | ||
|
|
510d33fd89 | ||
|
|
19c68dada7 | ||
|
|
089b24f505 | ||
|
|
3f6a37a535 | ||
|
|
596331daf3 | ||
|
|
f665d0a590 | ||
|
|
0c6c6c9a91 | ||
|
|
9abdd88a3d | ||
|
|
cdb927da2a | ||
|
|
214fa1538a | ||
|
|
97d74944cb | ||
|
|
f003063b94 | ||
|
|
08132ef566 | ||
|
|
1fbbc0500d | ||
|
|
708ee3b7bd | ||
|
|
3d0afd017a | ||
|
|
bf67852b59 | ||
|
|
105fb61f71 | ||
|
|
d4f81a92e0 | ||
|
|
353a15827b | ||
|
|
6a3bf8c0b3 | ||
|
|
9a20feb417 | ||
|
|
a25ae21074 | ||
|
|
f9428ee6d2 | ||
|
|
3746b608b2 | ||
|
|
769995549d | ||
|
|
98c497b0aa | ||
|
|
96a1c981bc | ||
|
|
82fc187983 | ||
|
|
fc22cc0456 | ||
|
|
b40167c1e2 | ||
|
|
8dd942d070 | ||
|
|
0e810ba308 | ||
|
|
4288680bce | ||
|
|
5d82af6912 | ||
|
|
7607dc9e9d | ||
|
|
0795451801 | ||
|
|
e061c22ab1 | ||
|
|
9562762403 | ||
|
|
c1e961a938 | ||
|
|
c48f44830e | ||
|
|
558f5b0286 | ||
|
|
b1a9cbdabb | ||
|
|
7e494673e0 | ||
|
|
a5434d4428 | ||
|
|
582f1ca294 | ||
|
|
fcebfeae60 | ||
|
|
bb308f87e7 | ||
|
|
5445177055 | ||
|
|
b705f2bed1 | ||
|
|
4a79ef073c | ||
|
|
ce79a80a18 | ||
|
|
9c72628a39 | ||
|
|
61416c3f23 | ||
|
|
27d7dfda02 | ||
|
|
487c638185 | ||
|
|
57eece03d8 | ||
|
|
f62f214e88 | ||
|
|
d33504ff72 | ||
|
|
fc68b5ae0e | ||
|
|
55c52ed5ad | ||
|
|
923a08f7fc | ||
|
|
284d36dd6d | ||
|
|
f648e6db08 | ||
|
|
c771560a7c | ||
|
|
9b89ac19ba | ||
|
|
1d369c13d8 | ||
|
|
ad2c3bb12a | ||
|
|
b951a67b3f | ||
|
|
17f37f0c05 | ||
|
|
c71da72328 | ||
|
|
3c743bd668 | ||
|
|
1e2fdfba58 | ||
|
|
03db260ed6 | ||
|
|
d47cdf8a7b | ||
|
|
8d41ea5eba | ||
|
|
573fd7ba6a | ||
|
|
6425131822 | ||
|
|
d81e91af7b | ||
|
|
f1576f280d | ||
|
|
2692c90106 | ||
|
|
0da5471b3e | ||
|
|
e5a8d695bb | ||
|
|
24b91a73c7 | ||
|
|
1ad3b6ab98 | ||
|
|
7fa869d33c | ||
|
|
4b95eeae06 | ||
|
|
c7e79d9816 | ||
|
|
4d6d9abbc0 | ||
|
|
bc5973bdaf | ||
|
|
f6c7f638a1 |
+5
-1
@@ -1,2 +1,6 @@
|
||||
1
|
||||
0.57.20.57.3
|
||||
0.57.20.57.3
|
||||
0.66.2
|
||||
0.66.3
|
||||
0.71.2
|
||||
0.71.3
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/eslint');
|
||||
const base = require('@polkadot/dev/config/eslint.cjs');
|
||||
|
||||
module.exports = {
|
||||
...base,
|
||||
|
||||
+46
-7
File diff suppressed because one or more lines are too long
+46
-21
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
-55
File diff suppressed because one or more lines are too long
+55
File diff suppressed because one or more lines are too long
+1
-3
@@ -9,7 +9,5 @@ plugins:
|
||||
spec: "@yarnpkg/plugin-interactive-tools"
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
||||
spec: "@yarnpkg/plugin-version"
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
|
||||
spec: "@yarnpkg/plugin-workspace-tools"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-2.3.3.cjs
|
||||
yarnPath: .yarn/releases/yarn-2.4.1.cjs
|
||||
|
||||
+126
@@ -1,5 +1,131 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 0.73.1 Apr 12, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.1.1
|
||||
|
||||
|
||||
## 0.72.1 Mar 15, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Added support for batch import/export functionality (Thanks to https://github.com/BubbleBear)
|
||||
|
||||
|
||||
## 0.71.3 Mar 8, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.5
|
||||
|
||||
|
||||
## 0.71.2 Mar 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.4
|
||||
|
||||
|
||||
## 0.71.1 Mar 6, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Build to ESM by default (with cjs versions via export map)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 6.0.3
|
||||
|
||||
|
||||
## 0.70.1 Feb 28, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Use `detectPackage` with `packageInfo` & check for monorepo dependencies
|
||||
- Remove `mkdirp` resolution to ensure local views work with Webpack
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.9.2
|
||||
|
||||
|
||||
## 0.69.1 Feb 7, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.6.1
|
||||
|
||||
|
||||
## 0.68.1 Feb 1, 2021
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.5.1
|
||||
- Added `ed25519-ledger` option for `hdLedger` from `@polkadot/util-crypto`
|
||||
|
||||
|
||||
## 0.67.1 Jan 24, 2021
|
||||
|
||||
Contributed:
|
||||
|
||||
- Store hardware accounts (Thanks to https://github.com/Tbaut)
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.4.4
|
||||
- Cleanup dependencies to only have common (no api repo)
|
||||
|
||||
|
||||
## 0.66.1 Jan 17, 2021
|
||||
|
||||
- **Important** Users of the `@polkadot/ledger` package should now import `@polkadot/hw-wallet`
|
||||
|
||||
Contributed:
|
||||
|
||||
- Dock Ledger integration (Thanks to https://github.com/lovesh, moved to common)
|
||||
- Polymesh Ledger integration (https://github.com/adamdossa, moved to common)
|
||||
|
||||
Changes:
|
||||
|
||||
- Remove `@polkadot/ledger` package (Moved to common as `@polkadot/hw-ledger`)
|
||||
- Keyring options genesis allows a `string` | `Hash` (e.g. `api.genesisHash`) input
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 5.3.1
|
||||
- Removed `@polkadot/types` dependencies (only interface needed, supplied)
|
||||
|
||||
|
||||
## 0.65.1 Dec 28, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.2.2
|
||||
- Updated to `@polkadot/api` 3.2.2
|
||||
|
||||
|
||||
## 0.64.1 Dec 21, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
- Don't re-export types from index (esm build compat)
|
||||
- Correctly mark `detectPackage` as a side-effect
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.1.1
|
||||
- Updated to `@polkadot/api` 3.1.1
|
||||
|
||||
|
||||
## 0.63.1 Dec 14, 2020
|
||||
|
||||
Contributed:
|
||||
|
||||
- Export types for icons (Thanks to https://github.com/Tbaut)
|
||||
|
||||
Changes:
|
||||
|
||||
- Bump to latest WebUSB from Ledger
|
||||
- Swap Ledger functionality to dedicated packages
|
||||
- Build esm packages alongside cjs
|
||||
- Convert all imports/exports to named
|
||||
- Pass pair type through to all creation actions
|
||||
- Allow for transparent failures on account injection
|
||||
- Swap to using `import type { ... }`
|
||||
- Updated to `@polkadot/{keyring, util, util-crypto}` 5.0.1
|
||||
- Updated to `@polkadot/api` 3.0.1
|
||||
|
||||
|
||||
## 0.62.1 Nov 9, 2020
|
||||
|
||||
Changes:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/babel');
|
||||
const base = require('@polkadot/dev/config/babel-config-cjs.cjs');
|
||||
|
||||
module.exports = Object.keys(base).reduce((config, key) => {
|
||||
config[key] = base[key];
|
||||
@@ -1,9 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/ui authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const config = require('@polkadot/dev/config/jest');
|
||||
const config = require('@polkadot/dev/config/jest.cjs');
|
||||
|
||||
module.exports = Object.assign({}, config, {
|
||||
module.exports = {
|
||||
...config,
|
||||
moduleNameMapper: {
|
||||
'@polkadot/react-(identicon|qr)(.*)$': '<rootDir>/packages/react-$1/src/$2',
|
||||
'@polkadot/reactnative-(identicon)(.*)$': '<rootDir>/packages/reactnative-$1/src/$2',
|
||||
@@ -11,5 +12,5 @@ module.exports = Object.assign({}, config, {
|
||||
'\\.(css|less)$': 'empty/object',
|
||||
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object'
|
||||
},
|
||||
resolver: '@polkadot/dev/config/jest-resolver'
|
||||
});
|
||||
transformIgnorePatterns: ['/node_modules/(?!@polkadot|@babel/runtime/helpers/esm/)']
|
||||
};
|
||||
+12
-12
@@ -8,7 +8,7 @@
|
||||
"packages/*"
|
||||
],
|
||||
"resolutions": {
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.4"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "polkadot-dev-build-ts",
|
||||
@@ -27,21 +27,21 @@
|
||||
"test:one": "polkadot-dev-run-test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.3",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/dev": "^0.59.20",
|
||||
"@polkadot/ts": "^0.3.53",
|
||||
"@types/jest": "^26.0.15",
|
||||
"@babel/core": "^7.13.15",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/dev": "^0.62.7",
|
||||
"@polkadot/ts": "^0.3.62",
|
||||
"@types/jest": "^26.0.22",
|
||||
"babel-plugin-transform-vue-template": "^0.4.2",
|
||||
"empty": "^0.10.1",
|
||||
"react": "^17.0.1",
|
||||
"react-dom": "^17.0.1",
|
||||
"react-is": "^17.0.1",
|
||||
"react-native": "^0.63.3",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-is": "^17.0.2",
|
||||
"react-native": "^0.64.0",
|
||||
"vue-template-compiler": "^2.6.12",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack": "^4.46.0",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-serve": "^3.2.0"
|
||||
},
|
||||
"version": "0.62.1"
|
||||
"version": "0.73.1"
|
||||
}
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
{
|
||||
"name": "@polkadot/example-react",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"description": "A very basic example with ui-* & react-* packages",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5"
|
||||
"@babel/runtime": "^7.13.10"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import Identicon from '@polkadot/react-identicon';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
import { Identicon } from '@polkadot/react-identicon';
|
||||
import { keyring } from '@polkadot/ui-keyring';
|
||||
import { settings } from '@polkadot/ui-settings';
|
||||
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
|
||||
interface Props {
|
||||
className?: string;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-react', version: '0.73.1' };
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
{
|
||||
"name": "@polkadot/example-vue",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"description": "A very basic example with ui-* & vue-* packages",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5"
|
||||
"@babel/runtime": "^7.13.10"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/example-vue authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
|
||||
import Vue, { VNode } from 'vue';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
|
||||
import { keyring } from '@polkadot/ui-keyring';
|
||||
import { settings } from '@polkadot/ui-settings';
|
||||
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
import Identicon from '@polkadot/vue-identicon';
|
||||
|
||||
interface Account {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-vue', version: '0.73.1' };
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/example-vue authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-vue authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Button, SafeAreaView, ScrollView, StatusBar, StyleSheet, Text, View } from 'react-native';
|
||||
import { Colors } from 'react-native/Libraries/NewAppScreen';
|
||||
|
||||
import Identicon from '@polkadot/reactnative-identicon';
|
||||
import keyring from '@polkadot/ui-keyring';
|
||||
import settings from '@polkadot/ui-settings';
|
||||
import { mnemonicGenerate, cryptoWaitReady } from '@polkadot/util-crypto';
|
||||
import { keyring } from '@polkadot/ui-keyring';
|
||||
import { settings } from '@polkadot/ui-settings';
|
||||
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto';
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
body: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/example-reactnative authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-reactnative authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/example-react authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-react authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './nodeGlobalsShim.js';
|
||||
|
||||
import { AppRegistry } from 'react-native';
|
||||
|
||||
import App from './App';
|
||||
import { name as appName } from './app.json';
|
||||
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
platform :ios, '9.0'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
require_relative '../../../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
|
||||
target 'exampleReactNative' do
|
||||
# Pods for exampleReactNative
|
||||
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
|
||||
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
|
||||
pod 'React', :path => '../node_modules/react-native/'
|
||||
pod 'React-Core', :path => '../node_modules/react-native/'
|
||||
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
|
||||
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
|
||||
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
|
||||
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
|
||||
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
|
||||
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
|
||||
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
|
||||
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
|
||||
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
|
||||
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
|
||||
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
|
||||
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
|
||||
pod 'FBLazyVector', :path => "../../../node_modules/react-native/Libraries/FBLazyVector"
|
||||
pod 'FBReactNativeSpec', :path => "../../../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
pod 'RCTRequired', :path => "../../../node_modules/react-native/Libraries/RCTRequired"
|
||||
pod 'RCTTypeSafety', :path => "../../../node_modules/react-native/Libraries/TypeSafety"
|
||||
pod 'React', :path => '../../../node_modules/react-native/'
|
||||
pod 'React-Core', :path => '../../../node_modules/react-native/'
|
||||
pod 'React-CoreModules', :path => '../../../node_modules/react-native/React/CoreModules'
|
||||
pod 'React-Core/DevSupport', :path => '../../../node_modules/react-native/'
|
||||
pod 'React-RCTActionSheet', :path => '../../../node_modules/react-native/Libraries/ActionSheetIOS'
|
||||
pod 'React-RCTAnimation', :path => '../../../node_modules/react-native/Libraries/NativeAnimation'
|
||||
pod 'React-RCTBlob', :path => '../../../node_modules/react-native/Libraries/Blob'
|
||||
pod 'React-RCTImage', :path => '../../../node_modules/react-native/Libraries/Image'
|
||||
pod 'React-RCTLinking', :path => '../../../node_modules/react-native/Libraries/LinkingIOS'
|
||||
pod 'React-RCTNetwork', :path => '../../../node_modules/react-native/Libraries/Network'
|
||||
pod 'React-RCTSettings', :path => '../../../node_modules/react-native/Libraries/Settings'
|
||||
pod 'React-RCTText', :path => '../../../node_modules/react-native/Libraries/Text'
|
||||
pod 'React-RCTVibration', :path => '../../../node_modules/react-native/Libraries/Vibration'
|
||||
pod 'React-Core/RCTWebSocket', :path => '../../../node_modules/react-native/'
|
||||
|
||||
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
|
||||
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
|
||||
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
|
||||
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
|
||||
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
|
||||
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
||||
pod 'React-cxxreact', :path => '../../../node_modules/react-native/ReactCommon/cxxreact'
|
||||
pod 'React-jsi', :path => '../../../node_modules/react-native/ReactCommon/jsi'
|
||||
pod 'React-jsiexecutor', :path => '../../../node_modules/react-native/ReactCommon/jsiexecutor'
|
||||
pod 'React-jsinspector', :path => '../../../node_modules/react-native/ReactCommon/jsinspector'
|
||||
pod 'ReactCommon/jscallinvoker', :path => "../../../node_modules/react-native/ReactCommon"
|
||||
pod 'ReactCommon/turbomodule/core', :path => "../../../node_modules/react-native/ReactCommon"
|
||||
pod 'Yoga', :path => '../../../node_modules/react-native/ReactCommon/yoga'
|
||||
|
||||
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
||||
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
|
||||
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
|
||||
pod 'DoubleConversion', :podspec => '../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
||||
pod 'glog', :podspec => '../../../node_modules/react-native/third-party-podspecs/glog.podspec'
|
||||
pod 'Folly', :podspec => '../../../node_modules/react-native/third-party-podspecs/Folly.podspec'
|
||||
|
||||
|
||||
target 'exampleReactNativeTests' do
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/example-reactnative authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-reactnative authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/example-reactnative authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/example-reactnative authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
/* eslint-disable no-global-assign */
|
||||
|
||||
import 'fast-text-encoding';
|
||||
|
||||
import AsyncStorage from '@react-native-community/async-storage';
|
||||
|
||||
class Storage {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "exampleReactNative",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"copy-workspace-packages": "yarn copy-identicon && yarn copy-ui-shared",
|
||||
@@ -12,31 +12,31 @@
|
||||
"test": "jest"
|
||||
},
|
||||
"dependencies": {
|
||||
"@polkadot/keyring": "^4.0.1",
|
||||
"@polkadot/reactnative-identicon": "0.62.1",
|
||||
"@polkadot/ui-keyring": "0.62.1",
|
||||
"@polkadot/ui-settings": "0.62.1",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@polkadot/util-crypto": "^4.0.1",
|
||||
"@polkadot/keyring": "^6.1.1",
|
||||
"@polkadot/reactnative-identicon": "0.73.1",
|
||||
"@polkadot/ui-keyring": "0.73.1",
|
||||
"@polkadot/ui-settings": "0.73.1",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"@polkadot/util-crypto": "^6.1.1",
|
||||
"@react-native-community/async-storage": "^1.12.1",
|
||||
"fast-text-encoding": "^1.0.3",
|
||||
"get-yarn-workspaces": "^1.0.2",
|
||||
"os-browserify": "^0.3.0",
|
||||
"process": "^0.11.10",
|
||||
"react": "^17.0.1",
|
||||
"react-native": "^0.63.3",
|
||||
"react": "^17.0.2",
|
||||
"react-native": "^0.64.0",
|
||||
"react-native-crypto": "^2.2.0",
|
||||
"react-native-randombytes": "^3.6.0",
|
||||
"stream-http": "^3.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.3",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@react-native-community/cli-platform-ios": "^4.13.0",
|
||||
"@types/react-test-renderer": "16.9.3",
|
||||
"@babel/core": "^7.13.15",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@react-native-community/cli-platform-ios": "^5.0.1-alpha.2",
|
||||
"@types/react-test-renderer": "17.0.1",
|
||||
"babel-jest": "^26.6.3",
|
||||
"metro-react-native-babel-preset": "^0.64.0",
|
||||
"react-test-renderer": "17.0.1"
|
||||
"metro-react-native-babel-preset": "^0.65.2",
|
||||
"react-test-renderer": "17.0.2"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "react-native",
|
||||
|
||||
@@ -1,25 +1,28 @@
|
||||
{
|
||||
"name": "@polkadot/react-identicon",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"type": "module",
|
||||
"description": "Renders an SVG picture representing an address",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/keyring": "^4.0.1",
|
||||
"@polkadot/ui-settings": "0.62.1",
|
||||
"@polkadot/ui-shared": "0.62.1",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@polkadot/util-crypto": "^4.0.1",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/keyring": "^6.1.1",
|
||||
"@polkadot/ui-settings": "0.73.1",
|
||||
"@polkadot/ui-shared": "0.73.1",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"@polkadot/util-crypto": "^6.1.1",
|
||||
"color": "^3.1.3",
|
||||
"ethereum-blockies-base64": "^1.0.2",
|
||||
"jdenticon": "2.2.0",
|
||||
"react-copy-to-clipboard": "^5.0.2",
|
||||
"styled-components": "^5.2.1"
|
||||
"jdenticon": "3.1.0",
|
||||
"react-copy-to-clipboard": "^5.0.3",
|
||||
"styled-components": "^5.2.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/keyring": "*",
|
||||
@@ -31,10 +34,10 @@
|
||||
"styled-components": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-copy-to-clipboard": "^4.3.0",
|
||||
"@types/react-dom": "^16.9.9",
|
||||
"@types/styled-components": "^5.1.4",
|
||||
"styled-components": "^5.2.1",
|
||||
"@types/react-copy-to-clipboard": "^5.0.0",
|
||||
"@types/react-dom": "^17.0.3",
|
||||
"@types/styled-components": "^5.1.9",
|
||||
"styled-components": "^5.2.3",
|
||||
"xmlserializer": "^0.6.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
|
||||
import { encodeAddress, randomAsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import IdentityIcon from '.';
|
||||
import { Identicon } from '.';
|
||||
|
||||
const THEMES = ['beachball', 'polkadot', 'substrate'];
|
||||
|
||||
@@ -23,7 +24,7 @@ export default class Demo extends React.PureComponent {
|
||||
<div>
|
||||
<div>
|
||||
{identities.map((value, index): React.ReactNode => (
|
||||
<IdentityIcon
|
||||
<Identicon
|
||||
key={value.toString()}
|
||||
theme={THEMES[index % THEMES.length] as 'empty'}
|
||||
value={value}
|
||||
@@ -32,7 +33,7 @@ export default class Demo extends React.PureComponent {
|
||||
</div>
|
||||
<div>
|
||||
{THEMES.map((theme): React.ReactNode => (
|
||||
<IdentityIcon
|
||||
<Identicon
|
||||
key={theme}
|
||||
theme={theme as 'empty'}
|
||||
value='5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import { IdentityProps as Props, Props as ComponentProps } from './types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { IdentityProps as Props, Props as ComponentProps } from './types';
|
||||
|
||||
import React from 'react';
|
||||
import CopyToClipboard from 'react-copy-to-clipboard';
|
||||
import styled from 'styled-components';
|
||||
import settings, { ICON_DEFAULT_HOST } from '@polkadot/ui-settings';
|
||||
|
||||
import { ICON_DEFAULT_HOST, settings } from '@polkadot/ui-settings';
|
||||
import { isHex, isU8a, u8aToHex } from '@polkadot/util';
|
||||
import { decodeAddress, encodeAddress, ethereumEncode } from '@polkadot/util-crypto';
|
||||
|
||||
@@ -146,8 +147,8 @@ class BaseIcon extends React.PureComponent<Props, State> {
|
||||
}
|
||||
}
|
||||
|
||||
function Identicon (props: Props): React.ReactElement<Props> {
|
||||
function Icon (props: Props): React.ReactElement<Props> {
|
||||
return <BaseIcon {...props} />;
|
||||
}
|
||||
|
||||
export default React.memo(Identicon);
|
||||
export const Identicon = React.memo(Icon);
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { packageInfo as settingsInfo } from '@polkadot/ui-settings/packageInfo';
|
||||
import { packageInfo as sharedInfo } from '@polkadot/ui-shared/packageInfo';
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname, [settingsInfo, sharedInfo]);
|
||||
@@ -1,12 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Props } from '../types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
|
||||
import { beachballIcon } from '@polkadot/ui-shared';
|
||||
|
||||
function Beachball ({ address, className = '', size, style }: Props): React.ReactElement<Props> {
|
||||
function Identicon ({ address, className = '', size, style }: Props): React.ReactElement<Props> {
|
||||
const updateElem = useCallback(
|
||||
(node: HTMLDivElement): void => {
|
||||
node && node.appendChild(
|
||||
@@ -25,4 +26,4 @@ function Beachball ({ address, className = '', size, style }: Props): React.Reac
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(Beachball);
|
||||
export const Beachball = React.memo(Identicon);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Props } from '../types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
function Empty ({ className = '', size, style }: Props): React.ReactElement<Props> {
|
||||
function Identicon ({ className = '', size, style }: Props): React.ReactElement<Props> {
|
||||
return (
|
||||
<svg
|
||||
className={className}
|
||||
@@ -17,4 +17,4 @@ function Empty ({ className = '', size, style }: Props): React.ReactElement<Prop
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(Empty);
|
||||
export const Empty = React.memo(Identicon);
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Props } from '../types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import makeBlockie from 'ethereum-blockies-base64';
|
||||
import React, { useMemo } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
function Ethereum ({ address, className = '', style }: Props): React.ReactElement<Props> {
|
||||
function Identicon ({ address, className = '', style }: Props): React.ReactElement<Props> {
|
||||
const imgSrc = useMemo(
|
||||
() => makeBlockie(address),
|
||||
[address]
|
||||
@@ -22,7 +22,7 @@ function Ethereum ({ address, className = '', style }: Props): React.ReactElemen
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(styled(Ethereum)(({ size }: Props) => `
|
||||
export const Ethereum = React.memo(styled(Identicon)(({ size }: Props) => `
|
||||
display: block;
|
||||
height: ${size}px;
|
||||
width: ${size}px;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Props } from '../types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import * as jdenticon from 'jdenticon';
|
||||
import React from 'react';
|
||||
import jdenticon from 'jdenticon';
|
||||
|
||||
function Jdenticon ({ className = '', publicKey, size, style }: Props): React.ReactElement<Props> {
|
||||
function Identicon ({ className = '', publicKey, size, style }: Props): React.ReactElement<Props> {
|
||||
return (
|
||||
<div
|
||||
className={className}
|
||||
@@ -18,4 +18,4 @@ function Jdenticon ({ className = '', publicKey, size, style }: Props): React.Re
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(Jdenticon);
|
||||
export const Jdenticon = React.memo(Identicon);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// Copyright 2018-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2018-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Copyright 2018 Paritytech via paritytech/oo7/polkadot-identicon
|
||||
|
||||
// This has been converted from the original version that can be found at
|
||||
@@ -15,10 +16,11 @@
|
||||
// - Move constants to file-level
|
||||
// - Overall it is now just a static component, expecting an address as an input value
|
||||
|
||||
import { Circle } from '@polkadot/ui-shared/icons/types';
|
||||
import { Props } from '../types';
|
||||
import type { Circle } from '@polkadot/ui-shared/icons/types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { polkadotIcon } from '@polkadot/ui-shared';
|
||||
|
||||
function renderCircle ({ cx, cy, fill, r }: Circle, key: number): React.ReactNode {
|
||||
@@ -49,4 +51,4 @@ function Identicon ({ address, className = '', isAlternative = false, size, styl
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(Identicon);
|
||||
export const Polkadot = React.memo(Identicon);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { default as Beachball } from './Beachball';
|
||||
export { default as Empty } from './Empty';
|
||||
export { default as Ethereum } from './Ethereum';
|
||||
export { default as Jdenticon } from './Jdenticon';
|
||||
export { default as Polkadot } from './Polkadot';
|
||||
export { Beachball } from './Beachball';
|
||||
export { Empty } from './Empty';
|
||||
export { Ethereum } from './Ethereum';
|
||||
export { Jdenticon } from './Jdenticon';
|
||||
export { Polkadot } from './Polkadot';
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import Identicon from './Identicon';
|
||||
import './detectPackage';
|
||||
|
||||
import { Identicon } from './Identicon';
|
||||
|
||||
export * from './icons';
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
export { Identicon };
|
||||
|
||||
export default Identicon;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-identicon', version: '0.73.1' };
|
||||
@@ -1,7 +1,8 @@
|
||||
// Copyright 2018-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2018-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
export interface BaseProps {
|
||||
@@ -25,6 +26,8 @@ export interface IdentityProps extends BaseProps {
|
||||
onCopy?: (value: string) => void;
|
||||
prefix?: Prefix;
|
||||
size?: number;
|
||||
theme?: 'beachball' | 'empty' | 'ethereum' | 'jdenticon' | 'polkadot' | 'substrate';
|
||||
theme?: IconTheme;
|
||||
value?: string | Uint8Array | null;
|
||||
}
|
||||
|
||||
export type IconTheme = 'beachball' | 'empty' | 'ethereum' | 'jdenticon' | 'polkadot' | 'substrate';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/react-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
{
|
||||
"name": "@polkadot/react-qr",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"type": "module",
|
||||
"description": "Generates and reads QR codes",
|
||||
"main": "index.js",
|
||||
"sideEffects": false,
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@polkadot/util-crypto": "^4.0.1",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"@polkadot/util-crypto": "^6.1.1",
|
||||
"qrcode-generator": "^1.4.4",
|
||||
"react-qr-reader": "^2.2.1",
|
||||
"styled-components": "^5.2.1"
|
||||
"styled-components": "^5.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-qr-reader": "^2.1.3",
|
||||
"@types/styled-components": "^5.1.4"
|
||||
"@types/styled-components": "^5.1.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { xxhashAsHex } from '@polkadot/util-crypto';
|
||||
|
||||
import qrcode from './qrcode';
|
||||
import { qrcode } from './qrcode';
|
||||
import { createFrames, createImgSize } from './util';
|
||||
|
||||
interface Props {
|
||||
@@ -34,8 +35,8 @@ const TIMER_INC = 500;
|
||||
function getDataUrl (value: Uint8Array): string {
|
||||
const qr = qrcode(0, 'M');
|
||||
|
||||
// HACK See out qrcode stringToBytes override as used internally. This
|
||||
// will only work for the case where we actuall pass `Bytes` in here
|
||||
// HACK See our qrcode stringToBytes override as used internally. This
|
||||
// will only work for the case where we actually pass `Bytes` in here
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
qr.addData(value as any, 'Byte');
|
||||
qr.make();
|
||||
@@ -130,7 +131,7 @@ function Display ({ className, size, skipEncoding, style, value }: Props): React
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(styled(Display)`
|
||||
export const QrDisplay = React.memo(styled(Display)`
|
||||
.ui--qr-Display {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { QrDisplay } from './Display';
|
||||
import { createAddressPayload } from './util';
|
||||
import QrDisplay from './Display';
|
||||
|
||||
interface Props {
|
||||
address: string;
|
||||
@@ -14,7 +14,7 @@ interface Props {
|
||||
style?: React.CSSProperties;
|
||||
}
|
||||
|
||||
function DisplayExtrinsic ({ address, className, genesisHash, size, style }: Props): React.ReactElement<Props> | null {
|
||||
function DisplayAddress ({ address, className, genesisHash, size, style }: Props): React.ReactElement<Props> | null {
|
||||
const data = useMemo(
|
||||
() => createAddressPayload(address, genesisHash),
|
||||
[address, genesisHash]
|
||||
@@ -35,4 +35,4 @@ function DisplayExtrinsic ({ address, className, genesisHash, size, style }: Pro
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(DisplayExtrinsic);
|
||||
export const QrDisplayAddress = React.memo(DisplayAddress);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { QrDisplay } from './Display';
|
||||
import { createSignPayload } from './util';
|
||||
import QrDisplay from './Display';
|
||||
|
||||
interface Props {
|
||||
address: string;
|
||||
@@ -36,4 +36,4 @@ function DisplayPayload ({ address, className, cmd, genesisHash, payload, size,
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(DisplayPayload);
|
||||
export const QrDisplayPayload = React.memo(DisplayPayload);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { NetworkSpecsStruct } from '@polkadot/ui-settings';
|
||||
import type { NetworkSpecsStruct } from '@polkadot/ui-settings/types';
|
||||
|
||||
import React, { useMemo } from 'react';
|
||||
import QrDisplay from './Display';
|
||||
|
||||
import { QrDisplay } from './Display';
|
||||
import { encodeString } from './util';
|
||||
|
||||
interface Props {
|
||||
@@ -36,4 +36,4 @@ function DisplayNetworkSpecs ({ className, networkSpecs, size, style }: Props):
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(DisplayNetworkSpecs);
|
||||
export const QrNetworkSpecs = React.memo(DisplayNetworkSpecs);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useCallback, useMemo } from 'react';
|
||||
@@ -54,7 +54,7 @@ function Scan ({ className, delay = DEFAULT_DELAY, onError = DEFAULT_ERROR, onSc
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(styled(Scan)`
|
||||
export const QrScan = React.memo(styled(Scan)`
|
||||
.ui--qr-Scan {
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
|
||||
import { assert } from '@polkadot/util';
|
||||
import { decodeAddress } from '@polkadot/util-crypto';
|
||||
|
||||
import { ADDRESS_PREFIX, SEED_PREFIX } from './constants';
|
||||
import QrScan from './Scan';
|
||||
import { QrScan } from './Scan';
|
||||
|
||||
interface ScanType {
|
||||
isAddress: boolean;
|
||||
@@ -59,4 +60,4 @@ function ScanAddress ({ className, onError, onScan, size, style }: Props): React
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(ScanAddress);
|
||||
export const QrScanAddress = React.memo(ScanAddress);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
|
||||
import QrScan from './Scan';
|
||||
import { QrScan } from './Scan';
|
||||
|
||||
interface ScanType {
|
||||
signature: string;
|
||||
@@ -34,4 +34,4 @@ function ScanSignature ({ className, onError, onScan, size, style }: Props): Rea
|
||||
);
|
||||
}
|
||||
|
||||
export default React.memo(ScanSignature);
|
||||
export const QrScanSignature = React.memo(ScanSignature);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const ADDRESS_PREFIX = 'substrate';
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { default as QrDisplayAddress } from './DisplayAddress';
|
||||
export { default as QrDisplayPayload } from './DisplayPayload';
|
||||
export { default as QrScanAddress } from './ScanAddress';
|
||||
export { default as QrScanSignature } from './ScanSignature';
|
||||
export { default as QrNetworkSpecs } from './NetworkSpecs';
|
||||
export { QrDisplayAddress } from './DisplayAddress';
|
||||
export { QrDisplayPayload } from './DisplayPayload';
|
||||
export { QrScanAddress } from './ScanAddress';
|
||||
export { QrScanSignature } from './ScanSignature';
|
||||
export { QrNetworkSpecs } from './NetworkSpecs';
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-qr', version: '0.73.1' };
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import _qrcode from 'qrcode-generator';
|
||||
@@ -12,4 +12,4 @@ const qrcode: typeof _qrcode = _qrcode;
|
||||
(qrcode as any).stringToBytes = (data: Uint8Array): Uint8Array =>
|
||||
data;
|
||||
|
||||
export default qrcode;
|
||||
export { qrcode };
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { u8aConcat, u8aToHex, u8aToString } from '@polkadot/util';
|
||||
|
||||
import { createAddressPayload, createSignPayload, createFrames, decodeString, encodeNumber, encodeString } from './util';
|
||||
import { randomAsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import { createAddressPayload, createFrames, createSignPayload, decodeString, encodeNumber, encodeString } from './util';
|
||||
|
||||
describe('util', (): void => {
|
||||
describe('Uint8Array <-> string', (): void => {
|
||||
let u8a: Uint8Array;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/react-qr authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { isString, u8aConcat, u8aToU8a } from '@polkadot/util';
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
{
|
||||
"name": "@polkadot/reactnative-identicon",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"type": "module",
|
||||
"description": "Renders an SVG picture representing an address",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/ui-shared": "0.62.1",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@polkadot/util-crypto": "^4.0.1",
|
||||
"react-native-svg": "^12.1.0"
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/ui-shared": "0.73.1",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"@polkadot/util-crypto": "^6.1.1",
|
||||
"react-native-svg": "^12.1.1-0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
@@ -22,6 +25,6 @@
|
||||
"react-native": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-native": "^0.63.32"
|
||||
"@types/react-native": "^0.64.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import { Props as ComponentProps } from './types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { Props as ComponentProps } from './types';
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { isHex, isU8a, u8aToHex } from '@polkadot/util';
|
||||
import { decodeAddress, encodeAddress } from '@polkadot/util-crypto';
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { packageInfo as sharedInfo } from '@polkadot/ui-shared/packageInfo';
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname, [sharedInfo]);
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Props } from '../types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// Copyright 2018-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2018-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Circle as CircleType } from '@polkadot/ui-shared/icons/types';
|
||||
import { Props } from '../types';
|
||||
import type { Circle as CircleType } from '@polkadot/ui-shared/icons/types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
import Svg, { Circle as SvgCircle } from 'react-native-svg';
|
||||
|
||||
import { polkadotIcon } from '@polkadot/ui-shared';
|
||||
|
||||
function renderCircle ({ cx, cy, fill, r }: CircleType, key: number): React.ReactNode {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { default as Empty } from './Empty';
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './detectPackage';
|
||||
|
||||
import Identicon from './Identicon';
|
||||
|
||||
export * from './icons';
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
export default Identicon;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/reactnative-identicon', version: '0.73.1' };
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2018-2020 @polkadot/reactnative-identicon authors & contributors
|
||||
// Copyright 2018-2021 @polkadot/reactnative-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export interface Props {
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
{
|
||||
"name": "@polkadot/ui-assets",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"description": "Static assets shared accross projects",
|
||||
"main": "index.js",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5"
|
||||
"@babel/runtime": "^7.13.10"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/ui-assets authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// empty
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/ui-assets authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-assets', version: '0.73.1' };
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-assets authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-assets authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
declare module '*.svg' {
|
||||
|
||||
@@ -1,42 +1,31 @@
|
||||
{
|
||||
"name": "@polkadot/ui-keyring",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"type": "module",
|
||||
"main": "index.js",
|
||||
"repository": "https://github.com/polkadot-js/apps.git",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"repository": "github:polkadot-js/apps",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [],
|
||||
"contributors": [],
|
||||
"license": "Apache-2.0",
|
||||
"browser": {
|
||||
"./ledger/transportsNode": "./ledger/transportsEmpty"
|
||||
},
|
||||
"react-native": {
|
||||
"./ledger/transportsNode": "./ledger/transportsEmpty",
|
||||
"./ledger/transportsWeb": "./ledger/transportsEmpty"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@ledgerhq/hw-transport-webusb": "^5.28.0",
|
||||
"@polkadot/keyring": "^4.0.1",
|
||||
"@polkadot/ui-settings": "0.62.1",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@zondax/ledger-polkadot": "^0.11.0",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/hw-ledger": "^6.1.1",
|
||||
"@polkadot/keyring": "^6.1.1",
|
||||
"@polkadot/ui-settings": "0.73.1",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"@polkadot/x-rxjs": "^6.1.1",
|
||||
"mkdirp": "^1.0.4",
|
||||
"rxjs": "^6.6.3",
|
||||
"store": "^2.0.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/types": "^2.6.1",
|
||||
"@types/ledgerhq__hw-transport-node-hid": "^4.22.2",
|
||||
"@types/ledgerhq__hw-transport-webusb": "^4.70.1",
|
||||
"@types/mkdirp": "^1.0.1",
|
||||
"@types/store": "^2.0.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@ledgerhq/hw-transport-node-hid": "^5.28.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/keyring": "*",
|
||||
"@polkadot/ui-settings": "*",
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringInstance, KeyringPair } from '@polkadot/keyring/types';
|
||||
import { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import { AddressSubject } from './observable/types';
|
||||
import { KeyringOptions, KeyringStore } from './types';
|
||||
import type { KeyringInstance, KeyringPair } from '@polkadot/keyring/types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { AddressSubject } from './observable/types';
|
||||
import type { KeyringOptions, KeyringStore } from './types';
|
||||
|
||||
import testKeyring from '@polkadot/keyring/testing';
|
||||
import { createTestKeyring } from '@polkadot/keyring/testing';
|
||||
import { isBoolean, isString } from '@polkadot/util';
|
||||
|
||||
import accounts from './observable/accounts';
|
||||
import addresses from './observable/addresses';
|
||||
import contracts from './observable/contracts';
|
||||
import env from './observable/development';
|
||||
import BrowserStore from './stores/Browser'; // direct import (skip index with all)
|
||||
import { accounts } from './observable/accounts';
|
||||
import { addresses } from './observable/addresses';
|
||||
import { contracts } from './observable/contracts';
|
||||
import { env } from './observable/env';
|
||||
import { BrowserStore } from './stores/Browser'; // direct import (skip index with all)
|
||||
|
||||
export default class Base {
|
||||
export class Base {
|
||||
#accounts: AddressSubject;
|
||||
|
||||
#addresses: AddressSubject;
|
||||
@@ -103,14 +103,18 @@ export default class Base {
|
||||
}
|
||||
|
||||
protected initKeyring (options: KeyringOptions): void {
|
||||
const keyring = testKeyring(options, true);
|
||||
const keyring = createTestKeyring(options, true);
|
||||
|
||||
if (isBoolean(options.isDevelopment)) {
|
||||
this.setDevMode(options.isDevelopment);
|
||||
}
|
||||
|
||||
this.#keyring = keyring;
|
||||
this._genesisHash = options.genesisHash && options.genesisHash.toHex();
|
||||
this._genesisHash = options.genesisHash && (
|
||||
isString(options.genesisHash)
|
||||
? options.genesisHash.toString()
|
||||
: options.genesisHash.toHex()
|
||||
);
|
||||
this._store = options.store || this._store;
|
||||
|
||||
this.addAccountPairs();
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringPair, KeyringPair$Meta, KeyringPair$Json } from '@polkadot/keyring/types';
|
||||
import { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import { AddressSubject, SingleAddress } from './observable/types';
|
||||
import { CreateResult, KeyringAddress, KeyringAddressType, KeyringItemType, KeyringJson, KeyringJson$Meta, KeyringOptions, KeyringStruct } from './types';
|
||||
import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '@polkadot/keyring/types';
|
||||
import type { EncryptedJson } from '@polkadot/util-crypto/json/types';
|
||||
import type { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import type { AddressSubject, SingleAddress } from './observable/types';
|
||||
import type { CreateResult, KeyringAddress, KeyringAddressType, KeyringItemType, KeyringJson, KeyringJson$Meta, KeyringOptions, KeyringPairs$Json, KeyringStruct } from './types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import createPair from '@polkadot/keyring/pair';
|
||||
import chains from '@polkadot/ui-settings/defaults/chains';
|
||||
import { bnToBn, hexToU8a, isHex, isString, u8aSorted } from '@polkadot/util';
|
||||
import { base64Decode, createKeyMulti } from '@polkadot/util-crypto';
|
||||
|
||||
import env from './observable/development';
|
||||
import Base from './Base';
|
||||
import { accountKey, addressKey, accountRegex, addressRegex, contractKey, contractRegex } from './defaults';
|
||||
import keyringOption from './options';
|
||||
import { createPair } from '@polkadot/keyring/pair';
|
||||
import { chains } from '@polkadot/ui-settings/defaults/chains';
|
||||
import { bnToBn, hexToU8a, isHex, isString, stringToU8a, u8aSorted, u8aToString } from '@polkadot/util';
|
||||
import { base64Decode, createKeyMulti, jsonDecrypt, jsonEncrypt } from '@polkadot/util-crypto';
|
||||
|
||||
import { env } from './observable/env';
|
||||
import { Base } from './Base';
|
||||
import { accountKey, accountRegex, addressKey, addressRegex, contractKey, contractRegex } from './defaults';
|
||||
import { KeyringOption } from './options';
|
||||
|
||||
const RECENT_EXPIRY = 24 * 60 * 60;
|
||||
|
||||
@@ -23,6 +25,8 @@ const RECENT_EXPIRY = 24 * 60 * 60;
|
||||
// Chain determination occurs outside of Keyring. Loading `keyring.loadAll({ type: 'ed25519' | 'sr25519' })` is triggered
|
||||
// from the API after the chain is received
|
||||
export class Keyring extends Base implements KeyringStruct {
|
||||
public readonly keyringOption = new KeyringOption();
|
||||
|
||||
#stores = {
|
||||
account: (): AddressSubject => this.accounts,
|
||||
address: (): AddressSubject => this.addresses,
|
||||
@@ -79,6 +83,24 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
return pair.toJson(password);
|
||||
}
|
||||
|
||||
public async backupAccounts (addresses: string[], password: string): Promise<KeyringPairs$Json> {
|
||||
const accountPromises = addresses.map((address) => {
|
||||
return new Promise<KeyringJson>((resolve) => {
|
||||
this._store.get(accountKey(address), resolve);
|
||||
});
|
||||
});
|
||||
|
||||
const accounts = await Promise.all(accountPromises);
|
||||
|
||||
return {
|
||||
...jsonEncrypt(stringToU8a(JSON.stringify(accounts)), ['batch-pkcs8'], password),
|
||||
accounts: accounts.map((account) => ({
|
||||
address: account.address,
|
||||
meta: account.meta
|
||||
}))
|
||||
};
|
||||
}
|
||||
|
||||
public createFromJson (json: KeyringPair$Json, meta: KeyringPair$Meta = {}): KeyringPair {
|
||||
return this.keyring.createFromJson({ ...json, meta: { ...(json.meta || {}), meta } });
|
||||
}
|
||||
@@ -93,7 +115,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
json.meta.whenEdited = Date.now();
|
||||
|
||||
this.keyring.addFromJson(json);
|
||||
this.accounts.add(this._store, pair.address, json);
|
||||
this.accounts.add(this._store, pair.address, json, pair.type);
|
||||
}
|
||||
|
||||
public forgetAccount (address: string): void {
|
||||
@@ -119,7 +141,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
return Object
|
||||
.keys(available)
|
||||
.map((address): KeyringAddress => this.getAddress(address, 'account') as KeyringAddress)
|
||||
.filter((account): boolean => env.isDevelopment() || account.meta.isTesting !== true);
|
||||
.filter((account) => env.isDevelopment() || account.meta.isTesting !== true);
|
||||
}
|
||||
|
||||
public getAddress (_address: string | Uint8Array, type: KeyringItemType | null = null): KeyringAddress | undefined {
|
||||
@@ -178,7 +200,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
// FIXME Just for the transition period (ignoreChecksum)
|
||||
const pair = this.keyring.addFromJson(json as KeyringPair$Json, true);
|
||||
|
||||
this.accounts.add(this._store, pair.address, json);
|
||||
this.accounts.add(this._store, pair.address, json, pair.type);
|
||||
}
|
||||
|
||||
const [, hexAddr] = key.split(':');
|
||||
@@ -235,7 +257,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
};
|
||||
const pair = this.keyring.addFromAddress(address, json.meta);
|
||||
|
||||
this.accounts.add(this._store, pair.address, json);
|
||||
this.accounts.add(this._store, pair.address, json, pair.type);
|
||||
}
|
||||
|
||||
private allowGenesis (json?: KeyringJson | { meta: KeyringJson$Meta } | null): boolean {
|
||||
@@ -259,32 +281,40 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
|
||||
this._store.all((key: string, json: KeyringJson): void => {
|
||||
if (options.filter ? options.filter(json) : true) {
|
||||
if (this.allowGenesis(json)) {
|
||||
if (accountRegex.test(key)) {
|
||||
this.loadAccount(json, key);
|
||||
} else if (addressRegex.test(key)) {
|
||||
this.loadAddress(json, key);
|
||||
} else if (contractRegex.test(key)) {
|
||||
this.loadContract(json, key);
|
||||
try {
|
||||
if (this.allowGenesis(json)) {
|
||||
if (accountRegex.test(key)) {
|
||||
this.loadAccount(json, key);
|
||||
} else if (addressRegex.test(key)) {
|
||||
this.loadAddress(json, key);
|
||||
} else if (contractRegex.test(key)) {
|
||||
this.loadContract(json, key);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
injected.forEach((account): void => {
|
||||
if (this.allowGenesis(account)) {
|
||||
this.loadInjected(account.address, account.meta);
|
||||
try {
|
||||
this.loadInjected(account.address, account.meta);
|
||||
} catch (error) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
keyringOption.init(this);
|
||||
this.keyringOption.init(this);
|
||||
}
|
||||
|
||||
public restoreAccount (json: KeyringPair$Json, password: string): KeyringPair {
|
||||
const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519';
|
||||
const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type];
|
||||
const pair = createPair(
|
||||
{ toSS58: this.encodeAddress, type: cryptoType },
|
||||
{ toSS58: this.encodeAddress, type: cryptoType as KeypairType },
|
||||
{ publicKey: this.decodeAddress(json.address, true) },
|
||||
json.meta,
|
||||
isHex(json.encoded) ? hexToU8a(json.encoded) : base64Decode(json.encoded),
|
||||
@@ -299,13 +329,21 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
return pair;
|
||||
}
|
||||
|
||||
public restoreAccounts (json: EncryptedJson, password: string): void {
|
||||
const accounts: KeyringJson[] = JSON.parse(u8aToString(jsonDecrypt(json, password))) as KeyringJson[];
|
||||
|
||||
accounts.forEach((account) => {
|
||||
this.loadAccount(account, accountKey(account.address));
|
||||
});
|
||||
}
|
||||
|
||||
public saveAccount (pair: KeyringPair, password?: string): KeyringPair$Json {
|
||||
this.addTimestamp(pair);
|
||||
|
||||
const json = pair.toJson(password);
|
||||
|
||||
this.keyring.addFromJson(json);
|
||||
this.accounts.add(this._store, pair.address, json);
|
||||
this.accounts.add(this._store, pair.address, json, pair.type);
|
||||
|
||||
return json;
|
||||
}
|
||||
@@ -317,7 +355,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
pair.setMeta(meta);
|
||||
json.meta = pair.meta;
|
||||
|
||||
this.accounts.add(this._store, address, json);
|
||||
this.accounts.add(this._store, address, json, pair.type);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -364,7 +402,3 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
return this.addresses.subject.getValue()[address];
|
||||
}
|
||||
}
|
||||
|
||||
const keyringInstance = new Keyring();
|
||||
|
||||
export default keyringInstance;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { u8aToHex } from '@polkadot/util';
|
||||
import { decodeAddress } from '@polkadot/keyring';
|
||||
import { u8aToHex } from '@polkadot/util';
|
||||
|
||||
const ACCOUNT_PREFIX = 'account:';
|
||||
const ADDRESS_PREFIX = 'address:';
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { packageInfo as settingsInfo } from '@polkadot/ui-settings/packageInfo';
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, typeof __dirname !== 'undefined' && __dirname, [settingsInfo]);
|
||||
@@ -1,17 +1,15 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
import './detectPackage';
|
||||
|
||||
import keyring, { Keyring } from './Keyring';
|
||||
import Ledger from './ledger';
|
||||
import { Keyring } from './Keyring';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
detectPackage(require('./package.json'), typeof __dirname !== 'undefined' && __dirname);
|
||||
export { Ledger } from '@polkadot/hw-ledger';
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
const keyring = new Keyring();
|
||||
|
||||
export { Keyring, keyring };
|
||||
|
||||
export default keyring;
|
||||
|
||||
export {
|
||||
Keyring,
|
||||
Ledger
|
||||
};
|
||||
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2021 @polkadot/util authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Be able to import json in TS
|
||||
// https://stackoverflow.com/questions/49996456/importing-json-file-in-typescript
|
||||
declare module '*.json' {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const value: any;
|
||||
|
||||
export default value;
|
||||
}
|
||||
@@ -1,116 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
import { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types';
|
||||
|
||||
import { ResponseBase, SubstrateApp, newKusamaApp, newPolkadotApp } from '@zondax/ledger-polkadot';
|
||||
import { assert, bufferToU8a, u8aToBuffer, u8aToHex } from '@polkadot/util';
|
||||
|
||||
import allNode from './transportsNode';
|
||||
import allWeb from './transportsWeb';
|
||||
|
||||
export const LEDGER_DEFAULT_ACCOUNT = 0x80000000;
|
||||
|
||||
export const LEDGER_DEFAULT_CHANGE = 0x80000000;
|
||||
|
||||
export const LEDGER_DEFAULT_INDEX = 0x80000000;
|
||||
|
||||
const SUCCESS_CODE = 0x9000;
|
||||
|
||||
const transports = allNode.concat(allWeb);
|
||||
|
||||
const APPS: Record<string, (transport: Transport) => SubstrateApp> = {
|
||||
kusama: newKusamaApp,
|
||||
polkadot: newPolkadotApp
|
||||
};
|
||||
|
||||
type Chain = keyof typeof APPS;
|
||||
|
||||
// A very basic wrapper for a ledger app -
|
||||
// - it connects automatically, creating an app as required
|
||||
// - Promises return errors (instead of wrapper errors)
|
||||
export default class Ledger {
|
||||
#app: SubstrateApp | null = null;
|
||||
|
||||
#chain: Chain;
|
||||
|
||||
#transport: LedgerTypes;
|
||||
|
||||
constructor (transport: LedgerTypes, chain: Chain) {
|
||||
// u2f is deprecated
|
||||
assert(['hid', 'webusb'].includes(transport), `Unsupported transport ${transport}`);
|
||||
assert(Object.keys(APPS).includes(chain), `Unsupported chain ${chain}`);
|
||||
|
||||
this.#chain = chain;
|
||||
this.#transport = transport;
|
||||
}
|
||||
|
||||
public async getAddress (confirm = false, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerAddress> {
|
||||
return this.#withApp(async (app: SubstrateApp): Promise<LedgerAddress> => {
|
||||
const { address, pubKey } = await this.#wrapError(app.getAddress(account + accountOffset, change, addressIndex + addressOffset, confirm));
|
||||
|
||||
return {
|
||||
address,
|
||||
publicKey: `0x${pubKey}`
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
public async getVersion (): Promise<LedgerVersion> {
|
||||
return this.#withApp(async (app: SubstrateApp): Promise<LedgerVersion> => {
|
||||
const { device_locked: isLocked, major, minor, patch, test_mode: isTestMode } = await this.#wrapError(app.getVersion());
|
||||
|
||||
return {
|
||||
isLocked,
|
||||
isTestMode,
|
||||
version: [major, minor, patch]
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
public async sign (message: Uint8Array, accountOffset = 0, addressOffset = 0, { account = LEDGER_DEFAULT_ACCOUNT, addressIndex = LEDGER_DEFAULT_INDEX, change = LEDGER_DEFAULT_CHANGE }: Partial<AccountOptions> = {}): Promise<LedgerSignature> {
|
||||
return this.#withApp(async (app: SubstrateApp): Promise<LedgerSignature> => {
|
||||
const buffer = u8aToBuffer(message);
|
||||
const { signature } = await this.#wrapError(app.sign(account + accountOffset, change, addressIndex + addressOffset, buffer));
|
||||
|
||||
return {
|
||||
signature: u8aToHex(bufferToU8a(signature))
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
#getApp = async (): Promise<SubstrateApp> => {
|
||||
if (!this.#app) {
|
||||
const def = transports.find(({ type }) => type === this.#transport);
|
||||
|
||||
assert(def, `Unable to find a transport for ${this.#transport}`);
|
||||
|
||||
const transport = await def.create();
|
||||
|
||||
this.#app = APPS[this.#chain](transport);
|
||||
}
|
||||
|
||||
return this.#app;
|
||||
};
|
||||
|
||||
#withApp = async <T> (fn: (app: SubstrateApp) => Promise<T>): Promise<T> => {
|
||||
try {
|
||||
const app = await this.#getApp();
|
||||
|
||||
return await fn(app);
|
||||
} catch (error) {
|
||||
this.#app = null;
|
||||
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
#wrapError = async <T extends ResponseBase> (promise: Promise<T>): Promise<T> => {
|
||||
const result = await promise;
|
||||
|
||||
assert(result.return_code === SUCCESS_CODE, result.error_message);
|
||||
|
||||
return result;
|
||||
};
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { TransportDef } from './types';
|
||||
|
||||
const transports: TransportDef[] = [];
|
||||
|
||||
export default transports;
|
||||
@@ -1,17 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { TransportDef } from './types';
|
||||
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
import LedgerHid from '@ledgerhq/hw-transport-node-hid';
|
||||
|
||||
const transports: TransportDef[] = [
|
||||
{
|
||||
create: (): Promise<Transport> =>
|
||||
LedgerHid.create(),
|
||||
type: 'hid'
|
||||
}
|
||||
];
|
||||
|
||||
export default transports;
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { TransportDef } from './types';
|
||||
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
import LedgerWebUSB from '@ledgerhq/hw-transport-webusb';
|
||||
|
||||
const transports: TransportDef[] = [
|
||||
// deprecated
|
||||
// import LedgerU2F from '@ledgerhq/hw-transport-u2f';
|
||||
// {
|
||||
// create: (): Promise<Transport> =>
|
||||
// LedgerU2F.create(),
|
||||
// type: 'u2f'
|
||||
// },
|
||||
{
|
||||
create: (): Promise<Transport> =>
|
||||
LedgerWebUSB.create(),
|
||||
type: 'webusb'
|
||||
}
|
||||
];
|
||||
|
||||
export default transports;
|
||||
@@ -1,32 +0,0 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import Transport from '@ledgerhq/hw-transport';
|
||||
|
||||
export type LedgerTypes = 'hid' | 'u2f' | 'webusb';
|
||||
|
||||
export interface AccountOptions {
|
||||
account: number;
|
||||
addressIndex: number;
|
||||
change: number;
|
||||
}
|
||||
|
||||
export interface LedgerAddress {
|
||||
address: string;
|
||||
publicKey: string;
|
||||
}
|
||||
|
||||
export interface LedgerSignature {
|
||||
signature: string;
|
||||
}
|
||||
|
||||
export interface LedgerVersion {
|
||||
isLocked: boolean;
|
||||
isTestMode: boolean;
|
||||
version: [number, number, number];
|
||||
}
|
||||
|
||||
export interface TransportDef {
|
||||
create (): Promise<Transport>;
|
||||
type: LedgerTypes;
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { accountKey } from '../defaults';
|
||||
import { genericSubject } from './genericSubject';
|
||||
|
||||
import genericSubject from './genericSubject';
|
||||
|
||||
export default genericSubject(accountKey, true);
|
||||
export const accounts = genericSubject(accountKey, true);
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { addressKey } from '../defaults';
|
||||
import { genericSubject } from './genericSubject';
|
||||
|
||||
import genericSubject from './genericSubject';
|
||||
|
||||
export default genericSubject(addressKey);
|
||||
export const addresses = genericSubject(addressKey);
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { contractKey } from '../defaults';
|
||||
import { genericSubject } from './genericSubject';
|
||||
|
||||
import genericSubject from './genericSubject';
|
||||
|
||||
export default genericSubject(contractKey);
|
||||
export const contracts = genericSubject(contractKey);
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { BehaviorSubject } from '@polkadot/x-rxjs';
|
||||
|
||||
const subject = new BehaviorSubject(false);
|
||||
|
||||
export default {
|
||||
export const env = {
|
||||
isDevelopment: (): boolean =>
|
||||
subject.getValue(),
|
||||
set: (isDevelopment: boolean): void => {
|
||||
@@ -1,16 +1,17 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { SubjectInfo, AddressSubject, SingleAddress } from './types';
|
||||
import { KeyringJson, KeyringStore } from '../types';
|
||||
import type { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import type { KeyringJson, KeyringStore } from '../types';
|
||||
import type { AddressSubject, SingleAddress, SubjectInfo } from './types';
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { BehaviorSubject } from '@polkadot/x-rxjs';
|
||||
|
||||
import createOptionItem from '../options/item';
|
||||
import development from './development';
|
||||
import { createOptionItem } from '../options/item';
|
||||
import { env } from './env';
|
||||
|
||||
function callNext (current: SubjectInfo, subject: BehaviorSubject<SubjectInfo>, withTest: boolean): void {
|
||||
const isDevMode = development.isDevelopment();
|
||||
const isDevMode = env.isDevelopment();
|
||||
const filtered: SubjectInfo = {};
|
||||
|
||||
Object.keys(current).forEach((key): void => {
|
||||
@@ -24,24 +25,25 @@ function callNext (current: SubjectInfo, subject: BehaviorSubject<SubjectInfo>,
|
||||
subject.next(filtered);
|
||||
}
|
||||
|
||||
export default function genericSubject (keyCreator: (address: string) => string, withTest = false): AddressSubject {
|
||||
export function genericSubject (keyCreator: (address: string) => string, withTest = false): AddressSubject {
|
||||
let current: SubjectInfo = {};
|
||||
const subject = new BehaviorSubject({});
|
||||
const next = (): void => callNext(current, subject, withTest);
|
||||
|
||||
development.subject.subscribe(next);
|
||||
env.subject.subscribe(next);
|
||||
|
||||
return {
|
||||
add: (store: KeyringStore, address: string, json: KeyringJson): SingleAddress => {
|
||||
add: (store: KeyringStore, address: string, json: KeyringJson, type?: KeypairType): SingleAddress => {
|
||||
current = { ...current };
|
||||
|
||||
current[address] = {
|
||||
json: { ...json, address },
|
||||
option: createOptionItem(address, json.meta.name)
|
||||
option: createOptionItem(address, json.meta.name),
|
||||
type
|
||||
};
|
||||
|
||||
// we do not store dev accounts, injected or hardware (the latter two are external/transient)
|
||||
if (!json.meta.isInjected && !json.meta.isHardware && (!json.meta.isTesting || development.isDevelopment())) {
|
||||
// we do not store dev or injected accounts (external/transient)
|
||||
if (!json.meta.isInjected && (!json.meta.isTesting || env.isDevelopment())) {
|
||||
store.set(keyCreator(address), json);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { SubjectInfo } from './types';
|
||||
import type { SubjectInfo } from './types';
|
||||
|
||||
import { combineLatest } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { combineLatest } from '@polkadot/x-rxjs';
|
||||
import { map } from '@polkadot/x-rxjs/operators';
|
||||
|
||||
import accounts from './accounts';
|
||||
import addresses from './addresses';
|
||||
import contracts from './contracts';
|
||||
import { accounts } from './accounts';
|
||||
import { addresses } from './addresses';
|
||||
import { contracts } from './contracts';
|
||||
|
||||
interface Result {
|
||||
accounts: SubjectInfo;
|
||||
@@ -16,7 +16,7 @@ interface Result {
|
||||
contracts: SubjectInfo;
|
||||
}
|
||||
|
||||
export default combineLatest(
|
||||
export const obervableAll = combineLatest(
|
||||
accounts.subject,
|
||||
addresses.subject,
|
||||
contracts.subject
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { KeyringSectionOption } from '../options/types';
|
||||
import { KeyringJson, KeyringStore } from '../types';
|
||||
import type { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import type { BehaviorSubject } from '@polkadot/x-rxjs';
|
||||
import type { KeyringSectionOption } from '../options/types';
|
||||
import type { KeyringJson, KeyringStore } from '../types';
|
||||
|
||||
export interface SingleAddress {
|
||||
json: KeyringJson;
|
||||
option: KeyringSectionOption;
|
||||
type?: KeypairType;
|
||||
}
|
||||
|
||||
export interface SubjectInfo {
|
||||
@@ -15,7 +17,7 @@ export interface SubjectInfo {
|
||||
}
|
||||
|
||||
export interface AddressSubject {
|
||||
add: (store: KeyringStore, address: string, json: KeyringJson) => SingleAddress;
|
||||
add: (store: KeyringStore, address: string, json: KeyringJson, type?: KeypairType) => SingleAddress;
|
||||
remove: (store: KeyringStore, address: string) => void;
|
||||
subject: BehaviorSubject<SubjectInfo>;
|
||||
}
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringStruct } from '../types';
|
||||
import keyringOptionInstance from '.';
|
||||
import type { KeyringStruct } from '../types';
|
||||
|
||||
import { KeyringOption } from '.';
|
||||
|
||||
const keyringOption = new KeyringOption();
|
||||
|
||||
describe('KeyringOption', (): void => {
|
||||
it('should not allow initOptions to be called more than once', (): void => {
|
||||
const state: Partial<KeyringStruct> = {};
|
||||
|
||||
// first call
|
||||
keyringOptionInstance.init(state as KeyringStruct);
|
||||
keyringOption.init(state as KeyringStruct);
|
||||
|
||||
// second call
|
||||
expect((): void => {
|
||||
keyringOptionInstance.init(state as KeyringStruct);
|
||||
keyringOption.init(state as KeyringStruct);
|
||||
}).toThrowError('Unable to initialise options more than once');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringStruct } from '../types';
|
||||
import { SingleAddress } from '../observable/types';
|
||||
import { KeyringOptions, KeyringOptionInstance, KeyringSectionOption, KeyringSectionOptions } from './types';
|
||||
import type { SingleAddress } from '../observable/types';
|
||||
import type { KeyringStruct } from '../types';
|
||||
import type { KeyringOptionInstance, KeyringOptions, KeyringSectionOption, KeyringSectionOptions } from './types';
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { assert } from '@polkadot/util';
|
||||
import { BehaviorSubject } from '@polkadot/x-rxjs';
|
||||
|
||||
import observableAll from '../observable';
|
||||
import { obervableAll } from '../observable';
|
||||
|
||||
let hasCalledInitOptions = false;
|
||||
|
||||
@@ -34,7 +34,7 @@ const sortByCreated = (a: SingleAddress, b: SingleAddress): number => {
|
||||
return 0;
|
||||
};
|
||||
|
||||
class KeyringOption implements KeyringOptionInstance {
|
||||
export class KeyringOption implements KeyringOptionInstance {
|
||||
public readonly optionsSubject: BehaviorSubject<KeyringOptions> = new BehaviorSubject(this.emptyOptions());
|
||||
|
||||
public createOptionHeader (name: string): KeyringSectionOption {
|
||||
@@ -48,7 +48,7 @@ class KeyringOption implements KeyringOptionInstance {
|
||||
public init (keyring: KeyringStruct): void {
|
||||
assert(!hasCalledInitOptions, 'Unable to initialise options more than once');
|
||||
|
||||
observableAll.subscribe((): void => {
|
||||
obervableAll.subscribe((): void => {
|
||||
const opts = this.emptyOptions();
|
||||
|
||||
this.addAccounts(keyring, opts);
|
||||
@@ -138,7 +138,3 @@ class KeyringOption implements KeyringOptionInstance {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const keyringOptionInstance = new KeyringOption();
|
||||
|
||||
export default keyringOptionInstance;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringSectionOption } from './types';
|
||||
import type { KeyringSectionOption } from './types';
|
||||
|
||||
import { isUndefined } from '@polkadot/util';
|
||||
|
||||
export default function createItem (address: string, _name?: string): KeyringSectionOption {
|
||||
export function createOptionItem (address: string, _name?: string): KeyringSectionOption {
|
||||
const name = isUndefined(_name)
|
||||
? (
|
||||
(address.length > 15)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringItemType, KeyringStruct } from '../types';
|
||||
import type { KeyringItemType, KeyringStruct } from '../types';
|
||||
|
||||
export interface KeyringSectionOption {
|
||||
key: string | null;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Auto-generated by @polkadot/dev, do not edit
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-keyring', version: '0.73.1' };
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringStore, KeyringJson } from '../types';
|
||||
import type { KeyringJson, KeyringStore } from '../types';
|
||||
|
||||
import store from 'store';
|
||||
|
||||
export default class BrowserStore implements KeyringStore {
|
||||
export class BrowserStore implements KeyringStore {
|
||||
public all (cb: (key: string, value: KeyringJson) => void): void {
|
||||
store.each((value: KeyringJson, key: string): void => {
|
||||
cb(key, value);
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { KeyringStore, KeyringJson } from '../types';
|
||||
import type { KeyringJson, KeyringStore } from '../types';
|
||||
|
||||
import fs from 'fs';
|
||||
import mkdirp from 'mkdirp';
|
||||
import path from 'path';
|
||||
|
||||
import { assert } from '@polkadot/util';
|
||||
|
||||
// NOTE untested and unused by any known apps, probably broken in various mysterious ways
|
||||
export default class FileStore implements KeyringStore {
|
||||
export class FileStore implements KeyringStore {
|
||||
#path: string;
|
||||
|
||||
constructor (path: string) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { default as BrowserStore } from './Browser';
|
||||
export { default as FileStore } from './File';
|
||||
export { BrowserStore } from './Browser';
|
||||
export { FileStore } from './File';
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-keyring authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { Hash } from '@polkadot/types/interfaces';
|
||||
import { KeyringInstance as BaseKeyringInstance, KeyringPair, KeyringPair$Meta, KeyringPair$Json, KeyringOptions as KeyringOptionsBase } from '@polkadot/keyring/types';
|
||||
import { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import { AddressSubject, SingleAddress } from './observable/types';
|
||||
import type { KeyringInstance as BaseKeyringInstance, KeyringOptions as KeyringOptionsBase, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '@polkadot/keyring/types';
|
||||
import type { EncryptedJson } from '@polkadot/util-crypto/json/types';
|
||||
import type { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import type { AddressSubject, SingleAddress } from './observable/types';
|
||||
|
||||
export interface ContractMeta {
|
||||
abi: string;
|
||||
@@ -31,6 +31,10 @@ export interface KeyringJson {
|
||||
meta: KeyringJson$Meta;
|
||||
}
|
||||
|
||||
export interface KeyringPairs$Json extends EncryptedJson {
|
||||
accounts: KeyringJson[];
|
||||
}
|
||||
|
||||
export interface KeyringStore {
|
||||
all: (cb: (key: string, value: KeyringJson) => void) => void;
|
||||
get: (key: string, cb: (value: KeyringJson) => void) => void;
|
||||
@@ -40,7 +44,7 @@ export interface KeyringStore {
|
||||
|
||||
export interface KeyringOptions extends KeyringOptionsBase {
|
||||
filter?: (json: KeyringJson) => boolean;
|
||||
genesisHash?: Hash;
|
||||
genesisHash?: string | { toHex: () => string };
|
||||
isDevelopment?: boolean;
|
||||
store?: KeyringStore;
|
||||
}
|
||||
@@ -71,6 +75,7 @@ export interface KeyringStruct {
|
||||
addPair: (pair: KeyringPair, password: string) => CreateResult;
|
||||
addUri: (suri: string, password?: string, meta?: KeyringPair$Meta, type?: KeypairType) => CreateResult;
|
||||
backupAccount: (pair: KeyringPair, password: string) => KeyringPair$Json;
|
||||
backupAccounts: (addresses: string[], password: string) => Promise<KeyringPairs$Json>
|
||||
createFromUri (suri: string, meta?: KeyringPair$Meta, type?: KeypairType): KeyringPair;
|
||||
decodeAddress: (key: string | Uint8Array) => Uint8Array;
|
||||
encodeAddress: (key: string | Uint8Array) => string;
|
||||
@@ -90,6 +95,7 @@ export interface KeyringStruct {
|
||||
isPassValid: (password: string) => boolean;
|
||||
loadAll: (options: KeyringOptions) => void;
|
||||
restoreAccount: (json: KeyringPair$Json, password: string) => KeyringPair;
|
||||
restoreAccounts: (json: EncryptedJson, password: string) => void;
|
||||
saveAccount: (pair: KeyringPair, password?: string) => KeyringPair$Json;
|
||||
saveAccountMeta: (pair: KeyringPair, meta: KeyringPair$Meta) => void;
|
||||
saveAddress: (address: string, meta: KeyringPair$Meta) => KeyringPair$Json;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "@polkadot/ui-settings",
|
||||
"version": "0.62.1",
|
||||
"version": "0.73.1",
|
||||
"type": "module",
|
||||
"description": "Manages app settings",
|
||||
"main": "index.js",
|
||||
"sideEffects": false,
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [
|
||||
"Jaco Greeff <jacogr@gmail.com>"
|
||||
],
|
||||
"maintainers": [],
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@polkadot/networks": "^4.0.1",
|
||||
"@polkadot/util": "^4.0.1",
|
||||
"@babel/runtime": "^7.13.10",
|
||||
"@polkadot/networks": "^6.1.1",
|
||||
"@polkadot/util": "^6.1.1",
|
||||
"eventemitter3": "^4.0.7",
|
||||
"store": "^2.0.12"
|
||||
},
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-settings authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-settings authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Option, SettingsStruct } from './types';
|
||||
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import store from 'store';
|
||||
|
||||
import { isUndefined } from '@polkadot/util';
|
||||
|
||||
import { CAMERA_DEFAULT, CAMERA, CRYPTOS, CRYPTOS_ETH, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING_DEFAULT, LOCKING, PREFIX_DEFAULT, PREFIXES, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults';
|
||||
import { Option, SettingsStruct } from './types';
|
||||
import { CAMERA, CAMERA_DEFAULT, CRYPTOS, CRYPTOS_ETH, CRYPTOS_LEDGER, ENDPOINT_DEFAULT, ENDPOINTS, ICON_DEFAULT, ICONS, LANGUAGE_DEFAULT, LEDGER_CONN, LEDGER_CONN_DEFAULT, LOCKING, LOCKING_DEFAULT, PREFIX_DEFAULT, PREFIXES, UIMODE_DEFAULT, UIMODES, UITHEME_DEFAULT, UITHEMES } from './defaults';
|
||||
|
||||
type ChangeCallback = (settings: SettingsStruct) => void;
|
||||
type OnTypes = 'change';
|
||||
@@ -104,6 +106,10 @@ export class Settings implements SettingsStruct {
|
||||
return CRYPTOS_ETH;
|
||||
}
|
||||
|
||||
public get availableCryptosLedger (): Option[] {
|
||||
return CRYPTOS_LEDGER;
|
||||
}
|
||||
|
||||
public get availableIcons (): Option[] {
|
||||
return ICONS;
|
||||
}
|
||||
@@ -168,6 +174,4 @@ export class Settings implements SettingsStruct {
|
||||
}
|
||||
}
|
||||
|
||||
const settings = new Settings();
|
||||
|
||||
export default settings;
|
||||
export const settings = new Settings();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2020 @polkadot/ui-settings authors & contributors
|
||||
// Copyright 2017-2021 @polkadot/ui-settings authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import known from '@polkadot/networks';
|
||||
@@ -6,7 +6,7 @@ import known from '@polkadot/networks';
|
||||
type ChainDef = string[];
|
||||
|
||||
const chains: Record <string, ChainDef> = known
|
||||
.filter(({ genesisHash }) => genesisHash.length > 1)
|
||||
.filter((n) => n.genesisHash.length)
|
||||
.reduce((chains, { genesisHash, network }) => ({ ...chains, [network]: genesisHash }), {});
|
||||
|
||||
export default chains;
|
||||
export { chains };
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user