add linter
This commit is contained in:
parent
0eaf700ea9
commit
cb7c1f1c9a
|
@ -0,0 +1,11 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.json]
|
||||||
|
indent_size = 4
|
|
@ -0,0 +1,3 @@
|
||||||
|
dist
|
||||||
|
build
|
||||||
|
node_modules
|
|
@ -0,0 +1,29 @@
|
||||||
|
module.exports = {
|
||||||
|
parser: "@typescript-eslint/parser", // Specifies the ESLint parser
|
||||||
|
extends: [
|
||||||
|
"plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react
|
||||||
|
"plugin:@typescript-eslint/recommended", // Uses the recommended rules from @typescript-eslint/eslint-plugin
|
||||||
|
'plugin:prettier/recommended' // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features
|
||||||
|
sourceType: "module", // Allows for the use of imports
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true // Allows for the parsing of JSX
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
"@typescript-eslint/explicit-function-return-type": "off",
|
||||||
|
"@typescript-eslint/no-explicit-any": "off", // Reduce the use of 'any'
|
||||||
|
"@typescript-eslint/no-non-null-assertion": "off",
|
||||||
|
"@typescript-eslint/no-var-requires": "off",
|
||||||
|
"react/prop-types": "off",
|
||||||
|
"@typescript-eslint/ban-ts-ignore": "off",
|
||||||
|
"@typescript-eslint/member-delimiter-style": "off"
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
react: {
|
||||||
|
version: "detect",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"semi": false,
|
||||||
|
"singleQuote": true,
|
||||||
|
"printWidth": 120,
|
||||||
|
"bracketSpacing": true
|
||||||
|
}
|
|
@ -1,33 +1,23 @@
|
||||||
import React from 'react';
|
import React from 'react'
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom'
|
||||||
import { xdai, dai, eth } from '@burner-wallet/assets';
|
import { xdai, dai, eth } from '@burner-wallet/assets'
|
||||||
import BurnerCore from '@burner-wallet/core';
|
import BurnerCore from '@burner-wallet/core'
|
||||||
import { InjectedSigner, LocalSigner } from '@burner-wallet/core/signers';
|
import { InjectedSigner, LocalSigner } from '@burner-wallet/core/signers'
|
||||||
import { InfuraGateway, InjectedGateway, XDaiGateway, } from '@burner-wallet/core/gateways';
|
import { InfuraGateway, InjectedGateway, XDaiGateway } from '@burner-wallet/core/gateways'
|
||||||
import Exchange, { Uniswap, XDaiBridge } from '@burner-wallet/exchange';
|
import Exchange, { Uniswap, XDaiBridge } from '@burner-wallet/exchange'
|
||||||
import ModernUI from '@burner-wallet/modern-ui';
|
import ModernUI from '@burner-wallet/modern-ui'
|
||||||
// import MyPlugin from 'my-plugin';
|
// import MyPlugin from 'my-plugin';
|
||||||
|
|
||||||
const core = new BurnerCore({
|
const core = new BurnerCore({
|
||||||
signers: [new InjectedSigner(), new LocalSigner()],
|
signers: [new InjectedSigner(), new LocalSigner()],
|
||||||
gateways: [
|
gateways: [new InjectedGateway(), new InfuraGateway(process.env.REACT_APP_INFURA_KEY), new XDaiGateway()],
|
||||||
new InjectedGateway(),
|
assets: [xdai, dai, eth]
|
||||||
new InfuraGateway(process.env.REACT_APP_INFURA_KEY),
|
})
|
||||||
new XDaiGateway(),
|
|
||||||
],
|
|
||||||
assets: [xdai, dai, eth],
|
|
||||||
});
|
|
||||||
|
|
||||||
const exchange = new Exchange({
|
const exchange = new Exchange({
|
||||||
pairs: [new XDaiBridge(), new Uniswap('dai')],
|
pairs: [new XDaiBridge(), new Uniswap('dai')]
|
||||||
});
|
})
|
||||||
|
|
||||||
const BurnerWallet = () =>
|
const BurnerWallet = () => <ModernUI title="Basic Wallet" core={core} plugins={[exchange]} />
|
||||||
<ModernUI
|
|
||||||
title="Basic Wallet"
|
|
||||||
core={core}
|
|
||||||
plugins={[exchange]}
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
ReactDOM.render(<BurnerWallet />, document.getElementById('root'))
|
||||||
ReactDOM.render(<BurnerWallet />, document.getElementById('root'));
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
const axios = require('axios');
|
const axios = require('axios')
|
||||||
|
|
||||||
let id = 0;
|
let id = 0
|
||||||
const rpc = (url, method, ...params) => axios.post(url, { jsonrpc:"2.0", id: id++, method, params })
|
const rpc = (url, method, ...params) =>
|
||||||
.then(response => response.result);
|
axios.post(url, { jsonrpc: '2.0', id: id++, method, params }).then(response => response.result)
|
||||||
|
|
||||||
module.exports.testRPC = url => async () => {
|
module.exports.testRPC = url => async () => {
|
||||||
try {
|
try {
|
||||||
const response = await rpc(url, 'eth_blockNumber');
|
const response = await rpc(url, 'eth_blockNumber')
|
||||||
return !!response;
|
return !!response
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,88 +1,89 @@
|
||||||
const { spawn } = require('child_process');
|
const { spawn } = require('child_process')
|
||||||
const fs = require('fs');
|
const fs = require('fs')
|
||||||
const Web3 = require('web3');
|
const Web3 = require('web3')
|
||||||
const { testRPC } = require('./run-local-lib');
|
const { testRPC } = require('./run-local-lib')
|
||||||
const utils = require('ethereumjs-util');
|
const utils = require('ethereumjs-util')
|
||||||
|
|
||||||
process.on('unhandledRejection', e => console.error(e));
|
process.on('unhandledRejection', e => console.error(e))
|
||||||
|
|
||||||
const RPC = 'http://localhost:8545';
|
const RPC = 'http://localhost:8545'
|
||||||
const PK_USER = '0xecb2222da7cbca080201acf6a7bbda53a3b2bcb22e3004b83ab8c69a884becb9';
|
const PK_USER = '0xecb2222da7cbca080201acf6a7bbda53a3b2bcb22e3004b83ab8c69a884becb9'
|
||||||
|
|
||||||
const DEPLOYER_PK = '0x13179885a8731284475aa2317a35a292131772bb5aa33734a1290b8b13944409';
|
const DEPLOYER_PK = '0x13179885a8731284475aa2317a35a292131772bb5aa33734a1290b8b13944409'
|
||||||
const DEPLOYER_ADDRESS = utils.bufferToHex(utils.privateToAddress(DEPLOYER_PK));
|
const DEPLOYER_ADDRESS = utils.bufferToHex(utils.privateToAddress(DEPLOYER_PK))
|
||||||
|
|
||||||
const ERC20_ADDRESS = utils.bufferToHex(utils.generateAddress(DEPLOYER_ADDRESS, '0'));
|
const ERC20_ADDRESS = utils.bufferToHex(utils.generateAddress(DEPLOYER_ADDRESS, '0'))
|
||||||
|
|
||||||
const getAccount = async web3 => {
|
const getAccount = async web3 => {
|
||||||
const [defaultAccount] = await web3.eth.getAccounts();
|
const [defaultAccount] = await web3.eth.getAccounts()
|
||||||
if (!defaultAccount) {
|
if (!defaultAccount) {
|
||||||
throw new Error('Can not find an unlocked account');
|
throw new Error('Can not find an unlocked account')
|
||||||
}
|
}
|
||||||
return defaultAccount;
|
return defaultAccount
|
||||||
}
|
}
|
||||||
|
|
||||||
(async function() {
|
;(async function() {
|
||||||
if (!await testRPC(RPC)) {
|
if (!(await testRPC(RPC))) {
|
||||||
throw new Error('Ganache not found on port 8545');
|
throw new Error('Ganache not found on port 8545')
|
||||||
}
|
}
|
||||||
|
|
||||||
const web3 = new Web3(new Web3.providers.HttpProvider(RPC), null, {
|
const web3 = new Web3(new Web3.providers.HttpProvider(RPC), null, {
|
||||||
transactionConfirmationBlocks: 1,
|
transactionConfirmationBlocks: 1
|
||||||
});
|
})
|
||||||
|
|
||||||
const user = web3.eth.accounts.privateKeyToAccount(PK_USER);
|
const user = web3.eth.accounts.privateKeyToAccount(PK_USER)
|
||||||
const deployer = web3.eth.accounts.privateKeyToAccount(DEPLOYER_PK);
|
const deployer = web3.eth.accounts.privateKeyToAccount(DEPLOYER_PK)
|
||||||
|
|
||||||
const balance = await web3.eth.getBalance(user.address);
|
const balance = await web3.eth.getBalance(user.address)
|
||||||
console.log(balance, 'bal');
|
console.log(balance, 'bal')
|
||||||
if (balance === '0') {
|
if (balance === '0') {
|
||||||
const defaultAccount = await getAccount(web3);
|
const defaultAccount = await getAccount(web3)
|
||||||
|
|
||||||
console.log(`Sending 1 ETH from ${defaultAccount} to ${user.address}`);
|
console.log(`Sending 1 ETH from ${defaultAccount} to ${user.address}`)
|
||||||
await web3.eth.sendTransaction({
|
await web3.eth.sendTransaction({
|
||||||
from: defaultAccount,
|
from: defaultAccount,
|
||||||
to: user.address,
|
to: user.address,
|
||||||
value: web3.utils.toWei('1', 'ether'),
|
value: web3.utils.toWei('1', 'ether')
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const collectableCode = await web3.eth.getCode(ERC20_ADDRESS);
|
const collectableCode = await web3.eth.getCode(ERC20_ADDRESS)
|
||||||
if (collectableCode === '0x') {
|
if (collectableCode === '0x') {
|
||||||
console.log('ERC20 contract not found, deploying');
|
console.log('ERC20 contract not found, deploying')
|
||||||
const defaultAccount = await getAccount(web3);
|
const defaultAccount = await getAccount(web3)
|
||||||
|
|
||||||
await web3.eth.sendTransaction({
|
await web3.eth.sendTransaction({
|
||||||
from: defaultAccount,
|
from: defaultAccount,
|
||||||
to: deployer.address,
|
to: deployer.address,
|
||||||
value: web3.utils.toWei('.2', 'ether'),
|
value: web3.utils.toWei('.2', 'ether')
|
||||||
});
|
})
|
||||||
|
|
||||||
// Deploy ERC20
|
// Deploy ERC20
|
||||||
const erc20Bytecode = fs.readFileSync(`${__dirname}/erc20bytecode.txt`, 'utf8');
|
const erc20Bytecode = fs.readFileSync(`${__dirname}/erc20bytecode.txt`, 'utf8')
|
||||||
const { rawTransaction: deployTx } = await deployer.signTransaction({
|
const { rawTransaction: deployTx } = await deployer.signTransaction({
|
||||||
gas: '5000000',
|
gas: '5000000',
|
||||||
data: erc20Bytecode,
|
data: erc20Bytecode
|
||||||
})
|
})
|
||||||
await web3.eth.sendSignedTransaction(deployTx);
|
await web3.eth.sendSignedTransaction(deployTx)
|
||||||
|
|
||||||
// Transfer tokens to user
|
// Transfer tokens to user
|
||||||
console.log('Transfering tokens');
|
console.log('Transfering tokens')
|
||||||
const { rawTransaction: transferTx } = await deployer.signTransaction({
|
const { rawTransaction: transferTx } = await deployer.signTransaction({
|
||||||
to: ERC20_ADDRESS,
|
to: ERC20_ADDRESS,
|
||||||
gas: '5000000',
|
gas: '5000000',
|
||||||
data: `0xa9059cbb000000000000000000000000${user.address.substr(2)}0000000000000000000000000000000000000000000000056bc75e2d63100000`,
|
data: `0xa9059cbb000000000000000000000000${user.address.substr(
|
||||||
|
2
|
||||||
|
)}0000000000000000000000000000000000000000000000056bc75e2d63100000`
|
||||||
})
|
})
|
||||||
await web3.eth.sendSignedTransaction(transferTx);
|
await web3.eth.sendSignedTransaction(transferTx)
|
||||||
}
|
}
|
||||||
|
|
||||||
spawn('yarn', ['start-wallet'], {
|
spawn('yarn', ['start-wallet'], {
|
||||||
env: {
|
env: {
|
||||||
...process.env,
|
...process.env,
|
||||||
REACT_APP_PK: PK_USER,
|
REACT_APP_PK: PK_USER,
|
||||||
REACT_APP_ERC20_ADDRESS: ERC20_ADDRESS,
|
REACT_APP_ERC20_ADDRESS: ERC20_ADDRESS
|
||||||
},
|
},
|
||||||
stdio: 'inherit',
|
stdio: 'inherit'
|
||||||
});
|
})
|
||||||
})();
|
})()
|
||||||
|
|
||||||
|
|
|
@ -1,47 +1,36 @@
|
||||||
import React from 'react';
|
import React from 'react'
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom'
|
||||||
import { NativeAsset, ERC20Asset } from '@burner-wallet/assets';
|
import { NativeAsset, ERC20Asset } from '@burner-wallet/assets'
|
||||||
import BurnerCore from '@burner-wallet/core';
|
import BurnerCore from '@burner-wallet/core'
|
||||||
import { InjectedSigner, LocalSigner } from '@burner-wallet/core/signers';
|
import { InjectedSigner, LocalSigner } from '@burner-wallet/core/signers'
|
||||||
import { HTTPGateway } from '@burner-wallet/core/gateways';
|
import { HTTPGateway } from '@burner-wallet/core/gateways'
|
||||||
import ModernUI from '@burner-wallet/modern-ui';
|
import ModernUI from '@burner-wallet/modern-ui'
|
||||||
import Exchange, { Uniswap, XDaiBridge } from '@burner-wallet/exchange';
|
import Exchange, { Uniswap, XDaiBridge } from '@burner-wallet/exchange'
|
||||||
// import MyPlugin from 'my-plugin';
|
// import MyPlugin from 'my-plugin';
|
||||||
|
|
||||||
const core = new BurnerCore({
|
const core = new BurnerCore({
|
||||||
signers: [
|
signers: [new InjectedSigner(), new LocalSigner({ privateKey: process.env.REACT_APP_PK, saveKey: false })],
|
||||||
new InjectedSigner(),
|
gateways: [new HTTPGateway('http://localhost:8545', '5777')],
|
||||||
new LocalSigner({ privateKey: process.env.REACT_APP_PK, saveKey: false }),
|
|
||||||
],
|
|
||||||
gateways: [
|
|
||||||
new HTTPGateway('http://localhost:8545', '5777'),
|
|
||||||
],
|
|
||||||
assets: [
|
assets: [
|
||||||
new ERC20Asset({
|
new ERC20Asset({
|
||||||
id: 'localerc20',
|
id: 'localerc20',
|
||||||
name: 'Local Token',
|
name: 'Local Token',
|
||||||
network: '5777',
|
network: '5777',
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
address: process.env.REACT_APP_ERC20_ADDRESS,
|
address: process.env.REACT_APP_ERC20_ADDRESS
|
||||||
}),
|
}),
|
||||||
new NativeAsset({
|
new NativeAsset({
|
||||||
id: 'geth',
|
id: 'geth',
|
||||||
name: 'Ganache ETH',
|
name: 'Ganache ETH',
|
||||||
network: '5777',
|
network: '5777'
|
||||||
}),
|
})
|
||||||
],
|
]
|
||||||
});
|
})
|
||||||
|
|
||||||
const exchange = new Exchange({
|
const exchange = new Exchange({
|
||||||
pairs: [new XDaiBridge(), new Uniswap('dai')],
|
pairs: [new XDaiBridge(), new Uniswap('dai')]
|
||||||
});
|
})
|
||||||
|
|
||||||
const BurnerWallet = () =>
|
const BurnerWallet = () => <ModernUI title="Local Wallet" core={core} plugins={[exchange]} />
|
||||||
<ModernUI
|
|
||||||
title="Local Wallet"
|
|
||||||
core={core}
|
|
||||||
plugins={[exchange]}
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
ReactDOM.render(<BurnerWallet />, document.getElementById('root'))
|
||||||
ReactDOM.render(<BurnerWallet />, document.getElementById('root'));
|
|
||||||
|
|
|
@ -1,35 +1,35 @@
|
||||||
import { BurnerPluginContext, Plugin, Actions } from '@burner-wallet/types';
|
import { BurnerPluginContext, Plugin, Actions } from '@burner-wallet/types'
|
||||||
import MyPage from './ui/MyPage';
|
import MyPage from './ui/MyPage'
|
||||||
import MyElement from './ui/MyElement';
|
import MyElement from './ui/MyElement'
|
||||||
|
|
||||||
interface PluginActionContext {
|
interface PluginActionContext {
|
||||||
actions: Actions;
|
actions: Actions
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class MyPlugin implements Plugin {
|
export default class MyPlugin implements Plugin {
|
||||||
private pluginContext?: BurnerPluginContext;
|
private pluginContext?: BurnerPluginContext
|
||||||
|
|
||||||
initializePlugin(pluginContext: BurnerPluginContext) {
|
initializePlugin(pluginContext: BurnerPluginContext) {
|
||||||
this.pluginContext = pluginContext;
|
this.pluginContext = pluginContext
|
||||||
|
|
||||||
pluginContext.addPage('/my-page', MyPage);
|
pluginContext.addPage('/my-page', MyPage)
|
||||||
pluginContext.addButton('apps', 'My Plugin', '/my-page', {
|
pluginContext.addButton('apps', 'My Plugin', '/my-page', {
|
||||||
description: 'Sample plugin page',
|
description: 'Sample plugin page'
|
||||||
});
|
})
|
||||||
pluginContext.addElement('home-middle', MyElement);
|
pluginContext.addElement('home-middle', MyElement)
|
||||||
|
|
||||||
onQRScanned: ((scan: string, ctx: PluginActionContext) => {
|
onQRScanned: (scan: string, ctx: PluginActionContext) => {
|
||||||
if (scan === 'My Plugin') {
|
if (scan === 'My Plugin') {
|
||||||
ctx.actions.navigateTo('/my-page');
|
ctx.actions.navigateTo('/my-page')
|
||||||
return true;
|
return true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getBlockNum() {
|
async getBlockNum() {
|
||||||
const assets = this.pluginContext!.getAssets();
|
const assets = this.pluginContext!.getAssets()
|
||||||
const web3 = this.pluginContext!.getWeb3(assets[0].network);
|
const web3 = this.pluginContext!.getWeb3(assets[0].network)
|
||||||
const blockNum = web3.eth.getBlockNumber();
|
const blockNum = web3.eth.getBlockNumber()
|
||||||
return blockNum;
|
return blockNum
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,21 @@
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react'
|
||||||
import { PluginElementContext } from '@burner-wallet/types';
|
import { PluginElementContext } from '@burner-wallet/types'
|
||||||
import MyPlugin from '../MyPlugin';
|
import MyPlugin from '../MyPlugin'
|
||||||
|
|
||||||
const MyElement: React.FC<PluginElementContext> = ({ plugin }) => {
|
const MyElement: React.FC<PluginElementContext> = ({ plugin }) => {
|
||||||
const [block, setBlock] = useState<string | null>(null);
|
const [block, setBlock] = useState<string | null>(null)
|
||||||
const _plugin = plugin as MyPlugin;
|
const _plugin = plugin as MyPlugin
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
_plugin.getBlockNum().then((num: number) => setBlock(num.toString()))
|
_plugin.getBlockNum().then((num: number) => setBlock(num.toString()))
|
||||||
}, []);
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>Injected plugin element</div>
|
<div>Injected plugin element</div>
|
||||||
{block && (
|
{block && <div>Current block number: {block}</div>}
|
||||||
<div>Current block number: {block}</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
)
|
||||||
};
|
}
|
||||||
|
|
||||||
export default MyElement;
|
export default MyElement
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import React from 'react';
|
import React from 'react'
|
||||||
import { PluginPageContext } from '@burner-wallet/types';
|
import { PluginPageContext } from '@burner-wallet/types'
|
||||||
import { Asset } from '@burner-wallet/assets';
|
import { Asset } from '@burner-wallet/assets'
|
||||||
|
|
||||||
const MyPage: React.FC<PluginPageContext> = ({ burnerComponents, assets, defaultAccount }) => {
|
const MyPage: React.FC<PluginPageContext> = ({ burnerComponents, assets, defaultAccount }) => {
|
||||||
const { Page } = burnerComponents;
|
const { Page } = burnerComponents
|
||||||
return (
|
return (
|
||||||
<Page title="My Page">
|
<Page title="My Page">
|
||||||
<div>Account: {defaultAccount}</div>
|
<div>Account: {defaultAccount}</div>
|
||||||
<div>Assets: {assets.map((asset: Asset) => asset.name).join(', ')}</div>
|
<div>Assets: {assets.map((asset: Asset) => asset.name).join(', ')}</div>
|
||||||
</Page>
|
</Page>
|
||||||
);
|
)
|
||||||
};
|
}
|
||||||
|
|
||||||
export default MyPage;
|
export default MyPage
|
||||||
|
|
|
@ -20,8 +20,11 @@
|
||||||
"@typescript-eslint/eslint-plugin": "^2.5.0",
|
"@typescript-eslint/eslint-plugin": "^2.5.0",
|
||||||
"@typescript-eslint/parser": "^2.5.0",
|
"@typescript-eslint/parser": "^2.5.0",
|
||||||
"eslint": "^6.6.0",
|
"eslint": "^6.6.0",
|
||||||
|
"eslint-config-prettier": "^6.10.0",
|
||||||
|
"eslint-plugin-prettier": "^3.1.2",
|
||||||
"eslint-plugin-react": "^7.16.0",
|
"eslint-plugin-react": "^7.16.0",
|
||||||
"lerna": "^3.16.4"
|
"lerna": "^3.16.4",
|
||||||
|
"prettier": "^1.19.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"typescript": "^3.6.3"
|
"typescript": "^3.6.3"
|
||||||
|
|
36
yarn.lock
36
yarn.lock
|
@ -5690,6 +5690,13 @@ escodegen@^1.11.0, escodegen@^1.9.1:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
|
eslint-config-prettier@^6.10.0:
|
||||||
|
version "6.10.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f"
|
||||||
|
integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==
|
||||||
|
dependencies:
|
||||||
|
get-stdin "^6.0.0"
|
||||||
|
|
||||||
eslint-config-react-app@^5.0.2:
|
eslint-config-react-app@^5.0.2:
|
||||||
version "5.0.2"
|
version "5.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.0.2.tgz#df40d73a1402986030680c040bbee520db5a32a4"
|
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.0.2.tgz#df40d73a1402986030680c040bbee520db5a32a4"
|
||||||
|
@ -5763,6 +5770,13 @@ eslint-plugin-jsx-a11y@6.2.3:
|
||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
jsx-ast-utils "^2.2.1"
|
jsx-ast-utils "^2.2.1"
|
||||||
|
|
||||||
|
eslint-plugin-prettier@^3.1.2:
|
||||||
|
version "3.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba"
|
||||||
|
integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==
|
||||||
|
dependencies:
|
||||||
|
prettier-linter-helpers "^1.0.0"
|
||||||
|
|
||||||
eslint-plugin-react-hooks@^1.6.1:
|
eslint-plugin-react-hooks@^1.6.1:
|
||||||
version "1.7.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04"
|
||||||
|
@ -6528,6 +6542,11 @@ fast-deep-equal@^2.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
||||||
|
|
||||||
|
fast-diff@^1.1.2:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
|
||||||
|
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
|
||||||
|
|
||||||
fast-glob@^2.0.2, fast-glob@^2.2.6:
|
fast-glob@^2.0.2, fast-glob@^2.2.6:
|
||||||
version "2.2.7"
|
version "2.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
|
||||||
|
@ -6967,6 +6986,11 @@ get-stdin@^4.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
||||||
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
|
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
|
||||||
|
|
||||||
|
get-stdin@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
|
||||||
|
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
||||||
|
|
||||||
get-stream@^2.2.0:
|
get-stream@^2.2.0:
|
||||||
version "2.3.1"
|
version "2.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
||||||
|
@ -11601,6 +11625,18 @@ prepend-http@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
||||||
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
|
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
|
||||||
|
|
||||||
|
prettier-linter-helpers@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
|
||||||
|
integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
|
||||||
|
dependencies:
|
||||||
|
fast-diff "^1.1.2"
|
||||||
|
|
||||||
|
prettier@^1.19.1:
|
||||||
|
version "1.19.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
|
||||||
|
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
|
||||||
|
|
||||||
pretty-bytes@^5.1.0:
|
pretty-bytes@^5.1.0:
|
||||||
version "5.3.0"
|
version "5.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
|
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
|
||||||
|
|
Loading…
Reference in New Issue