Compare commits

...

104 Commits

Author SHA1 Message Date
github-actions[bot]
a1ea61688e [CI Skip] release/stable 2.7.2
skip-checks: true
2022-07-04 06:43:00 +00:00
Jaco
a3b0e3607f 2.7.2 (#660) 2022-07-04 09:40:43 +03:00
github-actions[bot]
c802f71617 [CI Skip] release/stable 2.7.1
skip-checks: true
2022-07-01 17:51:56 +00:00
Jaco
525ace3f52 2.7.1 (#659) 2022-07-01 20:49:24 +03:00
Derek Colley
42f1b3a6c3 Remove redundant div wrappers in vue-identicon (#643)
* Remove redundant `div` wrappers in vue-identicon

* Delete console.debug statememt

* remove redundant declarations

* fix lint errors

* refactor for codeclimate
2022-07-01 18:06:15 +03:00
github-actions[bot]
5ce56670d1 [CI Skip] release/stable 2.6.2
skip-checks: true
2022-06-25 06:02:24 +00:00
Jaco
414392e69b 2.6.2 (#657)
* 2.6.2

* CHANGELOG
2022-06-25 08:59:36 +03:00
github-actions[bot]
ae5b64a75f [CI Skip] bump/beta 2.6.2-0-x
skip-checks: true
2022-06-23 14:27:01 +00:00
Jaco
f2077dcab2 Bump dev deps (#656) 2022-06-23 17:24:01 +03:00
github-actions[bot]
75d03bb15a [CI Skip] release/stable 2.6.1
skip-checks: true
2022-06-23 09:01:27 +00:00
Jaco
269ec7adb7 2.6.1 (#655) 2022-06-23 11:58:22 +03:00
github-actions[bot]
03e6974c25 [CI Skip] release/beta 2.5.2-0
skip-checks: true
2022-06-21 04:49:38 +00:00
Jaco
a31c524878 Bump TS to 4.7.4 (#654) 2022-06-21 07:47:19 +03:00
github-actions[bot]
a057f0c279 [CI Skip] release/stable 2.5.1
skip-checks: true
2022-06-19 05:37:35 +00:00
Jaco
06dcc3bc5b 2.5.1 (#653) 2022-06-19 08:35:18 +03:00
github-actions[bot]
fc3df455ef [CI Skip] release/beta 2.4.2-2
skip-checks: true
2022-06-12 08:14:09 +00:00
Jaco
121715231d Update issue template (#651) 2022-06-12 11:11:47 +03:00
github-actions[bot]
a35c1f98e8 [CI Skip] release/beta 2.4.2-1
skip-checks: true
2022-06-11 05:44:34 +00:00
Jaco
fbaf440766 Bump deps (& issue template) (#650) 2022-06-11 08:42:20 +03:00
github-actions[bot]
813c589752 [CI Skip] release/beta 2.4.2-0
skip-checks: true
2022-06-05 06:18:23 +00:00
Jaco
806ae4fe42 Bump deps (#649) 2022-06-05 09:16:01 +03:00
github-actions[bot]
75507c5fa7 [CI Skip] release/stable 2.4.1
skip-checks: true
2022-06-04 06:28:48 +00:00
Jaco
d1c265130e 2.4.1 (#648) 2022-06-04 09:26:22 +03:00
github-actions[bot]
0eb4663442 [CI Skip] release/beta 2.3.2-1
skip-checks: true
2022-06-04 04:49:49 +00:00
Jaco
9e134ff95e Bump deps (#647) 2022-06-04 07:47:13 +03:00
github-actions[bot]
c09d58bba1 [CI Skip] release/beta 2.3.2-0
skip-checks: true
2022-05-30 07:27:38 +00:00
Jaco
fdc2b5011b Bump TS (#645) 2022-05-30 10:24:01 +03:00
github-actions[bot]
420ad06a7e [CI Skip] release/stable 2.3.1
skip-checks: true
2022-05-30 06:16:17 +00:00
Jaco
28988479c5 2.3.1 (#644) 2022-05-30 09:13:48 +03:00
github-actions[bot]
700b04e2ec [CI Skip] release/stable 2.2.1
skip-checks: true
2022-05-14 05:13:26 +00:00
Jaco
b092fe8c6d 2.2.1 (#641) 2022-05-14 08:10:34 +03:00
github-actions[bot]
b25f6e46d8 [CI Skip] release/stable 2.1.1
skip-checks: true
2022-04-30 05:52:47 +00:00
Jaco
62e934dba7 2.1.1 (#638) 2022-04-30 08:49:49 +03:00
github-actions[bot]
cb073d755d [CI Skip] release/beta 2.0.2-2
skip-checks: true
2022-04-29 11:36:13 +00:00
Jaco
c9cd6898fe Bump TS (#637) 2022-04-29 14:33:40 +03:00
github-actions[bot]
106f2aac72 [CI Skip] release/beta 2.0.2-1
skip-checks: true
2022-04-27 07:41:11 +00:00
Jaco
16dbecf0d2 Bump @polkadot/dev (#636)
* Bump @polkadot/dev

* Rebump dev

* Add crypto polyfill

* Adjust expectations
2022-04-27 10:38:13 +03:00
github-actions[bot]
dc023fe2c6 [CI Skip] release/beta 2.0.2-0
skip-checks: true
2022-04-23 07:00:05 +00:00
Jaco
6c2d03a6c5 Remove jsx-runtime alias for React 18 (#635)
* Remove jsx-runtime alias for React 18

* Adjust override

* s/cb/fn/
2022-04-23 09:57:36 +03:00
github-actions[bot]
e4787f1b25 [CI Skip] release/stable 2.0.1
skip-checks: true
2022-04-09 08:00:12 +00:00
Jaco
779fedd4ae 2.0.1 (#633) 2022-04-09 10:57:41 +03:00
github-actions[bot]
08d71f0675 [CI Skip] release/beta 1.4.2-2
skip-checks: true
2022-04-06 13:03:58 +00:00
Jaco
e598c7bb42 Make icon generation more robust (#632)
* Make icon generation more robust

* Update packages/ui-shared/src/icons/polkadot.ts
2022-04-06 16:00:26 +03:00
github-actions[bot]
fb360420e5 [CI Skip] release/beta 1.4.2-1
skip-checks: true
2022-04-06 12:51:35 +00:00
Jaco
2184bb5adc Bump deps (#631) 2022-04-06 15:48:56 +03:00
github-actions[bot]
854e812ef3 [CI Skip] release/beta 1.4.2-0
skip-checks: true
2022-04-05 06:34:05 +00:00
Jaco
cc17aa3fc3 Bump @polkadot/dev (#630) 2022-04-05 09:31:31 +03:00
github-actions[bot]
d57a700d40 [CI Skip] release/stable 1.4.1
skip-checks: true
2022-03-27 08:52:24 +00:00
Jaco
37c398b1a7 1.4.1 (#629) 2022-03-27 11:49:56 +03:00
github-actions[bot]
2f27f2bac9 [CI Skip] release/beta 1.3.2-1
skip-checks: true
2022-03-27 06:27:47 +00:00
Jaco
090218d0b9 Bump TypeScript (#628) 2022-03-27 09:24:50 +03:00
github-actions[bot]
4799a69823 [CI Skip] release/beta 1.3.2-0
skip-checks: true
2022-03-23 05:55:21 +00:00
Jaco
6548982bb5 Bump dev (#627) 2022-03-23 07:52:25 +02:00
github-actions[bot]
d1fe833d0f [CI Skip] release/stable 1.3.1
skip-checks: true
2022-03-19 09:38:09 +00:00
Jaco
60c6168307 1.3.1 (#626) 2022-03-19 11:35:11 +02:00
github-actions[bot]
d0b418f4c8 [CI Skip] release/beta 1.2.2-0
skip-checks: true
2022-03-17 05:38:29 +00:00
Jaco
bce751eea1 Bump dev deps (#625) 2022-03-17 07:36:01 +02:00
github-actions[bot]
0029165ce2 [CI Skip] release/stable 1.2.1
skip-checks: true
2022-03-12 08:33:20 +00:00
Jaco
c4be7219ae 1.2.1 (#624) 2022-03-12 10:30:52 +02:00
github-actions[bot]
4755cd9f64 [CI Skip] release/beta 1.1.2-10
skip-checks: true
2022-03-10 08:01:47 +00:00
Jaco
2f7fd73daf Bump deps (#623) 2022-03-10 09:58:35 +02:00
github-actions[bot]
99337bebd4 [CI Skip] release/beta 1.1.2-9
skip-checks: true
2022-03-07 08:18:05 +00:00
Jaco
2331d7c92b Support bundlers where import.meta.url is undefined (#622) 2022-03-07 10:15:10 +02:00
github-actions[bot]
ece28e79b4 [CI Skip] release/beta 1.1.2-8
skip-checks: true
2022-03-04 07:43:17 +00:00
Jaco
00538595c1 Adjust auto actions (#621)
* Adjust auto actions

* Adjust
2022-03-04 09:40:58 +02:00
github-actions[bot]
b36d8ca632 [CI Skip] release/beta 1.1.2-7
skip-checks: true
2022-03-03 09:31:14 +00:00
Jaco
f4f815434f Remove checkout from auto-{approve, merge} actions (#620) 2022-03-03 11:28:04 +02:00
github-actions[bot]
a1f64b8ac6 [CI Skip] release/beta 1.1.2-6
skip-checks: true
2022-03-02 05:23:28 +00:00
Jaco
2cd4e2d45e Replace mergify with action (#619) 2022-03-02 07:20:49 +02:00
github-actions[bot]
f622b77400 [CI Skip] release/beta 1.1.2-5
skip-checks: true
2022-03-01 10:17:36 +00:00
Jaco
5616acf038 Bump TS (#618) 2022-03-01 10:14:37 +00:00
github-actions[bot]
ca64769cd1 [CI Skip] release/beta 1.1.2-4
skip-checks: true
2022-02-28 07:08:22 +00:00
Jaco
edbb65f1a5 Adjust approve workflow (#617)
* Adjust approve workflow

* Update .github/workflows/approve.yml
2022-02-28 07:05:56 +00:00
github-actions[bot]
7b7cd6a32a [CI Skip] release/beta 1.1.2-3
skip-checks: true
2022-02-23 10:36:23 +00:00
Jaco
278fb511f0 Skip job on non-local repo 2022-02-23 12:33:49 +02:00
github-actions[bot]
8604939a2f [CI Skip] release/beta 1.1.2-2
skip-checks: true
2022-02-23 10:03:02 +00:00
Jaco
e6f5b3f161 Use jacogr/action-approve (#616) 2022-02-23 12:00:07 +02:00
github-actions[bot]
e9fec39840 [CI Skip] release/beta 1.1.2-1
skip-checks: true
2022-02-16 07:17:13 +00:00
Jaco
3d925abc02 Bump deps (#615) 2022-02-16 07:14:11 +00:00
github-actions[bot]
84baf9e8cc [CI Skip] release/beta 1.1.2-0
skip-checks: true
2022-02-15 07:26:41 +00:00
Jaco
f8e4de56d2 Add mergify (#614) 2022-02-15 09:24:20 +02:00
github-actions[bot]
1205cebcf9 [CI Skip] release/stable 1.1.1
skip-checks: true
2022-02-14 08:00:15 +00:00
Jaco
6e20fbf5ac 1.1.1 (#613) 2022-02-14 09:57:22 +02:00
github-actions[bot]
3ee4e229c4 [CI Skip] release/beta 1.0.2-3
skip-checks: true
2022-02-13 12:52:50 +00:00
Jaco
35d14ce9ed Don't run scripts on CI (#612)
* Don't run scripts on CI

* Bump deps
2022-02-13 14:50:19 +02:00
github-actions[bot]
d4947f0408 [CI Skip] release/beta 1.0.2-2
skip-checks: true
2022-02-10 05:23:52 +00:00
Jaco
a85419a50f Bump dev deps (#610) 2022-02-10 07:20:48 +02:00
github-actions[bot]
44b7a41948 [CI Skip] release/beta 1.0.2-1
skip-checks: true
2022-02-01 07:42:12 +00:00
Jaco
cd936ed89c timerDelay property to QR display for frame timing (#608)
* timerDelay property to QR display for frame timing

* Bump deps
2022-02-01 09:39:41 +02:00
github-actions[bot]
184a6293cc [CI Skip] release/beta 1.0.2-0
skip-checks: true
2022-02-01 07:07:44 +00:00
Jaco
6a279beff3 Adjust QR state/timeout ordering (#607)
* Adjust QR state/timeout ordering

* CHANGELOG
2022-02-01 09:05:09 +02:00
Jaco
35c8535be1 Cleanup webpack example configs (#606)
* Remove Buffer/process plugins

* Adjust

* Cleanup README
2022-01-29 11:54:55 +02:00
github-actions[bot]
7a04464686 [CI Skip] release/stable 1.0.1
skip-checks: true
2022-01-29 07:07:50 +00:00
Jaco
ebac0cda56 1.0.1 (#605) 2022-01-29 09:05:20 +02:00
github-actions[bot]
6cef850c7b [CI Skip] release/beta 0.89.4-1
skip-checks: true
2022-01-29 06:39:44 +00:00
Jaco
4ab2b3fea6 Remove Ledger export in ui-keyring (#604) 2022-01-29 08:37:10 +02:00
github-actions[bot]
c03cfde36b [CI Skip] release/beta 0.89.4-0
skip-checks: true
2022-01-28 05:58:22 +00:00
Jaco
be0c446248 Bump deps (#603) 2022-01-28 07:55:47 +02:00
github-actions[bot]
8951958a18 [CI Skip] release/stable 0.89.3
skip-checks: true
2022-01-23 06:50:44 +00:00
Jaco
0d8151f34c 0.89.3 (#601) 2022-01-23 08:48:00 +02:00
github-actions[bot]
05fb9e5a74 [CI Skip] release/beta 0.89.3-1
skip-checks: true
2022-01-22 11:56:43 +00:00
Jaco
6505e28bed Bump deps (#600) 2022-01-22 13:54:05 +02:00
github-actions[bot]
c3f102304e [CI Skip] release/beta 0.89.3-0
skip-checks: true
2022-01-19 12:23:39 +00:00
Jaco
c2eab17f1e Bump 3rd party deps (#599)
* Bump 3rd party deps

* Rebump dev
2022-01-19 14:20:12 +02:00
69 changed files with 4224 additions and 4731 deletions

1
.123current Normal file
View File

@@ -0,0 +1 @@
2.7.2

View File

@@ -23,4 +23,7 @@
0.87.5
0.87.6
0.87.7
0.89.2
0.89.2
0.89.3
2.6.2
2.7.2

View File

@@ -7,6 +7,7 @@ module.exports = {
...base,
ignorePatterns: [
...base.ignorePatterns,
'jest/**/*',
'**/*.d.ts'
],
parserOptions: {

50
.github/issue_template.md vendored Normal file
View File

@@ -0,0 +1,50 @@
<!--
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
-->
* **I'm submitting a ...**
<!--- Try and classify your actual report -->
- [ ] Bug report
- [ ] Feature request
- [ ] Support request (please bear the comments above in mind)
- [ ] Other
* **What is the current behavior and expected behavior?**
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
* **What is the motivation for changing the behavior?**
<!--- Not obligatory, but suggest a motivation for the request -->
<!--- or ideas how to implement the addition or change -->
* **Please tell us about your environment:**
<!--- Include as many relevant details about the environment you experienced the issue in -->
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
- Version:
- Environment:
- [ ] Node.js
- [ ] Browser
- [ ] Other (limited support for other environments available)
- Language:
- [ ] JavaScript
- [ ] TypeScript
- [ ] Other

16
.github/workflows/auto-approve.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: bot
on:
pull_request:
types: [labeled]
jobs:
approve:
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
runs-on: ubuntu-latest
steps:
- uses: jacogr/action-approve@master
with:
authors: jacogr
labels: -auto
token: ${{ secrets.GH_PAT_BOT }}

16
.github/workflows/auto-merge.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: bot
on:
pull_request:
types: [labeled]
jobs:
merge:
runs-on: ubuntu-latest
steps:
- uses: jacogr/action-merge@master
with:
checks: build,lint,test
labels: -auto
strategy: squash
token: ${{ secrets.GH_PAT_BOT }}

View File

@@ -7,6 +7,8 @@ on:
jobs:
lock:
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: dessant/lock-threads@v2
with:

View File

@@ -8,6 +8,8 @@ jobs:
step: ['lint', 'test', 'build']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v2
- name: ${{ matrix.step }}

View File

@@ -12,17 +12,18 @@ jobs:
step: ['build:release']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
GH_PAT: ${{ secrets.GH_PAT }}
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}
- name: ${{ matrix.step }}
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
GH_PAT: ${{ secrets.GH_PAT }}
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
yarn install --immutable | grep -v 'YN0013'
yarn ${{ matrix.step }}

View File

@@ -9,6 +9,8 @@ jobs:
check:
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v2
- uses: returntocorp/semgrep-action@v1

View File

@@ -6,6 +6,8 @@ on:
jobs:
stale:
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/stale@v3
with:

2
.gitignore vendored
View File

@@ -1,4 +1,6 @@
build/
build-cjs/
build-esm/
build-docs/
coverage/
node_modules/

File diff suppressed because one or more lines are too long

785
.yarn/releases/yarn-3.2.0.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@@ -10,4 +10,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version"
yarnPath: .yarn/releases/yarn-3.1.1.cjs
yarnPath: .yarn/releases/yarn-3.2.0.cjs

View File

@@ -1,5 +1,137 @@
# CHANGELOG
## 2.7.2 Jul 4, 2022
Changes:
- Bump to `@polkadot/util-crypto` 9.7.2 (w/ `@polkadot/wasm-crypto` 6.2.2)
## 2.7.1 Jul 1, 2022
Contributed:
- Remove extra div wrappers in `vue-identicon` (Thanks to https://github.com/dcolley)
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.7.1
## 2.6.2 Jun 25, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.2
## 2.6.1 Jun 23, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.1
- Upgrade libs to latest stable versions
## 2.5.1 Jun 19, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.5.1
- Upgrade libs to latest stable versions
## 2.4.1 Jun 4, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.4.1
## 2.3.1 May 30, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.3.1
## 2.2.1 May 14, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.2.1
## 2.1.1 Apr 30, 2022
Changes:
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.1.1
- Adjust Jest test init for latest `@polkadot/dev`
## 2.0.1 Apr 9, 2022
- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage.
Changes:
- Adjust Polkadot icon generation with lazy init
- Output commonjs files under the `cjs/**` root
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.0.1
## 1.4.1 Mar 27, 2022
Changes:
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.7.1
## 1.3.1 Mar 19, 2022
Changes:
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.6.1
- Additional workaround for Vite bundling
## 1.2.1 Mar 12, 2022
Changes:
- Adjust for bundlers where `import.meta.url` is undefined
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.5.1
## 1.1.1 Feb 14, 2022
Changes:
- Adjust ordering in state & timeouts for QR display
- Add `timerDelay` property to QR display to control frame timeouts
- Adjust webpack example config (cleanups, remove unneeded plugins)
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.4.1
## 1.0.1 Jan 29, 2022
**Breaking change** The `Ledger` export from `@polkadot/ui-keyring` has been removed. For users of this class, import it directly from `@polkadot/hw-ledger`
**Important** This is the first release in the long-outstanding `1.x` range. Apart from the notable breaking changes, it has no functional differences to the previous versions.
Changes:
- Remove `Ledger` export in `ui-keyring`
## 0.89.3 Jan 23, 2022
Changes:
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.3.3
## 0.89.2 Jan 15, 2022
Changes:

View File

@@ -1,4 +1,4 @@
573 Jaco 0.89.2 (#598)
625 Jaco 2.7.2 (#660)
7 YJ fix #224: decrease frame size to 1024, set multipart bool (#225)
4 Antoine Estienne Refactor logic to better use prefix (#491)
4 kwingram25 fix ff api url issue (#289)
@@ -18,6 +18,7 @@
1 Axel Chalon Simplify KeyringAddress interface (#144)
1 Cameron Franz react-native example app port (#223)
1 carumusan Add kulupu (#342)
1 Derek Colley Remove redundant `div` wrappers in vue-identicon (#643)
1 Harry Liu Update README.md (#166)
1 Jake Naviasky Add Edgeware chain prefix to settings. (#317)
1 Logan Saether Propose W3F node (#188)

View File

@@ -30,5 +30,4 @@ Additionally some shared libraries, that is not dependent on any framework -
In addition to the above packages, there are examples available for intergation of `ui-keyring`, `ui-settings` & the relevant `*-identicon` package. These are
- [example-react](packages/example-react) - start with `yarn example:react` and view on `http://localhost:8080`
- [example-reactnative](packages/exampleReactNative) - start with `yarn example:rn:packager` to start the packager service and then either `yarn example:rn:android` or `yarn example:rn:ios` in another terminal
- [example-vue](packages/example-vue) - start with `yarn example:vue` and view on `http://localhost:8080`

View File

@@ -12,5 +12,6 @@ module.exports = {
'\\.(css|less)$': 'empty/object',
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object'
},
setupFilesAfterEnv: ['<rootDir>/jest/setupEnv.js'],
testEnvironment: 'jsdom'
};

10
jest/setupEnv.js Normal file
View File

@@ -0,0 +1,10 @@
// Copyright 2017-2022 @polkadot/ui authors & contributors
// SPDX-License-Identifier: Apache-2.0
const nodeCrypto = require('crypto');
window.crypto = {
getRandomValues: function (buffer) {
return nodeCrypto.randomFillSync(buffer);
}
};

View File

@@ -2,15 +2,15 @@
"author": "Jaco Greeff <jacogr@gmail.com>",
"bugs": "https://github.com/polkadot-js/ui/issues",
"homepage": "https://github.com/polkadot-js/ui#readme",
"license": "Apache-2",
"packageManager": "yarn@3.0.1",
"license": "Apache-2.0",
"packageManager": "yarn@3.2.0",
"private": true,
"repository": {
"type": "git",
"url": "https://github.com/polkadot-js/ui.git"
},
"sideEffects": false,
"version": "0.89.2",
"version": "2.7.2",
"workspaces": [
"packages/*"
],
@@ -19,39 +19,34 @@
"build:release": "polkadot-ci-ghact-build",
"build:rollup": "polkadot-exec-rollup --config",
"clean": "polkadot-dev-clean-build",
"demo:identicon:react": "yarn build && webpack-serve --config packages/react-identicon/webpack.config.js --content packages/react-identicon --port 8080",
"demo:identicon:vue": "yarn build && webpack-serve --config packages/vue-identicon/webpack.config.js --content packages/vue-identicon --port 8080",
"example:react": "yarn build && cd packages/example-react && webpack --config webpack.config.js",
"example:rn:android": "cd packages/exampleReactNative && yarn android",
"example:rn:ios": "cd packages/exampleReactNative && cd ios && pod install && cd .. && yarn ios",
"example:rn:packager": "yarn build && cd packages/exampleReactNative && yarn copy-workspace-packages && yarn start",
"example:vue": "yarn build && cd packages/example-vue && webpack --config webpack.config.js",
"example:react": "yarn build && cd packages/example-react && webpack --config webpack.config.cjs",
"example:vue": "yarn build && cd packages/example-vue && webpack --config webpack.config.cjs",
"lint": "polkadot-dev-run-lint",
"postinstall": "polkadot-dev-yarn-only",
"test": "polkadot-dev-run-test --coverage --runInBand",
"test:one": "polkadot-dev-run-test"
},
"devDependencies": {
"@babel/core": "^7.16.7",
"@babel/runtime": "^7.16.7",
"@polkadot/dev": "^0.65.37",
"@polkadot/x-bundle": "^8.3.2",
"@types/jest": "^27.4.0",
"babel-loader": "^8.2.3",
"@babel/core": "^7.18.6",
"@babel/runtime": "^7.18.6",
"@polkadot/dev": "^0.67.50",
"@polkadot/x-bundle": "^9.7.2",
"@types/jest": "^28.1.4",
"babel-loader": "^8.2.5",
"babel-plugin-transform-vue-template": "^0.4.2",
"empty": "^0.10.1",
"process": "^0.11.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-is": "^17.0.2",
"react-native": "^0.66.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
"react-native": "^0.69.1",
"stream-browserify": "^3.0.0",
"vue-template-compiler": "^2.6.14",
"webpack": "^5.66.0",
"webpack-cli": "^4.9.1",
"webpack": "^5.73.0",
"webpack-cli": "^4.10.0",
"webpack-serve": "^4.0.0"
},
"resolutions": {
"typescript": "^4.5.3"
"typescript": "^4.7.4"
}
}

View File

@@ -14,9 +14,9 @@
"url": "https://github.com/polkadot-js/ui.git"
},
"sideEffects": false,
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7"
"@babel/runtime": "^7.18.6"
}
}

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/example-react', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/example-react', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -3,7 +3,6 @@
const path = require('path');
const { WebpackPluginServe } = require('webpack-plugin-serve');
const webpack = require('webpack');
module.exports = {
context: __dirname,
@@ -37,12 +36,6 @@ module.exports = {
port: 8080,
progress: false, // since we have hmr off, disable
static: __dirname
}),
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer']
}),
new webpack.ProvidePlugin({
process: 'process/browser'
})
],
resolve: {
@@ -50,15 +43,11 @@ module.exports = {
'@polkadot/react-identicon': path.resolve(__dirname, '../react-identicon/build'),
'@polkadot/ui-keyring': path.resolve(__dirname, '../ui-keyring/build'),
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
'process/browser': require.resolve('process/browser'),
'react/jsx-runtime': require.resolve('react/jsx-runtime')
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build')
},
extensions: ['.js', '.ts', '.tsx'],
fallback: {
buffer: require.resolve('buffer'),
stream: require.resolve('stream-browserify')
}
fallback: {}
},
target: 'web',
watch: true
};

View File

@@ -14,9 +14,9 @@
"url": "https://github.com/polkadot-js/ui.git"
},
"sideEffects": false,
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7"
"@babel/runtime": "^7.18.6"
}
}

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/example-vue', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/example-vue', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -2,9 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const { WebpackPluginServe } = require('webpack-plugin-serve');
const webpack = require('webpack');
module.exports = {
context: __dirname,
@@ -22,10 +20,6 @@ module.exports = {
options: require('../../babel.config.cjs')
}
]
},
{
loader: 'vue-loader',
test: /\.vue$/
}
]
},
@@ -42,13 +36,6 @@ module.exports = {
port: 8080,
progress: false, // since we have hmr off, disable
static: __dirname
}),
new VueLoaderPlugin(),
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer']
}),
new webpack.ProvidePlugin({
process: 'process/browser'
})
],
resolve: {
@@ -56,10 +43,10 @@ module.exports = {
'@polkadot/ui-keyring': path.resolve(__dirname, '../ui-keyring/build'),
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
'@polkadot/vue-identicon': path.resolve(__dirname, '../vue-identicon/build'),
'process/browser': require.resolve('process/browser')
'@polkadot/vue-identicon': path.resolve(__dirname, '../vue-identicon/build')
},
extensions: ['.js', '.ts', '.tsx']
},
target: 'web',
watch: true
};

View File

@@ -17,26 +17,26 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/keyring": "^8.3.2",
"@polkadot/ui-settings": "0.89.2",
"@polkadot/ui-shared": "0.89.2",
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"@babel/runtime": "^7.18.6",
"@polkadot/keyring": "^9.7.2",
"@polkadot/ui-settings": "2.7.2",
"@polkadot/ui-shared": "2.7.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"color": "^3.2.1",
"ethereum-blockies-base64": "^1.0.2",
"jdenticon": "3.1.1",
"react-copy-to-clipboard": "^5.0.4",
"styled-components": "^5.3.3"
"react-copy-to-clipboard": "^5.1.0",
"styled-components": "^5.3.5"
},
"devDependencies": {
"@types/react-copy-to-clipboard": "^5.0.2",
"@types/react-dom": "^17.0.11",
"@types/styled-components": "^5.1.20",
"styled-components": "^5.3.3",
"@types/react-dom": "^18.0.5",
"@types/styled-components": "^5.1.25",
"styled-components": "^5.3.5",
"xmlserializer": "^0.6.1"
},
"peerDependencies": {

View File

@@ -1,54 +0,0 @@
// Copyright 2017-2022 @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 { Identicon } from '.';
const THEMES = ['beachball', 'polkadot', 'substrate'];
export default class Demo extends React.PureComponent {
public override render (): React.ReactNode {
const identities: string[] = [];
while (identities.length !== 50) {
identities.push(
encodeAddress(randomAsU8a(32))
);
}
return (
<div>
<div>
{identities.map((value, index): React.ReactNode => (
<Identicon
key={value.toString()}
theme={THEMES[index % THEMES.length] as 'empty'}
value={value}
/>
))}
</div>
<div>
{THEMES.map((theme): React.ReactNode => (
<Identicon
key={theme}
theme={theme as 'empty'}
value='5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
/>
))}
</div>
</div>
);
}
}
const rootElement = document.getElementById('demo');
if (!rootElement) {
throw new Error('Unable to find element with id \'demo\'');
}
ReactDOM.render(<Demo />, rootElement);

View File

@@ -4,15 +4,18 @@
import type { Props } from '../types';
import * as jdenticon from 'jdenticon';
import React from 'react';
import React, { useMemo } from 'react';
function Identicon ({ className = '', publicKey, size, style }: Props): React.ReactElement<Props> {
const html = useMemo(
() => ({ __html: jdenticon.toSvg(publicKey.substr(2), size) }),
[publicKey, size]
);
return (
<div
className={className}
dangerouslySetInnerHTML={{
__html: jdenticon.toSvg(publicKey.substr(2), size)
}}
dangerouslySetInnerHTML={html}
style={style}
/>
);

View File

@@ -19,7 +19,7 @@
import type { Circle } from '@polkadot/ui-shared/icons/types';
import type { Props } from '../types';
import React from 'react';
import React, { useMemo } from 'react';
import { polkadotIcon } from '@polkadot/ui-shared';
@@ -36,6 +36,11 @@ function renderCircle ({ cx, cy, fill, r }: Circle, key: number): React.ReactNod
}
function Identicon ({ address, className = '', isAlternative = false, size, style }: Props): React.ReactElement<Props> {
const circles = useMemo(
() => polkadotIcon(address, { isAlternative }),
[address, isAlternative]
);
return (
<svg
className={className}
@@ -46,7 +51,7 @@ function Identicon ({ address, className = '', isAlternative = false, size, styl
viewBox='0 0 64 64'
width={size}
>
{polkadotIcon(address, { isAlternative }).map(renderCircle)}
{circles.map(renderCircle)}
</svg>
);
}

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -1,45 +0,0 @@
// Copyright 2017-2022 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
const path = require('path');
const webpack = require('webpack');
const ENV = process.env.NODE_ENV || 'development';
const isProd = ENV === 'production';
module.exports = {
context: __dirname,
devtool: isProd ? 'source-map' : 'eval-cheap-source-map',
entry: './src/Demo.tsx',
mode: ENV,
module: {
rules: [
{
exclude: /(node_modules)/,
test: /\.(js|ts|tsx)$/,
use: [
'babel-loader'
]
}
]
},
output: {
filename: './Demo.js',
path: path.join(__dirname, 'build')
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer']
}),
new webpack.ProvidePlugin({
process: 'process/browser'
})
],
resolve: {
alias: {
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
'process/browser': require.resolve('process/browser')
},
extensions: ['.js', '.jsx', '.ts', '.tsx']
}
};

View File

@@ -17,20 +17,20 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/ui-settings": "0.89.2",
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"@babel/runtime": "^7.18.6",
"@polkadot/ui-settings": "2.7.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"qrcode-generator": "^1.4.4",
"react-qr-reader": "^2.2.1",
"styled-components": "^5.3.3"
"styled-components": "^5.3.5"
},
"devDependencies": {
"@types/react-qr-reader": "^2.1.4",
"@types/styled-components": "^5.1.20"
"@types/styled-components": "^5.1.25"
},
"peerDependencies": {
"@polkadot/util": "*",

View File

@@ -15,6 +15,7 @@ interface Props {
size?: string | number;
skipEncoding?: boolean;
style?: React.CSSProperties;
timerDelay?: number;
value: Uint8Array;
}
@@ -30,7 +31,7 @@ interface TimerState {
timerId: number | null;
}
const FRAME_DELAY = 2500;
const DEFAULT_FRAME_DELAY = 2750;
const TIMER_INC = 500;
function getDataUrl (value: Uint8Array): string {
@@ -44,9 +45,9 @@ function getDataUrl (value: Uint8Array): string {
return qr.createDataURL(16, 0);
}
function Display ({ className, size, skipEncoding, style, value }: Props): React.ReactElement<Props> | null {
function Display ({ className, size, skipEncoding, style, timerDelay = DEFAULT_FRAME_DELAY, value }: Props): React.ReactElement<Props> | null {
const [{ image }, setFrameState] = useState<FrameState>({ frameIdx: 0, frames: [], image: null, valueHash: null });
const timerRef = useRef<TimerState>({ timerDelay: FRAME_DELAY, timerId: null });
const timerRef = useRef<TimerState>({ timerDelay, timerId: null });
const containerStyle = useMemo(
() => createImgSize(size),
@@ -69,18 +70,21 @@ function Display ({ className, size, skipEncoding, style, value }: Props): React
timerRef.current.timerDelay = timerRef.current.timerDelay + TIMER_INC;
}
timerRef.current.timerId = setTimeout(nextFrame, timerRef.current.timerDelay);
// only encode the frames on demand, not above as part of the
// state derivation - in the case of large payloads, this should
// be slightly more responsive on initial load
return objectSpread({}, state, {
const newState = objectSpread<FrameState>({}, state, {
frameIdx,
image: getDataUrl(state.frames[frameIdx])
});
// set the new timer last
timerRef.current.timerId = setTimeout(nextFrame, timerRef.current.timerDelay);
return newState;
});
timerRef.current.timerId = window.setTimeout(nextFrame, FRAME_DELAY);
timerRef.current.timerId = window.setTimeout(nextFrame, timerRef.current.timerDelay);
return (): void => {
// eslint-disable-next-line react-hooks/exhaustive-deps

View File

@@ -12,9 +12,10 @@ interface Props {
className?: string;
size?: string | number;
style?: React.CSSProperties;
timerDelay?: number;
}
function DisplayAddress ({ address, className, genesisHash, size, style }: Props): React.ReactElement<Props> | null {
function DisplayAddress ({ address, className, genesisHash, size, style, timerDelay }: Props): React.ReactElement<Props> | null {
const data = useMemo(
() => createAddressPayload(address, genesisHash),
[address, genesisHash]
@@ -30,6 +31,7 @@ function DisplayAddress ({ address, className, genesisHash, size, style }: Props
size={size}
skipEncoding
style={style}
timerDelay={timerDelay}
value={data}
/>
);

View File

@@ -10,13 +10,15 @@ interface Props {
address: string;
className?: string;
cmd: number;
delay?: number;
genesisHash: Uint8Array | string;
payload: Uint8Array;
size?: string | number;
style?: React.CSSProperties;
timerDelay?: number;
}
function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style }: Props): React.ReactElement<Props> | null {
function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style, timerDelay }: Props): React.ReactElement<Props> | null {
const data = useMemo(
() => createSignPayload(address, cmd, payload, genesisHash),
[address, cmd, payload, genesisHash]
@@ -31,6 +33,7 @@ function DisplayPayload ({ address, className, cmd, genesisHash, payload, size,
className={className}
size={size}
style={style}
timerDelay={timerDelay}
value={data}
/>
);

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -17,17 +17,17 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/ui-shared": "0.89.2",
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"react-native-svg": "^12.2.0"
"@babel/runtime": "^7.18.6",
"@polkadot/ui-shared": "2.7.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"react-native-svg": "^12.3.0"
},
"devDependencies": {
"@types/react-native": "^0.66.12"
"@types/react-native": "^0.69.1"
},
"peerDependencies": {
"@polkadot/util": "*",

View File

@@ -4,7 +4,7 @@
import type { Circle as CircleType } from '@polkadot/ui-shared/icons/types';
import type { Props } from '../types';
import React from 'react';
import React, { useMemo } from 'react';
import { View } from 'react-native';
import Svg, { Circle as SvgCircle } from 'react-native-svg';
@@ -23,6 +23,11 @@ function renderCircle ({ cx, cy, fill, r }: CircleType, key: number): React.Reac
}
export default function Identicon ({ address, isAlternative = false, size }: Props): React.ReactElement<Props> {
const circles = useMemo(
() => polkadotIcon(address, { isAlternative }),
[address, isAlternative]
);
return (
<View>
<Svg
@@ -31,7 +36,7 @@ export default function Identicon ({ address, isAlternative = false, size }: Pro
viewBox='0 0 64 64'
width={size}
>
{polkadotIcon(address, { isAlternative }).map(renderCircle)}
{circles.map(renderCircle)}
</Svg>
</View>
);

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -13,10 +13,10 @@
"url": "https://github.com/polkadot-js/ui.git"
},
"sideEffects": false,
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/util": "^8.3.2"
"@babel/runtime": "^7.18.6",
"@polkadot/util": "^9.7.2"
}
}

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-assets', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/ui-assets', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -16,17 +16,16 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/hw-ledger": "^8.3.2",
"@polkadot/keyring": "^8.3.2",
"@polkadot/ui-settings": "0.89.2",
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"@babel/runtime": "^7.18.6",
"@polkadot/keyring": "^9.7.2",
"@polkadot/ui-settings": "2.7.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"mkdirp": "^1.0.4",
"rxjs": "^7.5.2",
"rxjs": "^7.5.5",
"store": "^2.0.12"
},
"devDependencies": {

View File

@@ -3,7 +3,6 @@
import { Keyring } from './Keyring';
export { Ledger } from '@polkadot/hw-ledger';
export { packageInfo } from './packageInfo';
const keyring = new Keyring();

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -6,24 +6,23 @@ import type { KeyringJson, KeyringStore } from '../types';
import store from 'store';
export class BrowserStore implements KeyringStore {
public all (cb: (key: string, value: KeyringJson) => void): void {
public all (fn: (key: string, value: KeyringJson) => void): void {
store.each((value: KeyringJson, key: string): void => {
cb(key, value);
fn(key, value);
});
}
public get (key: string, cb: (value: KeyringJson) => void): void {
// eslint-disable-next-line node/no-callback-literal
cb(store.get(key) as KeyringJson);
public get (key: string, fn: (value: KeyringJson) => void): void {
fn(store.get(key) as KeyringJson);
}
public remove (key: string, cb?: () => void): void {
public remove (key: string, fn?: () => void): void {
store.remove(key);
cb && cb();
fn && fn();
}
public set (key: string, value: KeyringJson, cb?: () => void): void {
public set (key: string, value: KeyringJson, fn?: () => void): void {
store.set(key, value);
cb && cb();
fn && fn();
}
}

View File

@@ -21,33 +21,33 @@ export class FileStore implements KeyringStore {
this.#path = path;
}
public all (cb: (key: string, value: KeyringJson) => void): void {
public all (fn: (key: string, value: KeyringJson) => void): void {
fs
.readdirSync(this.#path)
.filter((key): boolean => !['.', '..', '.DS_Store'].includes(key))
.forEach((key): void => {
const value = this._readKey(key);
value?.address && cb(key, value);
value?.address && fn(key, value);
});
}
public get (key: string, cb: (value: KeyringJson) => void): void {
public get (key: string, fn: (value: KeyringJson) => void): void {
const value = this._readKey(key);
assert(value?.address, `Invalid JSON found for ${key}`);
cb(value);
fn(value);
}
public remove (key: string, cb?: () => void): void {
public remove (key: string, fn?: () => void): void {
fs.unlinkSync(this._getPath(key));
cb && cb();
fn && fn();
}
public set (key: string, value: KeyringJson, cb?: () => void): void {
public set (key: string, value: KeyringJson, fn?: () => void): void {
fs.writeFileSync(this._getPath(key), Buffer.from(JSON.stringify(value), 'utf-8'));
cb && cb();
fn && fn();
}
private _getPath (key: string): string {

View File

@@ -17,12 +17,12 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/networks": "^8.3.2",
"@polkadot/util": "^8.3.2",
"@babel/runtime": "^7.18.6",
"@polkadot/networks": "^9.7.2",
"@polkadot/util": "^9.7.2",
"eventemitter3": "^4.0.7",
"store": "^2.0.12"
},

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -17,16 +17,16 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@babel/runtime": "^7.18.6",
"color": "^3.2.1"
},
"devDependencies": {
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"@types/color": "^3.0.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"@types/color": "^3.0.3",
"@types/xmlserializer": "^0.6.2",
"xmlserializer": "^0.6.1"
},

View File

@@ -9,7 +9,8 @@ describe('identicon', (): void => {
it('generates a basic [0,..,0] identicon', (): void => {
expect(
xmlserializer.serializeToString(
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 256 })
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 256 }) as any
)
).toEqual(
'<div xmlns="http://www.w3.org/1999/xhtml" class="" style="background: white; border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="256" height="256"><circle cx="128" cy="140.8" r="128" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="128" cy="153.6" r="102.4" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="128" cy="166.4" r="76.8" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="128" cy="179.2" r="51.2" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="128" cy="192" r="25.6" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'
@@ -19,7 +20,8 @@ describe('identicon', (): void => {
it('allows overrides', (): void => {
expect(
xmlserializer.serializeToString(
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 100 }, 'testClass', { display: 'block' })
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 100 }, 'testClass', { display: 'block' }) as any
)
).toEqual(
'<div xmlns="http://www.w3.org/1999/xhtml" class="testClass" style="background: white; border-radius: 50px; display: block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 50px; display: inline-block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="100" height="100"><circle cx="50" cy="55" r="50" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="50" cy="60" r="40" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="50" cy="65" r="30" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="50" cy="70" r="20" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="50" cy="75" r="10" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'

View File

@@ -10,7 +10,8 @@ describe('circle', (): void => {
it('creates a circle shape', (): void => {
expect(
xmlserializer.serializeToString(
circle(seeder(), 'blue', 50, 2)
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
circle(seeder(), 'blue', 50, 2) as any
)
).toEqual('<circle xmlns="http://www.w3.org/2000/svg" cx="25" cy="32.5" r="15" fill="blue"/>');
});

View File

@@ -9,7 +9,8 @@ describe('circle', (): void => {
it('creates a basic SVG circle element', (): void => {
expect(
serializeToString(
circle(123, 12, 34)
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
circle(123, 12, 34) as any
)
).toEqual('<circle xmlns="http://www.w3.org/2000/svg" cx="12" cy="34" r="123"/>');
});

View File

@@ -9,7 +9,8 @@ describe('element', (): void => {
it('creates a basic SVG element', (): void => {
expect(
serializeToString(
element(123)
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
element(123) as any
)
).toEqual('<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="123" height="123"/>');
});

View File

@@ -9,7 +9,8 @@ describe('rect', (): void => {
it('creates a basic SVG rect element', (): void => {
expect(
serializeToString(
rect(123)
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
rect(123) as any
)
).toEqual('<rect xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="123" height="123" rx="7.6875" ry="7.6875"/>');
});

View File

@@ -9,7 +9,8 @@ describe('svg', (): void => {
it('creates a basic SVG element', (): void => {
expect(
serializeToString(
svg('rect')
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
svg('rect') as any
)
).toEqual('<rect xmlns="http://www.w3.org/2000/svg"/>');
});

View File

@@ -22,7 +22,6 @@ const blake2 = (value: Uint8Array): Uint8Array =>
const S = 64;
const C = S / 2;
const Z = S / 64 * 5;
const ZERO = blake2(new Uint8Array(32));
/* eslint-disable sort-keys */
const SCHEMA: { [index: string]: Scheme } = {
@@ -43,6 +42,8 @@ const OUTER_CIRCLE: Circle = {
r: C
};
let zeroHash: Uint8Array = new Uint8Array();
function getRotation (isSixPoint: boolean): { r: number; ro2: number; r3o4: number; ro4: number; rroot3o2: number; rroot3o4: number } {
const r = isSixPoint
? (C / 8 * 5)
@@ -98,7 +99,11 @@ function findScheme (d: number): Scheme {
}
function addressToId (address: string): Uint8Array {
return blake2(decodeAddress(address)).map((x, i): number => (x + 256 - ZERO[i]) % 256);
if (!zeroHash.length) {
zeroHash = blake2(new Uint8Array(32));
}
return blake2(decodeAddress(address)).map((x, i) => (x + 256 - zeroHash[i]) % 256);
}
function getColors (address: string): string[] {
@@ -132,10 +137,19 @@ function getColors (address: string): string[] {
* @description Generate a array of the circles that make up an identicon
*/
export function polkadotIcon (address: string, { isAlternative }: Options): Circle[] {
const colors = getColors(address);
const xy = getCircleXY(isAlternative);
let colors: string[];
try {
// in some cases, e.g. RN where crypto may not be initialized, chaos can
// happen when hashing, in these cases we just fill with a placeholder
colors = getColors(address);
} catch {
colors = new Array<string>(xy.length).fill('#ddd');
}
return [OUTER_CIRCLE].concat(
getCircleXY(isAlternative).map(([cx, cy], index): Circle => ({
xy.map(([cx, cy], index): Circle => ({
cx, cy, fill: colors[index], r: Z
}))
);

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -17,13 +17,13 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "0.89.2",
"version": "2.7.2",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.16.7",
"@polkadot/ui-shared": "0.89.2",
"@polkadot/util": "^8.3.2",
"@polkadot/util-crypto": "^8.3.2",
"@babel/runtime": "^7.18.6",
"@polkadot/ui-shared": "2.7.2",
"@polkadot/util": "^9.7.2",
"@polkadot/util-crypto": "^9.7.2",
"jdenticon": "3.1.1"
},
"devDependencies": {

View File

@@ -1,40 +0,0 @@
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import Vue, { VNode } from 'vue';
import Identicon from './index';
interface Data {
address: string;
size: number;
}
/**
* @name Demo
* @description Demo component
*/
const Demo = Vue.extend({
components: {
Identicon
},
data: function (): Data {
return {
address: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
size: 128
};
},
name: 'Demo',
template: `
<div id="demo">
<Identicon :size="size" :theme="'polkadot'" :value="address" />
<Identicon :size="size" :theme="'substrate'" :value="address" />
<Identicon :size="size" :theme="'beachball'" :value="address" />
<Identicon :size="size" :theme="'empty'" />
</div>
`
});
new Vue({
render: (h): VNode => h(Demo)
}).$mount('#demo');

View File

@@ -3,7 +3,7 @@
import type { Prefix } from '@polkadot/util-crypto/address/types';
import Vue from 'vue';
import Vue, { VNode } from 'vue';
import { isHex, isU8a, u8aToHex } from '@polkadot/util';
import { decodeAddress, encodeAddress } from '@polkadot/util-crypto';
@@ -18,6 +18,7 @@ interface Account {
interface Data {
address: string;
iconSize: number;
isAlternative: boolean;
publicKey: string;
type: 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
}
@@ -59,6 +60,7 @@ export const Identicon = Vue.extend({
return {
address: '',
iconSize: DEFAULT_SIZE,
isAlternative: false,
publicKey: '0x',
type: 'empty'
};
@@ -78,22 +80,21 @@ export const Identicon = Vue.extend({
}
},
props: ['prefix', 'isAlternative', 'size', 'theme', 'value'],
// FIXME These nested divs are not correct, would like a different way
// here so we don't create a div wrapped for the div wrapper of the icon
template: `
<div v-if="type === 'empty' || address === ''">
<Empty :key="address" :size="iconSize" />
</div>
<div v-else-if="type === 'beachball'">
<Beachball :key="address" :address="address" :size="iconSize" />
</div>
<div v-else-if="type === 'polkadot'">
<Polkadot :key="address" :address="address" :isAlternative="isAlternative" :size="iconSize" />
</div>
<div v-else>
<Jdenticon :key="address" :publicKey="publicKey" :size="iconSize" />
</div>
`,
render (h): VNode {
const { address, iconSize, isAlternative, publicKey, type } = this.$data as Data;
if (type === 'empty') {
return h('Empty', { attrs: { key: address, size: iconSize } }, []);
} else if (type === 'jdenticon') {
return h('Jdenticon', { attrs: { key: address, publicKey, size: iconSize } }, []);
} else {
// handles: beachball and polkadot
// TODO: substrate
const cmp = type.charAt(0).toUpperCase() + type.slice(1);
return h(cmp, { attrs: { address, isAlternative, key: address, size: iconSize } }, []);
}
},
watch: {
value: function (): void {
this.recodeAddress();

View File

@@ -1,14 +1,14 @@
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Options } from '@polkadot/ui-shared/icons/types';
import Vue from 'vue';
import Vue, { VNode } from 'vue';
import { beachballIcon } from '@polkadot/ui-shared';
interface Data {
html: string;
type propsType = {
address: string;
size: number;
isAlternative: boolean;
}
/**
@@ -16,21 +16,12 @@ interface Data {
* @description The Beachball identicon
*/
export const Beachball = Vue.extend({
created: function (): void {
this.createHtml();
},
data: function (): Data {
return {
// eslint-disable-next-line quotes
html: `<div />`
};
},
methods: {
createHtml: function (): void {
this.html = beachballIcon(this.address as string, this.size as Options).outerHTML;
}
},
props: ['address', 'size'],
props: ['address', 'size', 'isAlternative'],
// eslint-disable-next-line quotes
template: `<div v-html="html" />`
render (h): VNode {
const { address, isAlternative, size } = this.$props as propsType;
const bb = beachballIcon(address, { isAlternative, size });
return h(Vue.component('VCBeachball', { template: bb.outerHTML }));
}
});

View File

@@ -2,10 +2,11 @@
// SPDX-License-Identifier: Apache-2.0
import * as jdenticon from 'jdenticon';
import Vue from 'vue';
import Vue, { VNode } from 'vue';
interface Data {
svgHtml: string;
type propsType = {
publicKey: string,
size: number
}
/**
@@ -13,21 +14,12 @@ interface Data {
* @description The substrate default via Jdenticon
*/
export const Jdenticon = Vue.extend({
created: function (): void {
this.createSvgHtml();
},
data: function (): Data {
return {
// eslint-disable-next-line quotes
svgHtml: `<svg viewBox="0 0 64 64" />`
};
},
methods: {
createSvgHtml: function (): void {
this.svgHtml = jdenticon.toSvg((this.publicKey as string).substr(2), this.size as number);
}
},
props: ['publicKey', 'size'],
// eslint-disable-next-line quotes
template: `<div v-html="svgHtml" />`
render (h): VNode {
const { publicKey, size } = this.$props as propsType;
const cmp = Vue.component('CJdenticon', { template: jdenticon.toSvg(publicKey.substring(2), size) });
return h(cmp);
}
});

View File

@@ -1,17 +1,14 @@
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
import Vue from 'vue';
import Vue, { VNode } from 'vue';
import { polkadotIcon } from '@polkadot/ui-shared';
interface Data {
svgHtml: string;
}
interface This {
type propsType = {
address: string;
isAlternative?: boolean;
isAlternative: boolean;
size: number;
}
/**
@@ -19,25 +16,20 @@ interface This {
* @description The Polkadot default identicon
*/
export const Polkadot = Vue.extend({
created: function (): void {
this.createSvgHtml();
},
data: function (): Data {
return {
// eslint-disable-next-line quotes
svgHtml: `<svg viewBox="0 0 64 64" />`
};
},
methods: {
createSvgHtml: function (): void {
const circles = polkadotIcon(this.address as string, { isAlternative: (this as This).isAlternative || false }).map(({ cx, cy, fill, r }) =>
`<circle cx=${cx} cy=${cy} fill="${fill}" r=${r} />`
).join('');
this.svgHtml = `<svg height=${this.size as number} viewBox='0 0 64 64' width=${this.size as number}>${circles}</svg>`;
}
},
props: ['address', 'isAlternative', 'size'],
// eslint-disable-next-line quotes
template: `<div v-html="svgHtml" />`
render (h): VNode {
const { address, isAlternative, size } = this.$props as propsType;
const circles = polkadotIcon(address, {
isAlternative: isAlternative || false
}).map(({ cx,
cy,
fill,
r }) => {
return h('circle', { attrs: { cx, cy, fill, r } }, []);
}
);
return h('svg', { attrs: { height: size, viewBox: '0 0 64 64', width: size } }, circles);
}
});

View File

@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '2.7.2' };

View File

@@ -1,50 +0,0 @@
// Copyright 2017-2022 @polkadot/react-identicon authors & contributors
// SPDX-License-Identifier: Apache-2.0
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const webpack = require('webpack');
const ENV = process.env.NODE_ENV || 'development';
const isProd = ENV === 'production';
module.exports = {
context: __dirname,
devtool: isProd ? 'source-map' : 'eval-cheap-source-map',
entry: './src/Demo.ts',
mode: ENV,
module: {
rules: [
{
exclude: /(node_modules)/,
test: /\.(js|ts)$/,
use: [
'babel-loader'
]
},
{
loader: 'vue-loader',
test: /\.vue$/
}
]
},
output: {
filename: './demo.js',
path: path.join(__dirname, 'build')
},
plugins: [
new VueLoaderPlugin(),
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer']
}),
new webpack.ProvidePlugin({
process: 'process/browser'
})
],
resolve: {
alias: {
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
'process/browser': require.resolve('process/browser')
},
extensions: ['.js', '.ts']
}
};

View File

@@ -6,6 +6,7 @@
},
"include": [
"packages/**/src/**/*",
"packages/**/*.cjs",
"packages/**/*.js"
],
"exclude": [

6476
yarn.lock

File diff suppressed because it is too large Load Diff