From de78c703f5a39fbc4ee797e91fb4a16f8aafe474 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Wed, 1 Apr 2020 18:49:49 +0200 Subject: [PATCH] Bump dev (incl. lint fixes) (#304) --- jest.config.js | 5 +- package.json | 2 +- packages/extension-base/package.json | 2 +- .../src/background/handlers/Extension.test.ts | 24 +++--- .../src/background/handlers/Extension.ts | 10 +-- .../src/background/handlers/State.ts | 6 +- .../src/background/handlers/index.ts | 2 +- .../src/page/PostMessageProvider.ts | 4 +- packages/extension-base/src/page/index.ts | 2 +- packages/extension-chains/src/index.ts | 2 +- packages/extension-chains/src/kusama.ts | 4 +- packages/extension-dapp/src/index.ts | 2 +- packages/extension-ui/package.json | 4 +- .../src/Popup/CreateAccount/AccountName.tsx | 2 +- .../CreateAccount/CreateAccount.test.tsx | 4 +- .../extension-ui/src/Popup/Derive/Step.tsx | 4 +- .../src/Popup/Signing/Request.tsx | 2 +- .../src/Popup/Signing/Signing.test.tsx | 24 +++--- .../src/Popup/Signing/TransactionIndex.tsx | 2 +- .../extension-ui/src/Popup/Signing/Unlock.tsx | 2 +- .../src/components/ActionText.tsx | 8 +- .../src/components/AddAccountImage.tsx | 4 +- .../extension-ui/src/components/Address.tsx | 2 +- .../src/components/ButtonWithSubtitle.tsx | 2 +- .../extension-ui/src/components/Checkbox.tsx | 2 +- .../extension-ui/src/components/Dropdown.tsx | 2 +- .../extension-ui/src/components/Header.tsx | 4 +- .../extension-ui/src/components/Identicon.tsx | 2 +- .../src/components/InputWithLabel.tsx | 2 +- .../src/components/MnemonicSeed.tsx | 6 +- .../extension-ui/src/components/Switch.tsx | 2 +- .../src/components/TextAreaWithLabel.tsx | 2 +- .../extension-ui/src/components/themes.ts | 76 ++++++++--------- packages/extension-ui/src/messaging.ts | 6 +- packages/extension/package.json | 2 +- packages/extension/webpack.config.js | 26 +++--- yarn.lock | 81 ++++++++++++------- 37 files changed, 180 insertions(+), 158 deletions(-) diff --git a/jest.config.js b/jest.config.js index 2be5c0e1..5ea51329 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,9 +5,10 @@ module.exports = Object.assign({}, config, { browser: true, moduleNameMapper: { '@polkadot/extension-(base|chains|dapp|inject|ui)(.*)$': '/packages/extension-$1/src/$2', + // eslint-disable-next-line sort-keys '@polkadot/extension(.*)$': '/packages/extension/src/$1', - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/fileMock.js', - '\\.(css|less)$': 'empty/object' + '\\.(css|less)$': 'empty/object', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/fileMock.js' }, modulePathIgnorePatterns: [ '/packages/extension/build', diff --git a/package.json b/package.json index 3b6e50d7..e2fcd553 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ }, "devDependencies": { "@babel/core": "^7.9.0", - "@polkadot/dev": "^0.52.1", + "@polkadot/dev": "^0.52.3", "@polkadot/typegen": "^1.9.1", "@types/jest": "^25.1.4", "copy-webpack-plugin": "^5.1.1", diff --git a/packages/extension-base/package.json b/packages/extension-base/package.json index 3051c74e..2b07f11a 100644 --- a/packages/extension-base/package.json +++ b/packages/extension-base/package.json @@ -8,7 +8,7 @@ "@babel/runtime": "^7.9.2", "@polkadot/api": "^1.9.1", "@polkadot/keyring": "^2.7.1", - "@polkadot/ui-keyring": "^0.52.0-beta.21", + "@polkadot/ui-keyring": "^0.52.0-beta.22", "extensionizer": "^1.0.1" } } diff --git a/packages/extension-base/src/background/handlers/Extension.test.ts b/packages/extension-base/src/background/handlers/Extension.test.ts index b0e3d9c3..8bf9b564 100644 --- a/packages/extension-base/src/background/handlers/Extension.test.ts +++ b/packages/extension-base/src/background/handlers/Extension.test.ts @@ -56,8 +56,8 @@ describe('Extension', () => { test('pri(derivation.validate) passes for valid suri', async () => { const result = await extension.handle('id', 'pri(derivation.validate)', { parentAddress: address, - suri: '//path', - parentPassword: password + parentPassword: password, + suri: '//path' }, {} as chrome.runtime.Port); expect(result).toStrictEqual({ address: '5FP3TT3EruYBNh8YM8yoxsreMx7uZv1J1zNX7fFhoC5enwmN', @@ -68,37 +68,37 @@ describe('Extension', () => { test('pri(derivation.validate) throws for invalid suri', async () => { await expect(extension.handle('id', 'pri(derivation.validate)', { parentAddress: address, - suri: 'invalid-path', - parentPassword: password + parentPassword: password, + suri: 'invalid-path' }, {} as chrome.runtime.Port)).rejects.toStrictEqual(new Error('"invalid-path" is not a valid derivation path')); }); test('pri(derivation.validate) throws for invalid password', async () => { await expect(extension.handle('id', 'pri(derivation.validate)', { parentAddress: address, - suri: '//path', - parentPassword: 'invalid-password' + parentPassword: 'invalid-password', + suri: '//path' }, {} as chrome.runtime.Port)).rejects.toStrictEqual(new Error('invalid password')); }); test('pri(derivation.create) adds a derived account', async () => { await extension.handle('id', 'pri(derivation.create)', { - parentAddress: address, name: 'child', - suri: '//path', + parentAddress: address, parentPassword: password, - password + password, + suri: '//path' }, {} as chrome.runtime.Port); expect(keyring.getAccounts()).toHaveLength(2); }); test('pri(derivation.create) saves parent address in meta', async () => { await extension.handle('id', 'pri(derivation.create)', { - parentAddress: address, name: 'child', - suri: '//path', + parentAddress: address, parentPassword: password, - password + password, + suri: '//path' }, {} as chrome.runtime.Port); expect(keyring.getAccount('5FP3TT3EruYBNh8YM8yoxsreMx7uZv1J1zNX7fFhoC5enwmN')?.meta.parentAddress).toEqual(address); }); diff --git a/packages/extension-base/src/background/handlers/Extension.ts b/packages/extension-base/src/background/handlers/Extension.ts index 944250c5..6f34a64b 100644 --- a/packages/extension-base/src/background/handlers/Extension.ts +++ b/packages/extension-base/src/background/handlers/Extension.ts @@ -67,7 +67,7 @@ export default class Extension { } private accountsCreateExternal ({ address, genesisHash, name }: RequestAccountCreateExternal): boolean { - keyring.addExternal(address, { name, genesisHash }); + keyring.addExternal(address, { genesisHash, name }); return true; } @@ -166,7 +166,7 @@ export default class Extension { assert(queued, 'Unable to find request'); - const { resolve, request } = queued; + const { request, resolve } = queued; this.#state.saveMetadata(request); @@ -236,7 +236,7 @@ export default class Extension { assert(queued, 'Unable to find request'); - const { request, resolve, reject } = queued; + const { reject, request, resolve } = queued; const pair = keyring.getPair(request.inner.address); if (!pair) { @@ -319,7 +319,7 @@ export default class Extension { } } - private derivationValidate ({ parentAddress, suri, parentPassword }: RequestDeriveValidate): ResponseDeriveValidate { + private derivationValidate ({ parentAddress, parentPassword, suri }: RequestDeriveValidate): ResponseDeriveValidate { const childPair = this.derive(parentAddress, suri, parentPassword, {}); return { @@ -328,7 +328,7 @@ export default class Extension { }; } - private derivationCreate ({ parentAddress, suri, parentPassword, genesisHash, name, password }: RequestDeriveCreate): boolean { + private derivationCreate ({ genesisHash, name, parentAddress, parentPassword, password, suri }: RequestDeriveCreate): boolean { const childPair = this.derive(parentAddress, suri, parentPassword, { genesisHash, name, parentAddress }); keyring.addPair(childPair, password); diff --git a/packages/extension-base/src/background/handlers/State.ts b/packages/extension-base/src/background/handlers/State.ts index 2c263b9e..120af6a8 100644 --- a/packages/extension-base/src/background/handlers/State.ts +++ b/packages/extension-base/src/background/handlers/State.ts @@ -252,9 +252,9 @@ export default class State { this.#authRequests[id] = { id, idStr, + reject: this.authComplete(id, reject), request, resolve: this.authComplete(id, resolve), - reject: this.authComplete(id, reject), url }; @@ -278,9 +278,9 @@ export default class State { this.#metaRequests[id] = { id, + reject: this.metaComplete(id, reject), request, resolve: this.metaComplete(id, resolve), - reject: this.metaComplete(id, reject), url }; @@ -382,9 +382,9 @@ export default class State { this.#signRequests[id] = { account, id, + reject: this.signComplete(id, reject), request, resolve: this.signComplete(id, resolve), - reject: this.signComplete(id, reject), url }; diff --git a/packages/extension-base/src/background/handlers/index.ts b/packages/extension-base/src/background/handlers/index.ts index 7c0e6868..2faf1544 100644 --- a/packages/extension-base/src/background/handlers/index.ts +++ b/packages/extension-base/src/background/handlers/index.ts @@ -44,7 +44,7 @@ export default function handler ({ id, messag // only send message back to port if it's still connected if (port) { - port.postMessage({ id, error: error.message }); + port.postMessage({ error: error.message, id }); } }); } diff --git a/packages/extension-base/src/page/PostMessageProvider.ts b/packages/extension-base/src/page/PostMessageProvider.ts index 49d6155a..75cf1446 100644 --- a/packages/extension-base/src/page/PostMessageProvider.ts +++ b/packages/extension-base/src/page/PostMessageProvider.ts @@ -106,7 +106,7 @@ export default class PostMessageProvider implements InjectedProvider { return sendRequest( 'pub(rpc.subscribe)', - { type, method, params }, + { method, params, type }, (res) => { subscription.callback(null, res); } @@ -147,7 +147,7 @@ export default class PostMessageProvider implements InjectedProvider { // eslint-disable-next-line @typescript-eslint/no-explicit-any public async subscribe (type: string, method: string, params: any[], callback: AnyFunction): Promise { - const id = await this.send(method, params, { type, callback }); + const id = await this.send(method, params, { callback, type }); return id as number; } diff --git a/packages/extension-base/src/page/index.ts b/packages/extension-base/src/page/index.ts index 174699ec..46397701 100644 --- a/packages/extension-base/src/page/index.ts +++ b/packages/extension-base/src/page/index.ts @@ -36,7 +36,7 @@ export function sendMessage (message: TMessag return new Promise((resolve, reject): void => { const id = `${Date.now()}.${++idCounter}`; - handlers[id] = { resolve, reject, subscriber }; + handlers[id] = { reject, resolve, subscriber }; const transportRequestMessage: TransportRequestMessage = { id, diff --git a/packages/extension-chains/src/index.ts b/packages/extension-chains/src/index.ts index b68c30f0..5331ee49 100644 --- a/packages/extension-chains/src/index.ts +++ b/packages/extension-chains/src/index.ts @@ -39,8 +39,8 @@ function metadataExpand (definition: MetadataDef): Chain { ? undefined : genesisHash, hasMetadata: !!metadata, - isUnknown, icon: icon || 'substrate', + isUnknown, name: chain, registry, specVersion, diff --git a/packages/extension-chains/src/kusama.ts b/packages/extension-chains/src/kusama.ts index fc80a84a..a3eb9e5e 100644 --- a/packages/extension-chains/src/kusama.ts +++ b/packages/extension-chains/src/kusama.ts @@ -4,14 +4,16 @@ // Generated via 'yarn run chain:info --ws wss://kusama-rpc.polkadot.io' +/* eslint-disable sort-keys */ + export default { chain: 'Kusama', genesisHash: '0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe', + icon: 'polkadot', specVersion: 1055, ss58Format: 2, tokenDecimals: 12, tokenSymbol: 'KSM', - icon: 'polkadot', types: { Address: 'AccountId', Keys: 'SessionKeys5' diff --git a/packages/extension-dapp/src/index.ts b/packages/extension-dapp/src/index.ts index de7823b1..fdbc32c0 100644 --- a/packages/extension-dapp/src/index.ts +++ b/packages/extension-dapp/src/index.ts @@ -200,5 +200,5 @@ export async function web3UseRpcProvider (source: string, key: string): Promise< const meta = await provider.startProvider(key); - return { provider, meta }; + return { meta, provider }; } diff --git a/packages/extension-ui/package.json b/packages/extension-ui/package.json index c54e103b..513a8c59 100644 --- a/packages/extension-ui/package.json +++ b/packages/extension-ui/package.json @@ -7,8 +7,8 @@ "dependencies": { "@babel/runtime": "^7.9.2", "@polkadot/keyring": "^2.7.1", - "@polkadot/react-identicon": "^0.52.0-beta.21", - "@polkadot/react-qr": "^0.52.0-beta.21", + "@polkadot/react-identicon": "^0.52.0-beta.22", + "@polkadot/react-qr": "^0.52.0-beta.22", "@polkadot/util": "^2.7.1", "@polkadot/util-crypto": "^2.7.1", "react": "^16.13.1", diff --git a/packages/extension-ui/src/Popup/CreateAccount/AccountName.tsx b/packages/extension-ui/src/Popup/CreateAccount/AccountName.tsx index 3e67b5a9..6a95f95a 100644 --- a/packages/extension-ui/src/Popup/CreateAccount/AccountName.tsx +++ b/packages/extension-ui/src/Popup/CreateAccount/AccountName.tsx @@ -11,7 +11,7 @@ interface Props { address: string; } -function AccountName ({ onCreate, address }: Props): React.ReactElement { +function AccountName ({ address, onCreate }: Props): React.ReactElement { const [name, setName] = useState(null); const [password, setPassword] = useState(null); diff --git a/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.test.tsx b/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.test.tsx index bb6db820..b1356cf9 100644 --- a/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.test.tsx +++ b/packages/extension-ui/src/Popup/CreateAccount/CreateAccount.test.tsx @@ -27,8 +27,8 @@ describe('Create Account', () => { let wrapper: ReactWrapper; let onActionStub: jest.Mock; const exampleAccount = { - seed: 'horse battery staple correct', - address: 'HjoBp62cvsWDA3vtNMWxz6c9q13ReEHi9UGHK7JbZweH5g5' + address: 'HjoBp62cvsWDA3vtNMWxz6c9q13ReEHi9UGHK7JbZweH5g5', + seed: 'horse battery staple correct' }; const mountComponent = (): ReactWrapper => mount( diff --git a/packages/extension-ui/src/Popup/Derive/Step.tsx b/packages/extension-ui/src/Popup/Derive/Step.tsx index b7d5fcb9..ce152007 100644 --- a/packages/extension-ui/src/Popup/Derive/Step.tsx +++ b/packages/extension-ui/src/Popup/Derive/Step.tsx @@ -7,11 +7,11 @@ import styled from 'styled-components'; import { Header } from '@polkadot/extension-ui/components'; interface Props { - step: number; className?: string; + step: number; } -function Step ({ step, className }: Props): React.ReactElement { +function Step ({ className, step }: Props): React.ReactElement { return (
| null { +export default function Request ({ account: { isExternal }, buttonText, isFirst, request, signId, url }: Props): React.ReactElement | null { const onAction = useContext(ActionContext); const [hexBytes, setHexBytes] = useState(null); const [extrinsic, setExtrinsic] = useState(null); diff --git a/packages/extension-ui/src/Popup/Signing/Signing.test.tsx b/packages/extension-ui/src/Popup/Signing/Signing.test.tsx index d390c062..815dc907 100644 --- a/packages/extension-ui/src/Popup/Signing/Signing.test.tsx +++ b/packages/extension-ui/src/Popup/Signing/Signing.test.tsx @@ -71,10 +71,8 @@ describe.skip('Signing requests', () => { address: '5D4bqjQRPgdMBK8bNvhX4tSuCtSGZS7rZjD5XH5SoKcFeKn5', name: 'acc1' }, - url: 'polkadot.js', id: '1574174715509.78', request: { - sign: jest.fn(), inner: { address: '5D4bqjQRPgdMBK8bNvhX4tSuCtSGZS7rZjD5XH5SoKcFeKn5', blockHash: '0xc288fbc472dab27d13ce58212eeb1243f460c5b0f9a65e9de97cbbf9bc761cb0', @@ -86,17 +84,17 @@ describe.skip('Signing requests', () => { specVersion: '0x00000070', tip: '0x00000000000000000000000000000000', version: 1 - } - } + }, + sign: jest.fn() + }, + url: 'polkadot.js' }, { // 10000000000 nDOT -> 5D1ss3KFnzNtLzRDfUhqLivzVvt5BDrBnK21dMf1si2twPuj account: { address: '5E9nq1yGJJFiP8C75ryD9J2R62q2cesz6NumLnuXRgmuN5DG', name: 'acc2' }, - url: 'polkadot.js', id: '1574174306604.76', request: { - sign: jest.fn(), inner: { address: '5E9nq1yGJJFiP8C75ryD9J2R62q2cesz6NumLnuXRgmuN5DG', blockHash: '0xf3b92cf71c84762ba1cb59dc4fd192f1824171a96b43bce44ceb0671b378d15a', @@ -108,8 +106,10 @@ describe.skip('Signing requests', () => { specVersion: '0x00000070', tip: '0x00000000000000000000000000000000', version: 1 - } - } + }, + sign: jest.fn() + }, + url: 'polkadot.js' }]; onActionStub = jest.fn(); await mountComponent(); @@ -157,10 +157,8 @@ describe.skip('Signing requests', () => { isExternal: true, name: 'external' }, - url: 'polkadot.js', id: '1574174306604.76', request: { - sign: jest.fn(), inner: { address: '5Cf1CGZas62RWwce3d2EPqUvSoi1txaXKd9M5w9bEFSsQtRe', blockHash: '0xf3b92cf71c84762ba1cb59dc4fd192f1824171a96b43bce44ceb0671b378d15a', @@ -172,8 +170,10 @@ describe.skip('Signing requests', () => { specVersion: '0x00000070', tip: '0x00000000000000000000000000000000', version: 1 - } - } + }, + sign: jest.fn() + }, + url: 'polkadot.js' }]; await mountComponent(); expect(wrapper.find(Extrinsic)).toHaveLength(0); diff --git a/packages/extension-ui/src/Popup/Signing/TransactionIndex.tsx b/packages/extension-ui/src/Popup/Signing/TransactionIndex.tsx index 5a7220f1..fbbc8cfe 100644 --- a/packages/extension-ui/src/Popup/Signing/TransactionIndex.tsx +++ b/packages/extension-ui/src/Popup/Signing/TransactionIndex.tsx @@ -15,7 +15,7 @@ interface Props { className?: string; } -function TransactionIndex ({ index, totalItems, onNextClick, onPreviousClick }: Props): React.ReactElement { +function TransactionIndex ({ index, onNextClick, onPreviousClick, totalItems }: Props): React.ReactElement { const previousClickActive = index !== 0; const nextClickActive = index < totalItems - 1; diff --git a/packages/extension-ui/src/Popup/Signing/Unlock.tsx b/packages/extension-ui/src/Popup/Signing/Unlock.tsx index a472c71d..c1db22ce 100644 --- a/packages/extension-ui/src/Popup/Signing/Unlock.tsx +++ b/packages/extension-ui/src/Popup/Signing/Unlock.tsx @@ -12,7 +12,7 @@ interface Props { buttonText?: string; } -export default function Unlock ({ className, onSign, buttonText = 'Sign the transaction' }: Props): React.ReactElement { +export default function Unlock ({ buttonText = 'Sign the transaction', className, onSign }: Props): React.ReactElement { const [error, setError] = useState(''); const [password, setPassword] = useState(''); diff --git a/packages/extension-ui/src/components/ActionText.tsx b/packages/extension-ui/src/components/ActionText.tsx index cf96d69f..c3bee595 100644 --- a/packages/extension-ui/src/components/ActionText.tsx +++ b/packages/extension-ui/src/components/ActionText.tsx @@ -7,13 +7,13 @@ import Svg from '@polkadot/extension-ui/components/Svg'; import styled from 'styled-components'; interface Props { - icon?: string; - text: string; - onClick: MouseEventHandler; className?: string; + icon?: string; + onClick: MouseEventHandler; + text: string; } -function ActionText ({ icon, className, text, onClick }: Props): React.ReactElement { +function ActionText ({ className, icon, onClick, text }: Props): React.ReactElement { return (
void; className?: string; + onClick: () => void; } -function AddAccountImage ({ onClick, className }: Props): React.ReactElement { +function AddAccountImage ({ className, onClick }: Props): React.ReactElement { return ( diff --git a/packages/extension-ui/src/components/Address.tsx b/packages/extension-ui/src/components/Address.tsx index 69476aad..ecfa211f 100644 --- a/packages/extension-ui/src/components/Address.tsx +++ b/packages/extension-ui/src/components/Address.tsx @@ -62,7 +62,7 @@ function recodeAddress (address: string, accounts: AccountJson[], chain: Chain | const ACCOUNTS_SCREEN_HEIGHT = 500; -function Address ({ address, className, children, genesisHash, name, actions }: Props): React.ReactElement { +function Address ({ actions, address, children, className, genesisHash, name }: Props): React.ReactElement { const accounts = useContext(AccountContext); const chain = useMetadata(genesisHash); const [{ account, formatted, prefix }, setRecoded] = useState({ account: null, formatted: null, prefix: 42 }); diff --git a/packages/extension-ui/src/components/ButtonWithSubtitle.tsx b/packages/extension-ui/src/components/ButtonWithSubtitle.tsx index a784da3d..18f356db 100644 --- a/packages/extension-ui/src/components/ButtonWithSubtitle.tsx +++ b/packages/extension-ui/src/components/ButtonWithSubtitle.tsx @@ -13,7 +13,7 @@ interface ButtonWithSubtitleProps { to: string; } -export default function ButtonWithSubtitle ({ title, subTitle, children, to }: ButtonWithSubtitleProps): React.ReactElement { +export default function ButtonWithSubtitle ({ children, subTitle, title, to }: ButtonWithSubtitleProps): React.ReactElement { return (

{title}

diff --git a/packages/extension-ui/src/components/Checkbox.tsx b/packages/extension-ui/src/components/Checkbox.tsx index d9cbb0de..9332f345 100644 --- a/packages/extension-ui/src/components/Checkbox.tsx +++ b/packages/extension-ui/src/components/Checkbox.tsx @@ -13,7 +13,7 @@ interface Props { className?: string; } -function Checkbox ({ onChange, label, className, checked }: Props): React.ReactElement { +function Checkbox ({ checked, className, label, onChange }: Props): React.ReactElement { return (