chore: use @uniswap eslint preset (#5556)
* feat: replace eslint with preset * chore: update * add empty line * Revert changes * chore: replace colors * chore: tweaks * Revert "chore: replace colors" This reverts commit 3462420ecbdd9c5275a895643dad1586e92226a0. * bring lint back * chore: tweaks * chore: add note * chore: fix yarn lock * chore: fix yarn.lock 2 * chore: use ESLint from npm * Chore: update lockfile * tweaks * chore: initial take fixing some lint issues * tweaks * chore: another take * chore: further tweaks * chore: fix further * feat: ignore Jest for cypress * revert change * chore: update to latest preset * tmp lets see if this works * chore: turn error into warning * chore: remove warnings * chore: deduplicate yarn lock * feat: add recommended ESLint extension in case someone has Prettier instead * upgrade to latest uniswap config * chore: update todo * remove patch * find to some * name * chore: tweak yarn lock * update * cleanup * update name for filter * nl * no unsafe finally * chore: update doc * fix * fix * one more fix * one more file * chore: Fix two last build issues * add generated back * fix lint after merge * chore: fix tests * remove * one more
This commit is contained in:
parent
2aa1b18d14
commit
1802f50163
@ -2,3 +2,4 @@
|
|||||||
*.d.ts
|
*.d.ts
|
||||||
/src/graphql/data/__generated__/types-and-hooks.ts
|
/src/graphql/data/__generated__/types-and-hooks.ts
|
||||||
/src/graphql/thegraph/__generated__/types-and-hooks.ts
|
/src/graphql/thegraph/__generated__/types-and-hooks.ts
|
||||||
|
/src/schema/schema.graphql
|
||||||
|
7
.eslintrc.js
Normal file
7
.eslintrc.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
require('@uniswap/eslint-config/load')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
extends: '@uniswap/eslint-config/react',
|
||||||
|
}
|
109
.eslintrc.json
109
.eslintrc.json
@ -1,109 +0,0 @@
|
|||||||
{
|
|
||||||
"parser": "@typescript-eslint/parser",
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 2020,
|
|
||||||
"sourceType": "module",
|
|
||||||
"ecmaFeatures": {
|
|
||||||
// Allows for the parsing of JSX
|
|
||||||
"jsx": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"settings": {
|
|
||||||
"react": {
|
|
||||||
"version": "detect"
|
|
||||||
},
|
|
||||||
"import/parsers": {
|
|
||||||
"@typescript-eslint/parser": [".ts", ".tsx"]
|
|
||||||
},
|
|
||||||
"import/resolver": {
|
|
||||||
"typescript": {
|
|
||||||
"alwaysTryTypes": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ignorePatterns": [
|
|
||||||
"src/types/v3",
|
|
||||||
"src/abis/types",
|
|
||||||
"src/locales/**/*.js",
|
|
||||||
"src/locales/**/en-US.po",
|
|
||||||
"node_modules",
|
|
||||||
"coverage",
|
|
||||||
"build",
|
|
||||||
"dist",
|
|
||||||
".DS_Store",
|
|
||||||
".env.local",
|
|
||||||
".env.development.local",
|
|
||||||
".env.test.local",
|
|
||||||
".env.production.local",
|
|
||||||
".idea/",
|
|
||||||
".vscode/",
|
|
||||||
"package-lock.json",
|
|
||||||
"yarn.lock"
|
|
||||||
],
|
|
||||||
"extends": [
|
|
||||||
"react-app",
|
|
||||||
"plugin:react/recommended",
|
|
||||||
"plugin:@typescript-eslint/recommended",
|
|
||||||
"plugin:react-hooks/recommended",
|
|
||||||
"prettier/@typescript-eslint",
|
|
||||||
"plugin:prettier/recommended",
|
|
||||||
"plugin:import/typescript"
|
|
||||||
],
|
|
||||||
"plugins": ["import", "simple-import-sort", "unused-imports"],
|
|
||||||
"rules": {
|
|
||||||
"import/no-unused-modules": [2, { "unusedExports": true }],
|
|
||||||
"unused-imports/no-unused-imports": "error",
|
|
||||||
"simple-import-sort/imports": "error",
|
|
||||||
"simple-import-sort/exports": "error",
|
|
||||||
"@typescript-eslint/explicit-function-return-type": "off",
|
|
||||||
"prettier/prettier": "error",
|
|
||||||
"@typescript-eslint/no-explicit-any": "off",
|
|
||||||
"@typescript-eslint/ban-ts-comment": "off",
|
|
||||||
"@typescript-eslint/ban-ts-ignore": "off",
|
|
||||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
||||||
"react/react-in-jsx-scope": "off",
|
|
||||||
"react/jsx-curly-brace-presence": ["error", { "props": "never", "children": "never" }],
|
|
||||||
"object-shorthand": ["error", "always"],
|
|
||||||
"no-restricted-imports": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"paths": [
|
|
||||||
{
|
|
||||||
"name": "ethers",
|
|
||||||
"message": "Please import from '@ethersproject/module' directly to support tree-shaking."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "styled-components",
|
|
||||||
"message": "Please import from styled-components/macro."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@lingui/macro",
|
|
||||||
"importNames": ["t"],
|
|
||||||
"message": "Please use <Trans> instead of t."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"patterns": [
|
|
||||||
{
|
|
||||||
"group": ["**/dist"],
|
|
||||||
"message": "Do not import from dist/ - this is an implementation detail, and breaks tree-shaking."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"group": ["!styled-components/macro"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"@typescript-eslint/no-restricted-imports": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"paths": [
|
|
||||||
{
|
|
||||||
"name": "@ethersproject/providers",
|
|
||||||
"message": "Please only use Providers instantiated in constants/providers to improve traceability.",
|
|
||||||
"allowTypeImports": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
/src/schema/schema.graphql
|
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"semi": false,
|
|
||||||
"singleQuote": true,
|
|
||||||
"printWidth": 120
|
|
||||||
}
|
|
6
.vscode/extensions.json
vendored
Normal file
6
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"dbaeumer.vscode-eslint"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": []
|
||||||
|
}
|
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
@ -5,15 +5,12 @@
|
|||||||
"editor.formatOnSaveMode": "file",
|
"editor.formatOnSaveMode": "file",
|
||||||
"editor.tabCompletion": "on",
|
"editor.tabCompletion": "on",
|
||||||
"editor.tabSize": 2,
|
"editor.tabSize": 2,
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": false,
|
||||||
"editor.inlineSuggest.enabled": true,
|
"editor.inlineSuggest.enabled": true,
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll": true
|
"source.fixAll": true
|
||||||
},
|
},
|
||||||
"files.eol": "\n",
|
"files.eol": "\n",
|
||||||
"eslint.enable": true,
|
"eslint.enable": true,
|
||||||
"eslint.debug": true,
|
"eslint.debug": true
|
||||||
"[typescript]": {
|
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
import type { CodegenConfig } from '@graphql-codegen/cli'
|
import type { CodegenConfig } from '@graphql-codegen/cli'
|
||||||
|
|
||||||
// Generates TS objects from the schemas returned by graphql queries
|
// Generates TS objects from the schemas returned by graphql queries
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
import type { CodegenConfig } from '@graphql-codegen/cli'
|
import type { CodegenConfig } from '@graphql-codegen/cli'
|
||||||
|
|
||||||
// Generates TS objects from the schemas returned by graphql queries
|
// Generates TS objects from the schemas returned by graphql queries
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
const isDev = process.env.NODE_ENV === 'development'
|
const isDev = process.env.NODE_ENV === 'development'
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -8,7 +8,8 @@ describe(
|
|||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
it('loads swap page', () => {
|
it('loads swap page', () => {
|
||||||
// We *must* wait in order to space out the retry attempts.
|
// TODO: We *must* wait in order to space out the retry attempts. Find a better way to do this.
|
||||||
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||||
cy.wait(ONE_MINUTE)
|
cy.wait(ONE_MINUTE)
|
||||||
.visit('/', {
|
.visit('/', {
|
||||||
retryOnStatusCodeFailure: true,
|
retryOnStatusCodeFailure: true,
|
||||||
|
@ -85,8 +85,7 @@ beforeEach(() => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.on('uncaught:exception', (_err, _runnable) => {
|
Cypress.on('uncaught:exception', () => {
|
||||||
// returning false here prevents Cypress from
|
// returning false here prevents Cypress from failing the test
|
||||||
// failing the test
|
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Utility to match GraphQL mutation based on the query name
|
// Utility to match GraphQL mutation based on the query name
|
||||||
export const hasQuery = (req: any, queryName: string) => {
|
export const hasQuery = (req: any, queryName: string) => {
|
||||||
const { body } = req
|
const { body } = req
|
||||||
return body.hasOwnProperty('query') && body.query.includes(queryName)
|
return Object.prototype.hasOwnProperty.call(body, 'query') && body.query.includes(queryName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alias query if queryName matches
|
// Alias query if queryName matches
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
/* eslint-disable */
|
/* eslint-env node */
|
||||||
|
|
||||||
require('dotenv').config({ path: '.env.production' })
|
require('dotenv').config({ path: '.env.production' })
|
||||||
|
|
||||||
const { exec } = require('child_process')
|
const { exec } = require('child_process')
|
||||||
const dataConfig = require('./graphql.config')
|
const dataConfig = require('./graphql.config')
|
||||||
const thegraphConfig = require('./graphql_thegraph.config')
|
const thegraphConfig = require('./graphql_thegraph.config')
|
||||||
/* eslint-enable */
|
|
||||||
|
|
||||||
function fetchSchema(url, outputFile) {
|
function fetchSchema(url, outputFile) {
|
||||||
exec(
|
exec(
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
src: './src',
|
src: './src',
|
||||||
language: 'typescript',
|
language: 'typescript',
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
/* eslint-env node */
|
||||||
|
|
||||||
const defaultConfig = require('./graphql.config')
|
const defaultConfig = require('./graphql.config')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
12
package.json
12
package.json
@ -90,22 +90,12 @@
|
|||||||
"@types/ua-parser-js": "^0.7.35",
|
"@types/ua-parser-js": "^0.7.35",
|
||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
"@types/wcag-contrast": "^3.0.0",
|
"@types/wcag-contrast": "^3.0.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^4",
|
"@uniswap/eslint-config": "^1.1.1",
|
||||||
"@typescript-eslint/parser": "^4",
|
|
||||||
"@vanilla-extract/babel-plugin": "^1.1.7",
|
"@vanilla-extract/babel-plugin": "^1.1.7",
|
||||||
"@vanilla-extract/webpack-plugin": "^2.1.11",
|
"@vanilla-extract/webpack-plugin": "^2.1.11",
|
||||||
"cypress": "^10.3.1",
|
"cypress": "^10.3.1",
|
||||||
"env-cmd": "^10.1.0",
|
"env-cmd": "^10.1.0",
|
||||||
"eslint": "^7.11.0",
|
"eslint": "^7.11.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
|
||||||
"eslint-import-resolver-typescript": "^3.5.2",
|
|
||||||
"eslint-plugin-better-styled-components": "^1.1.2",
|
|
||||||
"eslint-plugin-import": "^2.26.0",
|
|
||||||
"eslint-plugin-prettier": "^3.1.3",
|
|
||||||
"eslint-plugin-react": "^7.21.5",
|
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
|
||||||
"eslint-plugin-simple-import-sort": "^7.0.0",
|
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
|
||||||
"jest-styled-components": "^7.0.8",
|
"jest-styled-components": "^7.0.8",
|
||||||
"ms.macro": "^2.0.0",
|
"ms.macro": "^2.0.0",
|
||||||
"patch-package": "^6.4.7",
|
"patch-package": "^6.4.7",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
/* eslint-env node */
|
||||||
|
|
||||||
const { exec } = require('child_process')
|
const { exec } = require('child_process')
|
||||||
const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)
|
const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)
|
||||||
|
|
||||||
|
@ -14,18 +14,15 @@ import {
|
|||||||
CollectFeesTransactionInfo,
|
CollectFeesTransactionInfo,
|
||||||
CreateV3PoolTransactionInfo,
|
CreateV3PoolTransactionInfo,
|
||||||
DelegateTransactionInfo,
|
DelegateTransactionInfo,
|
||||||
DepositLiquidityStakingTransactionInfo,
|
|
||||||
ExactInputSwapTransactionInfo,
|
ExactInputSwapTransactionInfo,
|
||||||
ExactOutputSwapTransactionInfo,
|
ExactOutputSwapTransactionInfo,
|
||||||
ExecuteTransactionInfo,
|
ExecuteTransactionInfo,
|
||||||
MigrateV2LiquidityToV3TransactionInfo,
|
MigrateV2LiquidityToV3TransactionInfo,
|
||||||
QueueTransactionInfo,
|
QueueTransactionInfo,
|
||||||
RemoveLiquidityV3TransactionInfo,
|
RemoveLiquidityV3TransactionInfo,
|
||||||
SubmitProposalTransactionInfo,
|
|
||||||
TransactionInfo,
|
TransactionInfo,
|
||||||
TransactionType,
|
TransactionType,
|
||||||
VoteTransactionInfo,
|
VoteTransactionInfo,
|
||||||
WithdrawLiquidityStakingTransactionInfo,
|
|
||||||
WrapTransactionInfo,
|
WrapTransactionInfo,
|
||||||
} from '../../state/transactions/types'
|
} from '../../state/transactions/types'
|
||||||
|
|
||||||
@ -83,7 +80,7 @@ function ClaimSummary({ info: { recipient, uniAmountRaw } }: { info: ClaimTransa
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function SubmitProposalTransactionSummary(_: { info: SubmitProposalTransactionInfo }) {
|
function SubmitProposalTransactionSummary() {
|
||||||
return <Trans>Submit new proposal</Trans>
|
return <Trans>Submit new proposal</Trans>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,13 +172,13 @@ function WrapSummary({ info: { chainId, currencyAmountRaw, unwrapped } }: { info
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function DepositLiquidityStakingSummary(_: { info: DepositLiquidityStakingTransactionInfo }) {
|
function DepositLiquidityStakingSummary() {
|
||||||
// not worth rendering the tokens since you can should no longer deposit liquidity in the staking contracts
|
// not worth rendering the tokens since you can should no longer deposit liquidity in the staking contracts
|
||||||
// todo: deprecate and delete the code paths that allow this, show user more information
|
// todo: deprecate and delete the code paths that allow this, show user more information
|
||||||
return <Trans>Deposit liquidity</Trans>
|
return <Trans>Deposit liquidity</Trans>
|
||||||
}
|
}
|
||||||
|
|
||||||
function WithdrawLiquidityStakingSummary(_: { info: WithdrawLiquidityStakingTransactionInfo }) {
|
function WithdrawLiquidityStakingSummary() {
|
||||||
return <Trans>Withdraw deposited liquidity</Trans>
|
return <Trans>Withdraw deposited liquidity</Trans>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,10 +316,10 @@ export function TransactionSummary({ info }: { info: TransactionInfo }) {
|
|||||||
return <ClaimSummary info={info} />
|
return <ClaimSummary info={info} />
|
||||||
|
|
||||||
case TransactionType.DEPOSIT_LIQUIDITY_STAKING:
|
case TransactionType.DEPOSIT_LIQUIDITY_STAKING:
|
||||||
return <DepositLiquidityStakingSummary info={info} />
|
return <DepositLiquidityStakingSummary />
|
||||||
|
|
||||||
case TransactionType.WITHDRAW_LIQUIDITY_STAKING:
|
case TransactionType.WITHDRAW_LIQUIDITY_STAKING:
|
||||||
return <WithdrawLiquidityStakingSummary info={info} />
|
return <WithdrawLiquidityStakingSummary />
|
||||||
|
|
||||||
case TransactionType.SWAP:
|
case TransactionType.SWAP:
|
||||||
return <SwapSummary info={info} />
|
return <SwapSummary info={info} />
|
||||||
@ -358,6 +355,6 @@ export function TransactionSummary({ info }: { info: TransactionInfo }) {
|
|||||||
return <ExecuteSummary info={info} />
|
return <ExecuteSummary info={info} />
|
||||||
|
|
||||||
case TransactionType.SUBMIT_PROPOSAL:
|
case TransactionType.SUBMIT_PROPOSAL:
|
||||||
return <SubmitProposalTransactionSummary info={info} />
|
return <SubmitProposalTransactionSummary />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,26 +39,32 @@ const getCurrency = ({ info, chainId }: { info: TransactionInfo; chainId: number
|
|||||||
switch (info.type) {
|
switch (info.type) {
|
||||||
case TransactionType.ADD_LIQUIDITY_V3_POOL:
|
case TransactionType.ADD_LIQUIDITY_V3_POOL:
|
||||||
case TransactionType.REMOVE_LIQUIDITY_V3:
|
case TransactionType.REMOVE_LIQUIDITY_V3:
|
||||||
case TransactionType.CREATE_V3_POOL:
|
case TransactionType.CREATE_V3_POOL: {
|
||||||
const { baseCurrencyId, quoteCurrencyId } = info
|
const { baseCurrencyId, quoteCurrencyId } = info
|
||||||
return { currencyId0: baseCurrencyId, currencyId1: quoteCurrencyId }
|
return { currencyId0: baseCurrencyId, currencyId1: quoteCurrencyId }
|
||||||
case TransactionType.SWAP:
|
}
|
||||||
|
case TransactionType.SWAP: {
|
||||||
const { inputCurrencyId, outputCurrencyId } = info
|
const { inputCurrencyId, outputCurrencyId } = info
|
||||||
return { currencyId0: inputCurrencyId, currencyId1: outputCurrencyId }
|
return { currencyId0: inputCurrencyId, currencyId1: outputCurrencyId }
|
||||||
case TransactionType.WRAP:
|
}
|
||||||
|
case TransactionType.WRAP: {
|
||||||
const { unwrapped } = info
|
const { unwrapped } = info
|
||||||
const native = info.chainId ? nativeOnChain(info.chainId) : undefined
|
const native = info.chainId ? nativeOnChain(info.chainId) : undefined
|
||||||
const base = 'ETH'
|
const base = 'ETH'
|
||||||
const wrappedCurrency = native?.wrapped.address ?? 'WETH'
|
const wrappedCurrency = native?.wrapped.address ?? 'WETH'
|
||||||
return { currencyId0: unwrapped ? wrappedCurrency : base, currencyId1: unwrapped ? base : wrappedCurrency }
|
return { currencyId0: unwrapped ? wrappedCurrency : base, currencyId1: unwrapped ? base : wrappedCurrency }
|
||||||
case TransactionType.COLLECT_FEES:
|
}
|
||||||
|
case TransactionType.COLLECT_FEES: {
|
||||||
const { currencyId0, currencyId1 } = info
|
const { currencyId0, currencyId1 } = info
|
||||||
return { currencyId0, currencyId1 }
|
return { currencyId0, currencyId1 }
|
||||||
case TransactionType.APPROVAL:
|
}
|
||||||
|
case TransactionType.APPROVAL: {
|
||||||
return { currencyId0: info.tokenAddress, currencyId1: undefined }
|
return { currencyId0: info.tokenAddress, currencyId1: undefined }
|
||||||
case TransactionType.CLAIM:
|
}
|
||||||
|
case TransactionType.CLAIM: {
|
||||||
const uniAddress = chainId ? UNI_ADDRESS[chainId] : undefined
|
const uniAddress = chainId ? UNI_ADDRESS[chainId] : undefined
|
||||||
return { currencyId0: uniAddress, currencyId1: undefined }
|
return { currencyId0: uniAddress, currencyId1: undefined }
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return { currencyId0: undefined, currencyId1: undefined }
|
return { currencyId0: undefined, currencyId1: undefined }
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,7 @@ function FeatureFlagGroup({ name, children }: PropsWithChildren<{ name: string }
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function FeatureFlagOption({ variant, featureFlag, value, label }: FeatureFlagProps) {
|
function FeatureFlagOption({ variant, featureFlag, label }: FeatureFlagProps) {
|
||||||
const updateFlag = useUpdateFlag()
|
const updateFlag = useUpdateFlag()
|
||||||
const [count, setCount] = useState(0)
|
const [count, setCount] = useState(0)
|
||||||
const featureFlags = useAtomValue(featureFlagSettings)
|
const featureFlags = useAtomValue(featureFlagSettings)
|
||||||
|
@ -67,7 +67,7 @@ const MOONPAY_SUPPORTED_CURRENCY_CODES = [
|
|||||||
export default function FiatOnrampModal() {
|
export default function FiatOnrampModal() {
|
||||||
const { account } = useWeb3React()
|
const { account } = useWeb3React()
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
const closeModal = useCloseModal(ApplicationModal.FIAT_ONRAMP)
|
const closeModal = useCloseModal()
|
||||||
const fiatOnrampModalOpen = useModalIsOpen(ApplicationModal.FIAT_ONRAMP)
|
const fiatOnrampModalOpen = useModalIsOpen(ApplicationModal.FIAT_ONRAMP)
|
||||||
|
|
||||||
const [signedIframeUrl, setSignedIframeUrl] = useState<string | null>(null)
|
const [signedIframeUrl, setSignedIframeUrl] = useState<string | null>(null)
|
||||||
|
@ -76,7 +76,7 @@ export function AddRemoveTabs({
|
|||||||
// detect if back should redirect to v3 or v2 pool page
|
// detect if back should redirect to v3 or v2 pool page
|
||||||
const poolLink = location.pathname.includes('add/v2')
|
const poolLink = location.pathname.includes('add/v2')
|
||||||
? '/pool/v2'
|
? '/pool/v2'
|
||||||
: '/pool' + (!!positionID ? `/${positionID.toString()}` : '')
|
: '/pool' + (positionID ? `/${positionID.toString()}` : '')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tabs>
|
<Tabs>
|
||||||
|
@ -51,7 +51,7 @@ const ToggleElement = styled.span<{ isActive?: boolean; bgColor?: string; isInit
|
|||||||
${({ isActive, isInitialToggleLoad }) => (isInitialToggleLoad ? 'none' : isActive ? turnOnToggle : turnOffToggle)}
|
${({ isActive, isInitialToggleLoad }) => (isInitialToggleLoad ? 'none' : isActive ? turnOnToggle : turnOffToggle)}
|
||||||
ease-in;
|
ease-in;
|
||||||
background: ${({ theme, bgColor, isActive }) =>
|
background: ${({ theme, bgColor, isActive }) =>
|
||||||
isActive ? bgColor ?? theme.accentAction : !!bgColor ? theme.deprecated_bg4 : theme.textTertiary};
|
isActive ? bgColor ?? theme.accentAction : bgColor ? theme.deprecated_bg4 : theme.textTertiary};
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
:hover {
|
:hover {
|
||||||
|
@ -222,7 +222,7 @@ export default function TokenDetailsSkeleton() {
|
|||||||
const { chainName } = useParams<{ chainName?: string }>()
|
const { chainName } = useParams<{ chainName?: string }>()
|
||||||
return (
|
return (
|
||||||
<LeftPanel>
|
<LeftPanel>
|
||||||
<BreadcrumbNavLink to={{ chainName } ? `/tokens/${chainName}` : `/explore`}>
|
<BreadcrumbNavLink to={chainName ? `/tokens/${chainName}` : `/explore`}>
|
||||||
<ArrowLeft size={14} /> Tokens
|
<ArrowLeft size={14} /> Tokens
|
||||||
</BreadcrumbNavLink>
|
</BreadcrumbNavLink>
|
||||||
<TokenInfoContainer>
|
<TokenInfoContainer>
|
||||||
|
@ -51,24 +51,13 @@ export const StatsWrapper = styled.div`
|
|||||||
|
|
||||||
type NumericStat = number | undefined | null
|
type NumericStat = number | undefined | null
|
||||||
|
|
||||||
function Stat({
|
function Stat({ value, title, description }: { value: NumericStat; title: ReactNode; description?: ReactNode }) {
|
||||||
value,
|
|
||||||
title,
|
|
||||||
description,
|
|
||||||
isPrice = false,
|
|
||||||
}: {
|
|
||||||
value: NumericStat
|
|
||||||
title: ReactNode
|
|
||||||
description?: ReactNode
|
|
||||||
isPrice?: boolean
|
|
||||||
}) {
|
|
||||||
return (
|
return (
|
||||||
<StatWrapper>
|
<StatWrapper>
|
||||||
<StatTitle>
|
<StatTitle>
|
||||||
{title}
|
{title}
|
||||||
{description && <InfoTip text={description}></InfoTip>}
|
{description && <InfoTip text={description}></InfoTip>}
|
||||||
</StatTitle>
|
</StatTitle>
|
||||||
|
|
||||||
<StatPrice>{formatNumber(value, NumberType.FiatTokenStats)}</StatPrice>
|
<StatPrice>{formatNumber(value, NumberType.FiatTokenStats)}</StatPrice>
|
||||||
</StatWrapper>
|
</StatWrapper>
|
||||||
)
|
)
|
||||||
@ -106,8 +95,8 @@ export default function StatsSection(props: StatsSectionProps) {
|
|||||||
/>
|
/>
|
||||||
</StatPair>
|
</StatPair>
|
||||||
<StatPair>
|
<StatPair>
|
||||||
<Stat value={priceLow52W} title={<Trans>52W low</Trans>} isPrice={true} />
|
<Stat value={priceLow52W} title={<Trans>52W low</Trans>} />
|
||||||
<Stat value={priceHigh52W} title={<Trans>52W high</Trans>} isPrice={true} />
|
<Stat value={priceHigh52W} title={<Trans>52W high</Trans>} />
|
||||||
</StatPair>
|
</StatPair>
|
||||||
</TokenStatsSection>
|
</TokenStatsSection>
|
||||||
</StatsWrapper>
|
</StatsWrapper>
|
||||||
|
@ -192,7 +192,7 @@ const AuthenticatedHeader = () => {
|
|||||||
explorer,
|
explorer,
|
||||||
} = getChainInfoOrDefault(chainId ? chainId : SupportedChainId.MAINNET)
|
} = getChainInfoOrDefault(chainId ? chainId : SupportedChainId.MAINNET)
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
const closeModal = useCloseModal(ApplicationModal.WALLET_DROPDOWN)
|
const closeModal = useCloseModal()
|
||||||
const setSellPageState = useProfilePageState((state) => state.setProfilePageState)
|
const setSellPageState = useProfilePageState((state) => state.setProfilePageState)
|
||||||
const resetSellAssets = useSellAsset((state) => state.reset)
|
const resetSellAssets = useSellAsset((state) => state.reset)
|
||||||
const clearCollectionFilters = useWalletCollections((state) => state.clearCollectionFilters)
|
const clearCollectionFilters = useWalletCollections((state) => state.clearCollectionFilters)
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import { Currency, CurrencyAmount, Token } from '@uniswap/sdk-core'
|
|
||||||
import * as connectionUtils from 'connection/utils'
|
import * as connectionUtils from 'connection/utils'
|
||||||
import { ApplicationModal } from 'state/application/reducer'
|
|
||||||
|
|
||||||
import { nativeOnChain } from '../../constants/tokens'
|
import { nativeOnChain } from '../../constants/tokens'
|
||||||
import { render, screen } from '../../test-utils'
|
import { render, screen } from '../../test-utils'
|
||||||
@ -20,7 +18,7 @@ jest.mock('utils/userAgent', () => ({
|
|||||||
|
|
||||||
jest.mock('.../../state/application/hooks', () => {
|
jest.mock('.../../state/application/hooks', () => {
|
||||||
return {
|
return {
|
||||||
useModalIsOpen: (_modal: ApplicationModal) => true,
|
useModalIsOpen: () => true,
|
||||||
useToggleWalletModal: () => {
|
useToggleWalletModal: () => {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
@ -29,7 +27,7 @@ jest.mock('.../../state/application/hooks', () => {
|
|||||||
|
|
||||||
jest.mock('hooks/useStablecoinPrice', () => {
|
jest.mock('hooks/useStablecoinPrice', () => {
|
||||||
return {
|
return {
|
||||||
useStablecoinValue: (_currencyAmount: CurrencyAmount<Currency> | undefined | null) => {
|
useStablecoinValue: () => {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -38,10 +36,10 @@ jest.mock('hooks/useStablecoinPrice', () => {
|
|||||||
jest.mock('lib/hooks/useCurrencyBalance', () => {
|
jest.mock('lib/hooks/useCurrencyBalance', () => {
|
||||||
return {
|
return {
|
||||||
__esModule: true,
|
__esModule: true,
|
||||||
default: (account?: string, currency?: Currency) => {
|
default: () => {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
useTokenBalance: (account?: string, token?: Token) => {
|
useTokenBalance: () => {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -300,7 +300,7 @@ export default function Web3Status() {
|
|||||||
const allTransactions = useAllTransactions()
|
const allTransactions = useAllTransactions()
|
||||||
const ref = useRef<HTMLDivElement>(null)
|
const ref = useRef<HTMLDivElement>(null)
|
||||||
const walletRef = useRef<HTMLDivElement>(null)
|
const walletRef = useRef<HTMLDivElement>(null)
|
||||||
const closeModal = useCloseModal(ApplicationModal.WALLET_DROPDOWN)
|
const closeModal = useCloseModal()
|
||||||
const isOpen = useModalIsOpen(ApplicationModal.WALLET_DROPDOWN)
|
const isOpen = useModalIsOpen(ApplicationModal.WALLET_DROPDOWN)
|
||||||
|
|
||||||
useOnClickOutside(ref, isOpen ? closeModal : undefined, [walletRef])
|
useOnClickOutside(ref, isOpen ? closeModal : undefined, [walletRef])
|
||||||
|
@ -3,9 +3,11 @@ import { ALL_SUPPORTED_CHAIN_IDS, SupportedChainId } from './chains'
|
|||||||
describe('chains', () => {
|
describe('chains', () => {
|
||||||
describe('ALL_SUPPORTED_CHAIN_IDS', () => {
|
describe('ALL_SUPPORTED_CHAIN_IDS', () => {
|
||||||
it('contains all the values in the SupportedChainId enum', () => {
|
it('contains all the values in the SupportedChainId enum', () => {
|
||||||
Object.values(SupportedChainId).forEach((chainId) => {
|
Object.values(SupportedChainId)
|
||||||
if (typeof chainId === 'number') expect(ALL_SUPPORTED_CHAIN_IDS.includes(chainId as number)).toBeTruthy()
|
.filter((chainId) => typeof chainId === 'number')
|
||||||
})
|
.forEach((chainId) => {
|
||||||
|
expect(ALL_SUPPORTED_CHAIN_IDS.includes(chainId as number)).toBeTruthy()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('contains no duplicates', () => {
|
it('contains no duplicates', () => {
|
||||||
|
@ -36,7 +36,7 @@ const V2_SWAP_HOP_GAS_ESTIMATE = 50_000
|
|||||||
* https://github.com/Uniswap/smart-order-router/blob/main/src/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.ts
|
* https://github.com/Uniswap/smart-order-router/blob/main/src/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.ts
|
||||||
*/
|
*/
|
||||||
function guesstimateGas(trade: Trade<Currency, Currency, TradeType> | undefined): number | undefined {
|
function guesstimateGas(trade: Trade<Currency, Currency, TradeType> | undefined): number | undefined {
|
||||||
if (!!trade) {
|
if (trade) {
|
||||||
let gas = 0
|
let gas = 0
|
||||||
for (const { route } of trade.swaps) {
|
for (const { route } of trade.swaps) {
|
||||||
if (route.protocol === Protocol.V2) {
|
if (route.protocol === Protocol.V2) {
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import * as Sentry from '@sentry/react'
|
||||||
import { Token } from '@uniswap/sdk-core'
|
import { Token } from '@uniswap/sdk-core'
|
||||||
import { SupportedChainId } from 'constants/chains'
|
import { SupportedChainId } from 'constants/chains'
|
||||||
import uriToHttp from 'lib/utils/uriToHttp'
|
import uriToHttp from 'lib/utils/uriToHttp'
|
||||||
@ -37,7 +38,9 @@ async function getColorFromToken(token: Token): Promise<string | null> {
|
|||||||
try {
|
try {
|
||||||
logoURI = URIForEthToken(address)
|
logoURI = URIForEthToken(address)
|
||||||
return await getColorFromUriPath(logoURI)
|
return await getColorFromUriPath(logoURI)
|
||||||
} catch (e) {}
|
} catch (error) {
|
||||||
|
Sentry.captureMessage(error.toString())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
@ -19,7 +19,7 @@ export default function useIsWindowVisible(): boolean {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isVisibilityStateSupported()) return undefined
|
if (!isVisibilityStateSupported()) return undefined
|
||||||
setFocused((focused) => isWindowVisible())
|
setFocused(() => isWindowVisible())
|
||||||
|
|
||||||
document.addEventListener('visibilitychange', listener)
|
document.addEventListener('visibilitychange', listener)
|
||||||
return () => {
|
return () => {
|
||||||
|
@ -9,7 +9,7 @@ import usePrevious from './usePrevious'
|
|||||||
import useSelectChain from './useSelectChain'
|
import useSelectChain from './useSelectChain'
|
||||||
|
|
||||||
function getChainIdFromName(name: string) {
|
function getChainIdFromName(name: string) {
|
||||||
const entry = Object.entries(CHAIN_IDS_TO_NAMES).find(([_, n]) => n === name)
|
const entry = Object.entries(CHAIN_IDS_TO_NAMES).find(([, n]) => n === name)
|
||||||
const chainId = entry?.[0]
|
const chainId = entry?.[0]
|
||||||
return chainId ? parseInt(chainId) : undefined
|
return chainId ? parseInt(chainId) : undefined
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import UserUpdater from './state/user/updater'
|
|||||||
import ThemeProvider, { ThemedGlobalStyle } from './theme'
|
import ThemeProvider, { ThemedGlobalStyle } from './theme'
|
||||||
import RadialGradientByChainUpdater from './theme/components/RadialGradientByChainUpdater'
|
import RadialGradientByChainUpdater from './theme/components/RadialGradientByChainUpdater'
|
||||||
|
|
||||||
if (!!window.ethereum) {
|
if (window.ethereum) {
|
||||||
window.ethereum.autoRefreshOnNetworkChange = false
|
window.ethereum.autoRefreshOnNetworkChange = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,30 +11,30 @@ describe('useInterval', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('with a synchronous function', () => {
|
describe('with a synchronous function', () => {
|
||||||
it('it runs on an interval', () => {
|
it('runs on an interval', () => {
|
||||||
jest.useFakeTimers()
|
jest.useFakeTimers()
|
||||||
|
|
||||||
renderHook(() => useInterval(spy, 100))
|
renderHook(() => useInterval(spy, 100))
|
||||||
expect(spy).toHaveBeenCalledTimes(1)
|
expect(spy).toHaveBeenCalledTimes(1)
|
||||||
|
|
||||||
jest.runTimersToTime(100)
|
jest.advanceTimersByTime(100)
|
||||||
expect(spy).toHaveBeenCalledTimes(2)
|
expect(spy).toHaveBeenCalledTimes(2)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('with an async funtion', () => {
|
describe('with an async funtion', () => {
|
||||||
it('it runs on an interval exclusive of fn resolving', async () => {
|
it('runs on an interval exclusive of fn resolving', async () => {
|
||||||
jest.useFakeTimers()
|
jest.useFakeTimers()
|
||||||
spy.mockImplementation(() => Promise.resolve(undefined))
|
spy.mockImplementation(() => Promise.resolve(undefined))
|
||||||
|
|
||||||
renderHook(() => useInterval(spy, 100))
|
renderHook(() => useInterval(spy, 100))
|
||||||
expect(spy).toHaveBeenCalledTimes(1)
|
expect(spy).toHaveBeenCalledTimes(1)
|
||||||
|
|
||||||
jest.runTimersToTime(100)
|
jest.advanceTimersByTime(100)
|
||||||
expect(spy).toHaveBeenCalledTimes(1)
|
expect(spy).toHaveBeenCalledTimes(1)
|
||||||
|
|
||||||
await spy.mock.results[0].value
|
await spy.mock.results[0].value
|
||||||
jest.runTimersToTime(100)
|
jest.advanceTimersByTime(100)
|
||||||
expect(spy).toHaveBeenCalledTimes(2)
|
expect(spy).toHaveBeenCalledTimes(2)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -5,7 +5,7 @@ describe.skip('fetchTokenList', () => {
|
|||||||
|
|
||||||
it('throws on an invalid list url', async () => {
|
it('throws on an invalid list url', async () => {
|
||||||
const url = 'https://example.com'
|
const url = 'https://example.com'
|
||||||
await expect(fetchTokenList(url, resolver)).rejects.toThrowError(`failed to fetch list: ${url}`)
|
await expect(fetchTokenList(url, resolver)).rejects.toThrow(`failed to fetch list: ${url}`)
|
||||||
expect(resolver).not.toHaveBeenCalled()
|
expect(resolver).not.toHaveBeenCalled()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { i18n } from '@lingui/core'
|
import { i18n } from '@lingui/core'
|
||||||
import { I18nProvider } from '@lingui/react'
|
import { I18nProvider } from '@lingui/react'
|
||||||
|
import * as Sentry from '@sentry/react'
|
||||||
import { DEFAULT_LOCALE, SupportedLocale } from 'constants/locales'
|
import { DEFAULT_LOCALE, SupportedLocale } from 'constants/locales'
|
||||||
import {
|
import {
|
||||||
af,
|
af,
|
||||||
@ -82,7 +83,9 @@ export async function dynamicActivate(locale: SupportedLocale) {
|
|||||||
const catalog = await import(`locales/${locale}.js`)
|
const catalog = await import(`locales/${locale}.js`)
|
||||||
// Bundlers will either export it as default or as a named export named default.
|
// Bundlers will either export it as default or as a named export named default.
|
||||||
i18n.load(locale, catalog.messages || catalog.default.messages)
|
i18n.load(locale, catalog.messages || catalog.default.messages)
|
||||||
} catch {}
|
} catch (error) {
|
||||||
|
Sentry.captureMessage(error.toString())
|
||||||
|
}
|
||||||
i18n.activate(locale)
|
i18n.activate(locale)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ function expectedOutput(l: SupportedLocale): string {
|
|||||||
case 'zh-TW':
|
case 'zh-TW':
|
||||||
return `4,000,000.123`
|
return `4,000,000.123`
|
||||||
case 'fr-FR':
|
case 'fr-FR':
|
||||||
|
// eslint-disable-next-line no-irregular-whitespace
|
||||||
return `4 000 000,123`
|
return `4 000 000,123`
|
||||||
case 'ar-SA':
|
case 'ar-SA':
|
||||||
return `٤٬٠٠٠٬٠٠٠٫١٢٣`
|
return `٤٬٠٠٠٬٠٠٠٫١٢٣`
|
||||||
@ -28,6 +29,7 @@ function expectedOutput(l: SupportedLocale): string {
|
|||||||
case 'ru-RU':
|
case 'ru-RU':
|
||||||
case 'sv-SE':
|
case 'sv-SE':
|
||||||
case 'uk-UA':
|
case 'uk-UA':
|
||||||
|
// eslint-disable-next-line no-irregular-whitespace
|
||||||
return `4 000 000,123`
|
return `4 000 000,123`
|
||||||
case 'ca-ES':
|
case 'ca-ES':
|
||||||
case 'da-DK':
|
case 'da-DK':
|
||||||
|
@ -11,15 +11,18 @@ export default function uriToHttp(uri: string): string[] {
|
|||||||
return [uri]
|
return [uri]
|
||||||
case 'http':
|
case 'http':
|
||||||
return ['https' + uri.substr(4), uri]
|
return ['https' + uri.substr(4), uri]
|
||||||
case 'ipfs':
|
case 'ipfs': {
|
||||||
const hash = uri.match(/^ipfs:(\/\/)?(.*)$/i)?.[2]
|
const hash = uri.match(/^ipfs:(\/\/)?(.*)$/i)?.[2]
|
||||||
return [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]
|
return [`https://cloudflare-ipfs.com/ipfs/${hash}/`, `https://ipfs.io/ipfs/${hash}/`]
|
||||||
case 'ipns':
|
}
|
||||||
|
case 'ipns': {
|
||||||
const name = uri.match(/^ipns:(\/\/)?(.*)$/i)?.[2]
|
const name = uri.match(/^ipns:(\/\/)?(.*)$/i)?.[2]
|
||||||
return [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]
|
return [`https://cloudflare-ipfs.com/ipns/${name}/`, `https://ipfs.io/ipns/${name}/`]
|
||||||
case 'ar':
|
}
|
||||||
|
case 'ar': {
|
||||||
const tx = uri.match(/^ar:(\/\/)?(.*)$/i)?.[2]
|
const tx = uri.match(/^ar:(\/\/)?(.*)$/i)?.[2]
|
||||||
return [`https://arweave.net/${tx}`]
|
return [`https://arweave.net/${tx}`]
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ export const ListingButton = ({ onClick, buttonText, showWarningOverride = false
|
|||||||
<Box marginLeft="4" marginRight="8">
|
<Box marginLeft="4" marginRight="8">
|
||||||
{warningMessage}
|
{warningMessage}
|
||||||
</Box>
|
</Box>
|
||||||
{!!disableListButton ? (
|
{disableListButton ? (
|
||||||
<Box paddingTop="6">
|
<Box paddingTop="6">
|
||||||
<XMarkIcon fill={themeVars.colors.textSecondary} height="20" width="20" />
|
<XMarkIcon fill={themeVars.colors.textSecondary} height="20" width="20" />
|
||||||
</Box>
|
</Box>
|
||||||
|
@ -316,7 +316,7 @@ interface RankingProps {
|
|||||||
details?: boolean
|
details?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const Ranking = ({ details, rarity, collectionName, rarityVerified }: RankingProps) => {
|
const Ranking = ({ rarity, collectionName, rarityVerified }: RankingProps) => {
|
||||||
const rarityProviderLogo = getRarityProviderLogo(rarity.source)
|
const rarityProviderLogo = getRarityProviderLogo(rarity.source)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -577,7 +577,7 @@ interface ProfileNftDetailsProps {
|
|||||||
const ProfileNftDetails = ({ asset, hideDetails }: ProfileNftDetailsProps) => {
|
const ProfileNftDetails = ({ asset, hideDetails }: ProfileNftDetailsProps) => {
|
||||||
const assetName = () => {
|
const assetName = () => {
|
||||||
if (!asset.name && !asset.tokenId) return
|
if (!asset.name && !asset.tokenId) return
|
||||||
return !!asset.name ? asset.name : `#${asset.tokenId}`
|
return asset.name ? asset.name : `#${asset.tokenId}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const shouldShowUserListedPrice = !asset.notForSale && asset.asset_contract.tokenType !== NftStandard.Erc1155
|
const shouldShowUserListedPrice = !asset.notForSale && asset.asset_contract.tokenType !== NftStandard.Erc1155
|
||||||
|
@ -387,12 +387,11 @@ const StatsRow = ({ stats, isMobile, ...props }: { stats: GenieCollection; isMob
|
|||||||
{totalSupplyStr}
|
{totalSupplyStr}
|
||||||
</StatsItem>
|
</StatsItem>
|
||||||
) : null}
|
) : null}
|
||||||
{Boolean(uniqueOwnersPercentage && stats.standard !== TokenType.ERC1155) ? (
|
{uniqueOwnersPercentage && stats.standard !== TokenType.ERC1155 ? (
|
||||||
<StatsItem label="Unique owners" shouldHide={isSmallContainer ?? false}>
|
<StatsItem label="Unique owners" shouldHide={isSmallContainer ?? false}>
|
||||||
{uniqueOwnersPercentage}%
|
{uniqueOwnersPercentage}%
|
||||||
</StatsItem>
|
</StatsItem>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{stats.stats?.total_listings && stats.standard !== TokenType.ERC1155 ? (
|
{stats.stats?.total_listings && stats.standard !== TokenType.ERC1155 ? (
|
||||||
<StatsItem label="Listed" shouldHide={isSmallContainer ?? false}>
|
<StatsItem label="Listed" shouldHide={isSmallContainer ?? false}>
|
||||||
{listedPercentageStr}%
|
{listedPercentageStr}%
|
||||||
|
@ -263,7 +263,7 @@ export const AssetDetails = ({ asset, collection }: AssetDetailsProps) => {
|
|||||||
return MediaType.Audio
|
return MediaType.Audio
|
||||||
} else if (isVideo(asset.animationUrl ?? '')) {
|
} else if (isVideo(asset.animationUrl ?? '')) {
|
||||||
return MediaType.Video
|
return MediaType.Video
|
||||||
} else if (!!asset.animationUrl) {
|
} else if (asset.animationUrl) {
|
||||||
return MediaType.Embed
|
return MediaType.Embed
|
||||||
}
|
}
|
||||||
return MediaType.Image
|
return MediaType.Image
|
||||||
|
@ -3,7 +3,8 @@ import styled, { useTheme } from 'styled-components/macro'
|
|||||||
|
|
||||||
import { themeVars, vars } from '../css/sprinkles.css'
|
import { themeVars, vars } from '../css/sprinkles.css'
|
||||||
|
|
||||||
type SVGProps = React.SVGProps<SVGSVGElement>
|
// ESLint reports `fill` is missing, whereas it exists on an SVGProps type
|
||||||
|
type SVGProps = React.SVGProps<SVGSVGElement> & { fill?: string }
|
||||||
|
|
||||||
export const UniIcon = (props: SVGProps) => (
|
export const UniIcon = (props: SVGProps) => (
|
||||||
<svg {...props} fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg {...props} fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
@ -599,7 +600,7 @@ export const ActivityTransferIcon = (props: SVGProps) => (
|
|||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
|
|
||||||
export const ActivityExternalLinkIcon = (_props: SVGProps) => (
|
export const ActivityExternalLinkIcon = () => (
|
||||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<mask id="path-1-outside-1_3799_46574" maskUnits="userSpaceOnUse" x="2" y="2" width="15" height="15" fill="black">
|
<mask id="path-1-outside-1_3799_46574" maskUnits="userSpaceOnUse" x="2" y="2" width="15" height="15" fill="black">
|
||||||
<rect fill="white" x="2" y="2" width="15" height="15" />
|
<rect fill="white" x="2" y="2" width="15" height="15" />
|
||||||
|
@ -70,7 +70,7 @@ export const SetDurationModal = () => {
|
|||||||
const [errorState, setErrorState] = useState(ErrorState.valid)
|
const [errorState, setErrorState] = useState(ErrorState.valid)
|
||||||
const setGlobalExpiration = useSellAsset((state) => state.setGlobalExpiration)
|
const setGlobalExpiration = useSellAsset((state) => state.setGlobalExpiration)
|
||||||
const setCustomExpiration = (event: React.ChangeEvent<HTMLInputElement>) => {
|
const setCustomExpiration = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
setAmount(!!event.target.value.length ? event.target.value : '')
|
setAmount(event.target.value.length ? event.target.value : '')
|
||||||
setDuration(displayDuration)
|
setDuration(displayDuration)
|
||||||
}
|
}
|
||||||
const selectDuration = (duration: Duration) => {
|
const selectDuration = (duration: Duration) => {
|
||||||
|
@ -90,7 +90,7 @@ export const ProfilePage = () => {
|
|||||||
isFetchingNextPage,
|
isFetchingNextPage,
|
||||||
isSuccess,
|
isSuccess,
|
||||||
} = useInfiniteQuery(['ownerCollections', { address }], getOwnerCollections, {
|
} = useInfiniteQuery(['ownerCollections', { address }], getOwnerCollections, {
|
||||||
getNextPageParam: (lastGroup, _allGroups) => (lastGroup.data.length === 0 ? undefined : lastGroup.nextPage),
|
getNextPageParam: (lastGroup) => (lastGroup.data.length === 0 ? undefined : lastGroup.nextPage),
|
||||||
refetchInterval: 15000,
|
refetchInterval: 15000,
|
||||||
refetchIntervalInBackground: false,
|
refetchIntervalInBackground: false,
|
||||||
refetchOnWindowFocus: false,
|
refetchOnWindowFocus: false,
|
||||||
|
@ -25,7 +25,7 @@ export const useNFTSelect = create<SelectNFTState>()(
|
|||||||
selectNFT: (nft) =>
|
selectNFT: (nft) =>
|
||||||
set(({ selectedNFTs }) => {
|
set(({ selectedNFTs }) => {
|
||||||
if (selectedNFTs.length === 0) return { selectedNFTs: [nft] }
|
if (selectedNFTs.length === 0) return { selectedNFTs: [nft] }
|
||||||
else if (!!selectedNFTs.find((x) => x.id === nft.id))
|
else if (selectedNFTs.some((x) => x.id === nft.id))
|
||||||
return { selectedNFTs: selectedNFTs.filter((n) => n.id !== nft.id) }
|
return { selectedNFTs: selectedNFTs.filter((n) => n.id !== nft.id) }
|
||||||
else return { selectedNFTs: [...selectedNFTs, nft] }
|
else return { selectedNFTs: [...selectedNFTs, nft] }
|
||||||
}),
|
}),
|
||||||
|
@ -39,7 +39,7 @@ export const useWalletCollections = create<WalletCollectionState>()(
|
|||||||
setCollectionFilters: (address) =>
|
setCollectionFilters: (address) =>
|
||||||
set(({ collectionFilters }) => {
|
set(({ collectionFilters }) => {
|
||||||
if (collectionFilters.length === 0) return { collectionFilters: [address] }
|
if (collectionFilters.length === 0) return { collectionFilters: [address] }
|
||||||
else if (!!collectionFilters.find((x) => x === address))
|
else if (collectionFilters.some((x) => x === address))
|
||||||
return { collectionFilters: collectionFilters.filter((n) => n !== address) }
|
return { collectionFilters: collectionFilters.filter((n) => n !== address) }
|
||||||
else return { collectionFilters: [...collectionFilters, address] }
|
else return { collectionFilters: [...collectionFilters, address] }
|
||||||
}),
|
}),
|
||||||
|
@ -49,7 +49,7 @@ const ProfileContent = () => {
|
|||||||
{/* <Head> TODO: figure out metadata tagging
|
{/* <Head> TODO: figure out metadata tagging
|
||||||
<title>Genie | Sell</title>
|
<title>Genie | Sell</title>
|
||||||
</Head> */}
|
</Head> */}
|
||||||
{!!account ? (
|
{account ? (
|
||||||
<Box style={{ width: `calc(100% - ${cartExpanded ? SHOPPING_BAG_WIDTH : 0}px)` }}>
|
<Box style={{ width: `calc(100% - ${cartExpanded ? SHOPPING_BAG_WIDTH : 0}px)` }}>
|
||||||
{sellPageState === ProfilePageStateType.VIEWING ? <ProfilePage /> : <ListPage />}
|
{sellPageState === ProfilePageStateType.VIEWING ? <ProfilePage /> : <ListPage />}
|
||||||
</Box>
|
</Box>
|
||||||
|
@ -168,7 +168,7 @@ export async function signListing(
|
|||||||
else setStatus(ListingStatus.FAILED)
|
else setStatus(ListingStatus.FAILED)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case 'LooksRare':
|
case 'LooksRare': {
|
||||||
const addresses = addressesByNetwork[SupportedChainId.MAINNET]
|
const addresses = addressesByNetwork[SupportedChainId.MAINNET]
|
||||||
const currentTime = Math.round(Date.now() / 1000)
|
const currentTime = Math.round(Date.now() / 1000)
|
||||||
const makerOrder: MakerOrder = {
|
const makerOrder: MakerOrder = {
|
||||||
@ -235,8 +235,8 @@ export async function signListing(
|
|||||||
else setStatus(ListingStatus.FAILED)
|
else setStatus(ListingStatus.FAILED)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case 'X2Y2':
|
case 'X2Y2': {
|
||||||
const orderItem: OfferItem = {
|
const orderItem: OfferItem = {
|
||||||
price: parseEther(listingPrice.toString()),
|
price: parseEther(listingPrice.toString()),
|
||||||
tokens: [
|
tokens: [
|
||||||
@ -269,7 +269,7 @@ export async function signListing(
|
|||||||
else setStatus(ListingStatus.FAILED)
|
else setStatus(ListingStatus.FAILED)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -137,12 +137,11 @@ export const syncLocalFiltersWithURL = (state: CollectionFilters) => {
|
|||||||
const query: Record<string, any> = {}
|
const query: Record<string, any> = {}
|
||||||
urlFilterItems.forEach((key) => {
|
urlFilterItems.forEach((key) => {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'traits':
|
case 'traits': {
|
||||||
const traits = state.traits.map(({ trait_type, trait_value }) => `("${trait_type}","${trait_value}")`)
|
const traits = state.traits.map(({ trait_type, trait_value }) => `("${trait_type}","${trait_value}")`)
|
||||||
|
|
||||||
query['traits'] = traits
|
query['traits'] = traits
|
||||||
break
|
break
|
||||||
|
}
|
||||||
case 'all':
|
case 'all':
|
||||||
query['all'] = !state.buyNow
|
query['all'] = !state.buyNow
|
||||||
break
|
break
|
||||||
|
@ -511,7 +511,7 @@ export function PositionPage() {
|
|||||||
provider,
|
provider,
|
||||||
])
|
])
|
||||||
|
|
||||||
const owner = useSingleCallResult(!!tokenId ? positionManager : null, 'ownerOf', [tokenId]).result?.[0]
|
const owner = useSingleCallResult(tokenId ? positionManager : null, 'ownerOf', [tokenId]).result?.[0]
|
||||||
const ownsNFT = owner === account || positionDetails?.operator === account
|
const ownsNFT = owner === account || positionDetails?.operator === account
|
||||||
|
|
||||||
const feeValueUpper = inverted ? feeValue0 : feeValue1
|
const feeValueUpper = inverted ? feeValue0 : feeValue1
|
||||||
|
@ -172,7 +172,7 @@ export default function Swap({ className }: { className?: string }) {
|
|||||||
urlLoadedTokens &&
|
urlLoadedTokens &&
|
||||||
urlLoadedTokens
|
urlLoadedTokens
|
||||||
.filter((token: Token) => {
|
.filter((token: Token) => {
|
||||||
return !Boolean(token.address in defaultTokens)
|
return !(token.address in defaultTokens)
|
||||||
})
|
})
|
||||||
.filter((token: Token) => {
|
.filter((token: Token) => {
|
||||||
// Any token addresses that are loaded from the shorthands map do not need to show the import URL
|
// Any token addresses that are loaded from the shorthands map do not need to show the import URL
|
||||||
|
@ -106,15 +106,15 @@ describe('document', () => {
|
|||||||
let fetched: Response
|
let fetched: Response
|
||||||
const FETCHED_ETAGS = 'fetched'
|
const FETCHED_ETAGS = 'fetched'
|
||||||
|
|
||||||
|
const expectFetchToHaveBeenCalledWithRequestUrl = () => {
|
||||||
|
expect(fetch).toHaveBeenCalledWith(requestUrl, expect.anything())
|
||||||
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fetched = new Response('test_body', { headers: { etag: FETCHED_ETAGS } })
|
fetched = new Response('test_body', { headers: { etag: FETCHED_ETAGS } })
|
||||||
fetch.mockReturnValueOnce(fetched)
|
fetch.mockReturnValueOnce(fetched)
|
||||||
})
|
})
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
expect(fetch).toHaveBeenCalledWith(requestUrl, expect.anything())
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('with a cached response', () => {
|
describe('with a cached response', () => {
|
||||||
let cached: Response
|
let cached: Response
|
||||||
|
|
||||||
@ -132,6 +132,7 @@ describe('document', () => {
|
|||||||
await handleDocument(options)
|
await handleDocument(options)
|
||||||
const abortSignal = fetch.mock.calls[0][1].signal
|
const abortSignal = fetch.mock.calls[0][1].signal
|
||||||
expect(abortSignal.aborted).toBeTruthy()
|
expect(abortSignal.aborted).toBeTruthy()
|
||||||
|
expectFetchToHaveBeenCalledWithRequestUrl()
|
||||||
})
|
})
|
||||||
|
|
||||||
it('returns the cached response', async () => {
|
it('returns the cached response', async () => {
|
||||||
@ -141,18 +142,21 @@ describe('document', () => {
|
|||||||
expect(await response.text()).toBe(
|
expect(await response.text()).toBe(
|
||||||
'<html><head></head><body><script>window.__isDocumentCached=true</script>mock</body></html>'
|
'<html><head></head><body><script>window.__isDocumentCached=true</script>mock</body></html>'
|
||||||
)
|
)
|
||||||
|
expectFetchToHaveBeenCalledWithRequestUrl()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`returns the fetched response with mismatched etags`, async () => {
|
it(`returns the fetched response with mismatched etags`, async () => {
|
||||||
const response = await handleDocument(options)
|
const response = await handleDocument(options)
|
||||||
expect(response.body).toBe(fetched.body)
|
expect(response.body).toBe(fetched.body)
|
||||||
|
expectFetchToHaveBeenCalledWithRequestUrl()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`returns the fetched response with no cached response`, async () => {
|
it(`returns the fetched response with no cached response`, async () => {
|
||||||
const response = await handleDocument(options)
|
const response = await handleDocument(options)
|
||||||
expect(response.body).toBe(fetched.body)
|
expect(response.body).toBe(fetched.body)
|
||||||
|
expectFetchToHaveBeenCalledWithRequestUrl()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -49,7 +49,7 @@ type HandlerContext = {
|
|||||||
*
|
*
|
||||||
* In addition, this handler may serve an offline document if there is no internet connection.
|
* In addition, this handler may serve an offline document if there is no internet connection.
|
||||||
*/
|
*/
|
||||||
export async function handleDocument(this: HandlerContext, { event, request }: RouteHandlerCallbackOptions) {
|
export async function handleDocument(this: HandlerContext, { request }: RouteHandlerCallbackOptions) {
|
||||||
// If we are offline, serve the offline document.
|
// If we are offline, serve the offline document.
|
||||||
if ('onLine' in navigator && !navigator.onLine) return this?.offlineDocument?.clone() || fetch(request)
|
if ('onLine' in navigator && !navigator.onLine) return this?.offlineDocument?.clone() || fetch(request)
|
||||||
|
|
||||||
|
@ -64,8 +64,7 @@ export function useFiatOnrampAvailability(shouldCheck: boolean, callback?: () =>
|
|||||||
setError('Error, try again later.')
|
setError('Error, try again later.')
|
||||||
dispatch(setFiatOnrampAvailability(false))
|
dispatch(setFiatOnrampAvailability(false))
|
||||||
} finally {
|
} finally {
|
||||||
if (stale) return
|
if (!stale) setLoading(false)
|
||||||
setLoading(false)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +87,7 @@ export function useToggleModal(modal: ApplicationModal): () => void {
|
|||||||
return useCallback(() => dispatch(setOpenModal(isOpen ? null : modal)), [dispatch, modal, isOpen])
|
return useCallback(() => dispatch(setOpenModal(isOpen ? null : modal)), [dispatch, modal, isOpen])
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useCloseModal(_modal: ApplicationModal): () => void {
|
export function useCloseModal(): () => void {
|
||||||
const dispatch = useAppDispatch()
|
const dispatch = useAppDispatch()
|
||||||
return useCallback(() => dispatch(setOpenModal(null)), [dispatch])
|
return useCallback(() => dispatch(setOpenModal(null)), [dispatch])
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import { useAppDispatch } from 'state/hooks'
|
|||||||
import { supportedChainId } from 'utils/supportedChainId'
|
import { supportedChainId } from 'utils/supportedChainId'
|
||||||
|
|
||||||
import { useCloseModal } from './hooks'
|
import { useCloseModal } from './hooks'
|
||||||
import { ApplicationModal, updateChainId } from './reducer'
|
import { updateChainId } from './reducer'
|
||||||
|
|
||||||
export default function Updater(): null {
|
export default function Updater(): null {
|
||||||
const { account, chainId, provider } = useWeb3React()
|
const { account, chainId, provider } = useWeb3React()
|
||||||
@ -15,7 +15,7 @@ export default function Updater(): null {
|
|||||||
|
|
||||||
const [activeChainId, setActiveChainId] = useState(chainId)
|
const [activeChainId, setActiveChainId] = useState(chainId)
|
||||||
|
|
||||||
const closeModal = useCloseModal(ApplicationModal.WALLET_DROPDOWN)
|
const closeModal = useCloseModal()
|
||||||
const previousAccountValue = useRef(account)
|
const previousAccountValue = useRef(account)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (account && account !== previousAccountValue.current) {
|
if (account && account !== previousAccountValue.current) {
|
||||||
|
@ -386,18 +386,19 @@ describe('list reducer', () => {
|
|||||||
|
|
||||||
it('each of those initialized lists is empty', () => {
|
it('each of those initialized lists is empty', () => {
|
||||||
const byUrl = store.getState().byUrl
|
const byUrl = store.getState().byUrl
|
||||||
// note we don't expect the uniswap default list to be prepopulated
|
Object.entries(byUrl)
|
||||||
// this is ok.
|
// We don't expect the Uniswap default list to be prepopulated
|
||||||
Object.keys(byUrl).forEach((url) => {
|
.filter(
|
||||||
if (url !== 'https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json') {
|
([url]) => url !== 'https://unpkg.com/@uniswap/default-token-list@latest/uniswap-default.tokenlist.json'
|
||||||
expect(byUrl[url]).toEqual({
|
)
|
||||||
|
.forEach(([, state]) => {
|
||||||
|
expect(state).toEqual({
|
||||||
error: null,
|
error: null,
|
||||||
current: null,
|
current: null,
|
||||||
loadingRequestId: null,
|
loadingRequestId: null,
|
||||||
pendingUpdate: null,
|
pendingUpdate: null,
|
||||||
})
|
})
|
||||||
}
|
})
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('sets initialized lists', () => {
|
it('sets initialized lists', () => {
|
||||||
|
@ -60,7 +60,7 @@ export default function Updater(): null {
|
|||||||
case VersionUpgrade.NONE:
|
case VersionUpgrade.NONE:
|
||||||
throw new Error('unexpected no version bump')
|
throw new Error('unexpected no version bump')
|
||||||
case VersionUpgrade.PATCH:
|
case VersionUpgrade.PATCH:
|
||||||
case VersionUpgrade.MINOR:
|
case VersionUpgrade.MINOR: {
|
||||||
const min = minVersionBump(list.current.tokens, list.pendingUpdate.tokens)
|
const min = minVersionBump(list.current.tokens, list.pendingUpdate.tokens)
|
||||||
// automatically update minor/patch as long as bump matches the min update
|
// automatically update minor/patch as long as bump matches the min update
|
||||||
if (bump >= min) {
|
if (bump >= min) {
|
||||||
@ -71,7 +71,7 @@ export default function Updater(): null {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
}
|
||||||
// update any active or inactive lists
|
// update any active or inactive lists
|
||||||
case VersionUpgrade.MAJOR:
|
case VersionUpgrade.MAJOR:
|
||||||
dispatch(acceptListUpdate(listUrl))
|
dispatch(acceptListUpdate(listUrl))
|
||||||
|
@ -11,8 +11,8 @@ interface TagInfo extends TagDetails {
|
|||||||
* Token instances created from token info on a token list.
|
* Token instances created from token info on a token list.
|
||||||
*/
|
*/
|
||||||
export class WrappedTokenInfo implements Token {
|
export class WrappedTokenInfo implements Token {
|
||||||
public readonly isNative: false = false
|
public readonly isNative = false as const
|
||||||
public readonly isToken: true = true
|
public readonly isToken = true as const
|
||||||
public readonly list?: TokenList
|
public readonly list?: TokenList
|
||||||
public readonly tokenInfo: TokenInfo
|
public readonly tokenInfo: TokenInfo
|
||||||
|
|
||||||
|
@ -92,13 +92,13 @@ export interface ExactOutputSwapTransactionInfo extends BaseSwapTransactionInfo
|
|||||||
maximumInputCurrencyAmountRaw: string
|
maximumInputCurrencyAmountRaw: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DepositLiquidityStakingTransactionInfo {
|
interface DepositLiquidityStakingTransactionInfo {
|
||||||
type: TransactionType.DEPOSIT_LIQUIDITY_STAKING
|
type: TransactionType.DEPOSIT_LIQUIDITY_STAKING
|
||||||
token0Address: string
|
token0Address: string
|
||||||
token1Address: string
|
token1Address: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WithdrawLiquidityStakingTransactionInfo {
|
interface WithdrawLiquidityStakingTransactionInfo {
|
||||||
type: TransactionType.WITHDRAW_LIQUIDITY_STAKING
|
type: TransactionType.WITHDRAW_LIQUIDITY_STAKING
|
||||||
token0Address: string
|
token0Address: string
|
||||||
token1Address: string
|
token1Address: string
|
||||||
@ -164,7 +164,7 @@ export interface RemoveLiquidityV3TransactionInfo {
|
|||||||
expectedAmountQuoteRaw: string
|
expectedAmountQuoteRaw: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SubmitProposalTransactionInfo {
|
interface SubmitProposalTransactionInfo {
|
||||||
type: TransactionType.SUBMIT_PROPOSAL
|
type: TransactionType.SUBMIT_PROPOSAL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ export default function RadialGradientByChainUpdater(): null {
|
|||||||
|
|
||||||
switch (chainId) {
|
switch (chainId) {
|
||||||
case SupportedChainId.ARBITRUM_ONE:
|
case SupportedChainId.ARBITRUM_ONE:
|
||||||
case SupportedChainId.ARBITRUM_RINKEBY:
|
case SupportedChainId.ARBITRUM_RINKEBY: {
|
||||||
setBackground(backgroundResetStyles)
|
setBackground(backgroundResetStyles)
|
||||||
const arbitrumLightGradient =
|
const arbitrumLightGradient =
|
||||||
'radial-gradient(100% 100% at 50% 0%, rgba(205, 232, 251, 0.7) 0%, rgba(252, 243, 249, 0.6536) 49.48%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
'radial-gradient(100% 100% at 50% 0%, rgba(205, 232, 251, 0.7) 0%, rgba(252, 243, 249, 0.6536) 49.48%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
||||||
@ -56,8 +56,9 @@ export default function RadialGradientByChainUpdater(): null {
|
|||||||
'radial-gradient(100% 100% at 50% 0%, rgba(10, 41, 75, 0.7) 0%, rgba(34, 30, 48, 0.6536) 49.48%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
'radial-gradient(100% 100% at 50% 0%, rgba(10, 41, 75, 0.7) 0%, rgba(34, 30, 48, 0.6536) 49.48%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
||||||
backgroundRadialGradientElement.style.background = darkMode ? arbitrumDarkGradient : arbitrumLightGradient
|
backgroundRadialGradientElement.style.background = darkMode ? arbitrumDarkGradient : arbitrumLightGradient
|
||||||
break
|
break
|
||||||
|
}
|
||||||
case SupportedChainId.OPTIMISM:
|
case SupportedChainId.OPTIMISM:
|
||||||
case SupportedChainId.OPTIMISM_GOERLI:
|
case SupportedChainId.OPTIMISM_GOERLI: {
|
||||||
setBackground(backgroundResetStyles)
|
setBackground(backgroundResetStyles)
|
||||||
const optimismLightGradient =
|
const optimismLightGradient =
|
||||||
'radial-gradient(100% 100% at 50% 0%, rgba(255, 251, 242, 0.8) 0%, rgba(255, 244, 249, 0.6958) 50.52%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
'radial-gradient(100% 100% at 50% 0%, rgba(255, 251, 242, 0.8) 0%, rgba(255, 244, 249, 0.6958) 50.52%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
||||||
@ -65,8 +66,9 @@ export default function RadialGradientByChainUpdater(): null {
|
|||||||
'radial-gradient(100% 100% at 50% 0%, rgba(62, 46, 56, 0.8) 0%, rgba(44, 31, 45, 0.6958) 50.52%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
'radial-gradient(100% 100% at 50% 0%, rgba(62, 46, 56, 0.8) 0%, rgba(44, 31, 45, 0.6958) 50.52%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
||||||
backgroundRadialGradientElement.style.background = darkMode ? optimismDarkGradient : optimismLightGradient
|
backgroundRadialGradientElement.style.background = darkMode ? optimismDarkGradient : optimismLightGradient
|
||||||
break
|
break
|
||||||
|
}
|
||||||
case SupportedChainId.POLYGON:
|
case SupportedChainId.POLYGON:
|
||||||
case SupportedChainId.POLYGON_MUMBAI:
|
case SupportedChainId.POLYGON_MUMBAI: {
|
||||||
setBackground(backgroundResetStyles)
|
setBackground(backgroundResetStyles)
|
||||||
const polygonLightGradient =
|
const polygonLightGradient =
|
||||||
'radial-gradient(100% 100% at 50% 0%, rgba(130, 71, 229, 0.2) 0%, rgba(200, 168, 255, 0.05) 52.6%, rgba(0, 0, 0, 0) 100%), #FFFFFF'
|
'radial-gradient(100% 100% at 50% 0%, rgba(130, 71, 229, 0.2) 0%, rgba(200, 168, 255, 0.05) 52.6%, rgba(0, 0, 0, 0) 100%), #FFFFFF'
|
||||||
@ -74,8 +76,9 @@ export default function RadialGradientByChainUpdater(): null {
|
|||||||
'radial-gradient(100% 100% at 50% 0%, rgba(130, 71, 229, 0.2) 0%, rgba(200, 168, 255, 0.05) 52.6%, rgba(0, 0, 0, 0) 100%), #0D0E0E'
|
'radial-gradient(100% 100% at 50% 0%, rgba(130, 71, 229, 0.2) 0%, rgba(200, 168, 255, 0.05) 52.6%, rgba(0, 0, 0, 0) 100%), #0D0E0E'
|
||||||
backgroundRadialGradientElement.style.background = darkMode ? polygonDarkGradient : polygonLightGradient
|
backgroundRadialGradientElement.style.background = darkMode ? polygonDarkGradient : polygonLightGradient
|
||||||
break
|
break
|
||||||
|
}
|
||||||
case SupportedChainId.CELO:
|
case SupportedChainId.CELO:
|
||||||
case SupportedChainId.CELO_ALFAJORES:
|
case SupportedChainId.CELO_ALFAJORES: {
|
||||||
setBackground(backgroundResetStyles)
|
setBackground(backgroundResetStyles)
|
||||||
const celoLightGradient =
|
const celoLightGradient =
|
||||||
'radial-gradient(100% 100% at 50% 0%, rgba(186, 228, 210, 0.7) 0%, rgba(252, 243, 249, 0.6536) 49.48%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
'radial-gradient(100% 100% at 50% 0%, rgba(186, 228, 210, 0.7) 0%, rgba(252, 243, 249, 0.6536) 49.48%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
||||||
@ -83,12 +86,14 @@ export default function RadialGradientByChainUpdater(): null {
|
|||||||
'radial-gradient(100% 100% at 50% 0%, rgba(20, 49, 37, 0.29) 0%, rgba(12, 31, 23, 0.6536) 49.48%, rgba(31, 33, 40, 0) 100%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
'radial-gradient(100% 100% at 50% 0%, rgba(20, 49, 37, 0.29) 0%, rgba(12, 31, 23, 0.6536) 49.48%, rgba(31, 33, 40, 0) 100%, rgba(31, 33, 40, 0) 100%), #0D0E0E'
|
||||||
backgroundRadialGradientElement.style.background = darkMode ? celoDarkGradient : celoLightGradient
|
backgroundRadialGradientElement.style.background = darkMode ? celoDarkGradient : celoLightGradient
|
||||||
break
|
break
|
||||||
default:
|
}
|
||||||
|
default: {
|
||||||
setBackground(initialStyles)
|
setBackground(initialStyles)
|
||||||
const defaultLightGradient =
|
const defaultLightGradient =
|
||||||
'radial-gradient(100% 100% at 50% 0%, rgba(255, 184, 226, 0.51) 0%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
'radial-gradient(100% 100% at 50% 0%, rgba(255, 184, 226, 0.51) 0%, rgba(255, 255, 255, 0) 100%), #FFFFFF'
|
||||||
const defaultDarkGradient = 'linear-gradient(180deg, #202738 0%, #070816 100%)'
|
const defaultDarkGradient = 'linear-gradient(180deg, #202738 0%, #070816 100%)'
|
||||||
backgroundRadialGradientElement.style.background = darkMode ? defaultDarkGradient : defaultLightGradient
|
backgroundRadialGradientElement.style.background = darkMode ? defaultDarkGradient : defaultLightGradient
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, [darkMode, chainId, isNftPage])
|
}, [darkMode, chainId, isNftPage])
|
||||||
return null
|
return null
|
||||||
|
@ -17,6 +17,17 @@ export const MEDIA_WIDTHS = {
|
|||||||
deprecated_upToLarge: 1280,
|
deprecated_upToLarge: 1280,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const deprecated_mediaWidthTemplates: { [width in keyof typeof MEDIA_WIDTHS]: typeof css } = Object.keys(
|
||||||
|
MEDIA_WIDTHS
|
||||||
|
).reduce((acc, size) => {
|
||||||
|
acc[size] = (a: any, b: any, c: any) => css`
|
||||||
|
@media (max-width: ${(MEDIA_WIDTHS as any)[size]}px) {
|
||||||
|
${css(a, b, c)}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
return acc
|
||||||
|
}, {} as any)
|
||||||
|
|
||||||
export const BREAKPOINTS = {
|
export const BREAKPOINTS = {
|
||||||
xs: 396,
|
xs: 396,
|
||||||
sm: 640,
|
sm: 640,
|
||||||
@ -53,17 +64,6 @@ const fonts = {
|
|||||||
code: 'courier, courier new, serif',
|
code: 'courier, courier new, serif',
|
||||||
}
|
}
|
||||||
|
|
||||||
const deprecated_mediaWidthTemplates: { [width in keyof typeof MEDIA_WIDTHS]: typeof css } = Object.keys(
|
|
||||||
MEDIA_WIDTHS
|
|
||||||
).reduce((accumulator, size) => {
|
|
||||||
;(accumulator as any)[size] = (a: any, b: any, c: any) => css`
|
|
||||||
@media (max-width: ${(MEDIA_WIDTHS as any)[size]}px) {
|
|
||||||
${css(a, b, c)}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
return accumulator
|
|
||||||
}, {}) as any
|
|
||||||
|
|
||||||
function getSettings(darkMode: boolean) {
|
function getSettings(darkMode: boolean) {
|
||||||
return {
|
return {
|
||||||
grids: {
|
grids: {
|
||||||
|
@ -7,15 +7,10 @@ describe('#anonymizeLink', () => {
|
|||||||
it('anonymizes any addresses in etherscan urls', () => {
|
it('anonymizes any addresses in etherscan urls', () => {
|
||||||
expect(anonymizeLink('https://etherscan.io/address/0xabcd')).toEqual('https://etherscan.io/address/***')
|
expect(anonymizeLink('https://etherscan.io/address/0xabcd')).toEqual('https://etherscan.io/address/***')
|
||||||
})
|
})
|
||||||
it('anonymizes any addresses in etherscan urls', () => {
|
|
||||||
expect(anonymizeLink('https://etherscan.io/address/0xabcd')).toEqual('https://etherscan.io/address/***')
|
|
||||||
})
|
|
||||||
it('anonymizes any addresses in testnet etherscan urls', () => {
|
it('anonymizes any addresses in testnet etherscan urls', () => {
|
||||||
expect(anonymizeLink('https://goerli.etherscan.io/address/0xabcd')).toEqual(
|
expect(anonymizeLink('https://goerli.etherscan.io/address/0xabcd')).toEqual(
|
||||||
'https://goerli.etherscan.io/address/***'
|
'https://goerli.etherscan.io/address/***'
|
||||||
)
|
)
|
||||||
})
|
|
||||||
it('anonymizes any addresses in testnet etherscan urls', () => {
|
|
||||||
expect(anonymizeLink('https://ropsten.etherscan.io/address/0xabcd')).toEqual(
|
expect(anonymizeLink('https://ropsten.etherscan.io/address/0xabcd')).toEqual(
|
||||||
'https://ropsten.etherscan.io/address/***'
|
'https://ropsten.etherscan.io/address/***'
|
||||||
)
|
)
|
||||||
|
@ -88,6 +88,7 @@ describe('formatTransactionAmount', () => {
|
|||||||
expect(formatTransactionAmount(1234567.8901)).toEqual('1,234,567.89')
|
expect(formatTransactionAmount(1234567.8901)).toEqual('1,234,567.89')
|
||||||
})
|
})
|
||||||
it('Number ≥ 1M extra long', () => {
|
it('Number ≥ 1M extra long', () => {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-loss-of-precision
|
||||||
expect(formatTransactionAmount(1234567890123456.789)).toEqual('1.234568e+15')
|
expect(formatTransactionAmount(1234567890123456.789)).toEqual('1.234568e+15')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -10,7 +10,7 @@ function waitRandom(min: number, max: number): Promise<void> {
|
|||||||
* This error is thrown if the function is cancelled before completing
|
* This error is thrown if the function is cancelled before completing
|
||||||
*/
|
*/
|
||||||
class CancelledError extends Error {
|
class CancelledError extends Error {
|
||||||
public isCancelledError: true = true
|
public isCancelledError = true as const
|
||||||
constructor() {
|
constructor() {
|
||||||
super('Cancelled')
|
super('Cancelled')
|
||||||
}
|
}
|
||||||
@ -20,7 +20,7 @@ class CancelledError extends Error {
|
|||||||
* Throw this error if the function should retry
|
* Throw this error if the function should retry
|
||||||
*/
|
*/
|
||||||
export class RetryableError extends Error {
|
export class RetryableError extends Error {
|
||||||
public isRetryableError: true = true
|
public isRetryableError = true as const
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RetryOptions {
|
export interface RetryOptions {
|
||||||
@ -42,8 +42,10 @@ export function retry<T>(
|
|||||||
): { promise: Promise<T>; cancel: () => void } {
|
): { promise: Promise<T>; cancel: () => void } {
|
||||||
let completed = false
|
let completed = false
|
||||||
let rejectCancelled: (error: Error) => void
|
let rejectCancelled: (error: Error) => void
|
||||||
|
// eslint-disable-next-line no-async-promise-executor
|
||||||
const promise = new Promise<T>(async (resolve, reject) => {
|
const promise = new Promise<T>(async (resolve, reject) => {
|
||||||
rejectCancelled = reject
|
rejectCancelled = reject
|
||||||
|
// eslint-disable-next-line no-constant-condition
|
||||||
while (true) {
|
while (true) {
|
||||||
let result: T
|
let result: T
|
||||||
try {
|
try {
|
||||||
|
@ -15,7 +15,7 @@ export function swapErrorToUserReadableMessage(error: any): string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (Boolean(error)) {
|
while (error) {
|
||||||
reason = error.reason ?? error.message ?? reason
|
reason = error.reason ?? error.message ?? reason
|
||||||
error = error.error ?? error.data?.originalError
|
error = error.error ?? error.data?.originalError
|
||||||
}
|
}
|
||||||
|
338
yarn.lock
338
yarn.lock
@ -3608,6 +3608,11 @@
|
|||||||
estree-walker "^1.0.1"
|
estree-walker "^1.0.1"
|
||||||
picomatch "^2.2.2"
|
picomatch "^2.2.2"
|
||||||
|
|
||||||
|
"@rushstack/eslint-patch@^1.2.0":
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
|
||||||
|
integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==
|
||||||
|
|
||||||
"@sentry/browser@7.20.1":
|
"@sentry/browser@7.20.1":
|
||||||
version "7.20.1"
|
version "7.20.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.20.1.tgz#bce606db24fa02fb72e71187e510ff890f8be903"
|
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.20.1.tgz#bce606db24fa02fb72e71187e510ff890f8be903"
|
||||||
@ -4349,10 +4354,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138"
|
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138"
|
||||||
integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==
|
integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==
|
||||||
|
|
||||||
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7":
|
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9":
|
||||||
version "7.0.9"
|
version "7.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||||
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
|
||||||
|
|
||||||
"@types/json-stable-stringify@^1.0.32":
|
"@types/json-stable-stringify@^1.0.32":
|
||||||
version "1.0.34"
|
version "1.0.34"
|
||||||
@ -4572,6 +4577,11 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@types/semver@^7.3.12":
|
||||||
|
version "7.3.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
|
||||||
|
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
|
||||||
|
|
||||||
"@types/sinonjs__fake-timers@8.1.1":
|
"@types/sinonjs__fake-timers@8.1.1":
|
||||||
version "8.1.1"
|
version "8.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3"
|
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3"
|
||||||
@ -4721,7 +4731,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^4", "@typescript-eslint/eslint-plugin@^4.5.0":
|
"@typescript-eslint/eslint-plugin@^4.5.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
|
||||||
integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
|
integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
|
||||||
@ -4735,6 +4745,21 @@
|
|||||||
semver "^7.3.5"
|
semver "^7.3.5"
|
||||||
tsutils "^3.21.0"
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/eslint-plugin@^5.45.1":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz#dadb79df3b0499699b155839fd6792f16897d910"
|
||||||
|
integrity sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "5.47.0"
|
||||||
|
"@typescript-eslint/type-utils" "5.47.0"
|
||||||
|
"@typescript-eslint/utils" "5.47.0"
|
||||||
|
debug "^4.3.4"
|
||||||
|
ignore "^5.2.0"
|
||||||
|
natural-compare-lite "^1.4.0"
|
||||||
|
regexpp "^3.2.0"
|
||||||
|
semver "^7.3.7"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1":
|
"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
|
||||||
@ -4758,7 +4783,7 @@
|
|||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
eslint-utils "^2.0.0"
|
eslint-utils "^2.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^4", "@typescript-eslint/parser@^4.5.0":
|
"@typescript-eslint/parser@^4.5.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
|
||||||
integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
|
integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
|
||||||
@ -4768,6 +4793,16 @@
|
|||||||
"@typescript-eslint/typescript-estree" "4.33.0"
|
"@typescript-eslint/typescript-estree" "4.33.0"
|
||||||
debug "^4.3.1"
|
debug "^4.3.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/parser@^5.45.1":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.47.0.tgz#62e83de93499bf4b500528f74bf2e0554e3a6c8d"
|
||||||
|
integrity sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "5.47.0"
|
||||||
|
"@typescript-eslint/types" "5.47.0"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.47.0"
|
||||||
|
debug "^4.3.4"
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@4.33.0":
|
"@typescript-eslint/scope-manager@4.33.0":
|
||||||
version "4.33.0"
|
version "4.33.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
|
||||||
@ -4776,6 +4811,24 @@
|
|||||||
"@typescript-eslint/types" "4.33.0"
|
"@typescript-eslint/types" "4.33.0"
|
||||||
"@typescript-eslint/visitor-keys" "4.33.0"
|
"@typescript-eslint/visitor-keys" "4.33.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/scope-manager@5.47.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz#f58144a6b0ff58b996f92172c488813aee9b09df"
|
||||||
|
integrity sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.47.0"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.47.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/type-utils@5.47.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz#2b440979c574e317d3473225ae781f292c99e55d"
|
||||||
|
integrity sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/typescript-estree" "5.47.0"
|
||||||
|
"@typescript-eslint/utils" "5.47.0"
|
||||||
|
debug "^4.3.4"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
"@typescript-eslint/types@3.10.1":
|
"@typescript-eslint/types@3.10.1":
|
||||||
version "3.10.1"
|
version "3.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
|
||||||
@ -4786,6 +4839,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
|
||||||
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
|
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
|
||||||
|
|
||||||
|
"@typescript-eslint/types@5.47.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.47.0.tgz#67490def406eaa023dbbd8da42ee0d0c9b5229d3"
|
||||||
|
integrity sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@3.10.1":
|
"@typescript-eslint/typescript-estree@3.10.1":
|
||||||
version "3.10.1"
|
version "3.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
|
||||||
@ -4813,6 +4871,33 @@
|
|||||||
semver "^7.3.5"
|
semver "^7.3.5"
|
||||||
tsutils "^3.21.0"
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/typescript-estree@5.47.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz#ed971a11c5c928646d6ba7fc9dfdd6e997649aca"
|
||||||
|
integrity sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.47.0"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.47.0"
|
||||||
|
debug "^4.3.4"
|
||||||
|
globby "^11.1.0"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
semver "^7.3.7"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/utils@5.47.0", "@typescript-eslint/utils@^5.10.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.47.0.tgz#b5005f7d2696769a1fdc1e00897005a25b3a0ec7"
|
||||||
|
integrity sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==
|
||||||
|
dependencies:
|
||||||
|
"@types/json-schema" "^7.0.9"
|
||||||
|
"@types/semver" "^7.3.12"
|
||||||
|
"@typescript-eslint/scope-manager" "5.47.0"
|
||||||
|
"@typescript-eslint/types" "5.47.0"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.47.0"
|
||||||
|
eslint-scope "^5.1.1"
|
||||||
|
eslint-utils "^3.0.0"
|
||||||
|
semver "^7.3.7"
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@3.10.1":
|
"@typescript-eslint/visitor-keys@3.10.1":
|
||||||
version "3.10.1"
|
version "3.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
|
||||||
@ -4828,6 +4913,14 @@
|
|||||||
"@typescript-eslint/types" "4.33.0"
|
"@typescript-eslint/types" "4.33.0"
|
||||||
eslint-visitor-keys "^2.0.0"
|
eslint-visitor-keys "^2.0.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/visitor-keys@5.47.0":
|
||||||
|
version "5.47.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz#4aca4efbdf6209c154df1f7599852d571b80bb45"
|
||||||
|
integrity sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.47.0"
|
||||||
|
eslint-visitor-keys "^3.3.0"
|
||||||
|
|
||||||
"@uniswap/analytics-events@^1.5.0":
|
"@uniswap/analytics-events@^1.5.0":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@uniswap/analytics-events/-/analytics-events-1.5.0.tgz#1f5a6e0fedb46e551745c2b4d2b791fe44964cfa"
|
resolved "https://registry.yarnpkg.com/@uniswap/analytics-events/-/analytics-events-1.5.0.tgz#1f5a6e0fedb46e551745c2b4d2b791fe44964cfa"
|
||||||
@ -4852,6 +4945,26 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@uniswap/default-token-list/-/default-token-list-2.2.0.tgz#d85a5c2520f57f4920bd989dfc9f01e1b701a567"
|
resolved "https://registry.yarnpkg.com/@uniswap/default-token-list/-/default-token-list-2.2.0.tgz#d85a5c2520f57f4920bd989dfc9f01e1b701a567"
|
||||||
integrity sha512-vFPWoGzDjHP4i2l7yLaober/lZMmzOZXXirVF8XNyfNzRxgmYCWKO6SzKtfEUwxpd3/KUebgdK55II4Mnak62A==
|
integrity sha512-vFPWoGzDjHP4i2l7yLaober/lZMmzOZXXirVF8XNyfNzRxgmYCWKO6SzKtfEUwxpd3/KUebgdK55II4Mnak62A==
|
||||||
|
|
||||||
|
"@uniswap/eslint-config@^1.1.1":
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uniswap/eslint-config/-/eslint-config-1.1.1.tgz#83d2633dad6507ca58bc11c8892035812059488e"
|
||||||
|
integrity sha512-vND/oJTmGCxYpY0E+iXWZT0mJT21/Ryf48yLP0kyWNnXzB5WyJuqei2gHx3nr+HWwRNF6aEbToRr9jNh+J3uBg==
|
||||||
|
dependencies:
|
||||||
|
"@rushstack/eslint-patch" "^1.2.0"
|
||||||
|
"@typescript-eslint/eslint-plugin" "^5.45.1"
|
||||||
|
"@typescript-eslint/parser" "^5.45.1"
|
||||||
|
eslint-config-prettier "^8.5.0"
|
||||||
|
eslint-import-resolver-typescript "^3.5.2"
|
||||||
|
eslint-plugin-cypress "^2.12.1"
|
||||||
|
eslint-plugin-import "^2.26.0"
|
||||||
|
eslint-plugin-jest "^27.1.6"
|
||||||
|
eslint-plugin-prettier "^4.2.1"
|
||||||
|
eslint-plugin-react "^7.31.11"
|
||||||
|
eslint-plugin-react-hooks "^4.6.0"
|
||||||
|
eslint-plugin-simple-import-sort "^8.0.0"
|
||||||
|
eslint-plugin-unused-imports "^2.0.0"
|
||||||
|
prettier "^2.8.0"
|
||||||
|
|
||||||
"@uniswap/governance@^1.0.2":
|
"@uniswap/governance@^1.0.2":
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/@uniswap/governance/-/governance-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/@uniswap/governance/-/governance-1.0.2.tgz"
|
||||||
@ -6248,7 +6361,7 @@ array-flatten@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
|
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
|
||||||
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
|
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
|
||||||
|
|
||||||
array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4:
|
array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.6:
|
||||||
version "3.1.6"
|
version "3.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
|
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
|
||||||
integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
|
integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
|
||||||
@ -6291,15 +6404,26 @@ array.prototype.flat@^1.2.4, array.prototype.flat@^1.2.5:
|
|||||||
es-abstract "^1.20.4"
|
es-abstract "^1.20.4"
|
||||||
es-shim-unscopables "^1.0.0"
|
es-shim-unscopables "^1.0.0"
|
||||||
|
|
||||||
array.prototype.flatmap@^1.2.4:
|
array.prototype.flatmap@^1.2.4, array.prototype.flatmap@^1.3.1:
|
||||||
version "1.2.4"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
|
resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
|
||||||
integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
|
integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.0"
|
call-bind "^1.0.2"
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.4"
|
||||||
es-abstract "^1.18.0-next.1"
|
es-abstract "^1.20.4"
|
||||||
function-bind "^1.1.1"
|
es-shim-unscopables "^1.0.0"
|
||||||
|
|
||||||
|
array.prototype.tosorted@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532"
|
||||||
|
integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==
|
||||||
|
dependencies:
|
||||||
|
call-bind "^1.0.2"
|
||||||
|
define-properties "^1.1.4"
|
||||||
|
es-abstract "^1.20.4"
|
||||||
|
es-shim-unscopables "^1.0.0"
|
||||||
|
get-intrinsic "^1.1.3"
|
||||||
|
|
||||||
arrify@^2.0.1:
|
arrify@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
@ -9604,12 +9728,10 @@ escodegen@^2.0.0:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
eslint-config-prettier@^6.11.0:
|
eslint-config-prettier@^8.5.0:
|
||||||
version "6.15.0"
|
version "8.5.0"
|
||||||
resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz"
|
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
|
||||||
integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
|
integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
|
||||||
dependencies:
|
|
||||||
get-stdin "^6.0.0"
|
|
||||||
|
|
||||||
eslint-config-react-app@^6.0.0:
|
eslint-config-react-app@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
@ -9646,13 +9768,12 @@ eslint-module-utils@^2.7.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
debug "^3.2.7"
|
debug "^3.2.7"
|
||||||
|
|
||||||
eslint-plugin-better-styled-components@^1.1.2:
|
eslint-plugin-cypress@^2.12.1:
|
||||||
version "1.1.2"
|
version "2.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-better-styled-components/-/eslint-plugin-better-styled-components-1.1.2.tgz#cc8af5607abfcdabb53160e94f8e342582a46031"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632"
|
||||||
integrity sha512-pGLIv8Z05xnmMyDyLWV65KQs7HU+FN403Tqb5xv3BZvw5kjC3K18/aYm7mcRpLLPse5/lwhX8ieGQKflPgr0xQ==
|
integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss "^7.0.2"
|
globals "^11.12.0"
|
||||||
requireindex "~1.1.0"
|
|
||||||
|
|
||||||
eslint-plugin-flowtype@^5.2.0:
|
eslint-plugin-flowtype@^5.2.0:
|
||||||
version "5.8.0"
|
version "5.8.0"
|
||||||
@ -9688,6 +9809,13 @@ eslint-plugin-jest@^24.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "^4.0.1"
|
"@typescript-eslint/experimental-utils" "^4.0.1"
|
||||||
|
|
||||||
|
eslint-plugin-jest@^27.1.6:
|
||||||
|
version "27.1.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.1.7.tgz#0351e904afb8d66b7f70452929556dfdc8daba0d"
|
||||||
|
integrity sha512-0QVzf+og4YI1Qr3UoprkqqhezAZjFffdi62b0IurkCXMqPtRW84/UT4CKsYT80h/D82LA9avjO/80Ou1LdgbaQ==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/utils" "^5.10.0"
|
||||||
|
|
||||||
eslint-plugin-jsx-a11y@^6.3.1:
|
eslint-plugin-jsx-a11y@^6.3.1:
|
||||||
version "6.4.1"
|
version "6.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
|
||||||
@ -9705,10 +9833,10 @@ eslint-plugin-jsx-a11y@^6.3.1:
|
|||||||
jsx-ast-utils "^3.1.0"
|
jsx-ast-utils "^3.1.0"
|
||||||
language-tags "^1.0.5"
|
language-tags "^1.0.5"
|
||||||
|
|
||||||
eslint-plugin-prettier@^3.1.3:
|
eslint-plugin-prettier@^4.2.1:
|
||||||
version "3.4.1"
|
version "4.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
|
||||||
integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==
|
integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
prettier-linter-helpers "^1.0.0"
|
prettier-linter-helpers "^1.0.0"
|
||||||
|
|
||||||
@ -9717,28 +9845,31 @@ eslint-plugin-react-hooks@^4.2.0, eslint-plugin-react-hooks@^4.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
|
||||||
integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
|
integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
|
||||||
|
|
||||||
eslint-plugin-react@^7.21.5:
|
eslint-plugin-react@^7.21.5, eslint-plugin-react@^7.31.11:
|
||||||
version "7.24.0"
|
version "7.31.11"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz#eadedfa351a6f36b490aa17f4fa9b14e842b9eb4"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8"
|
||||||
integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==
|
integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes "^3.1.3"
|
array-includes "^3.1.6"
|
||||||
array.prototype.flatmap "^1.2.4"
|
array.prototype.flatmap "^1.3.1"
|
||||||
|
array.prototype.tosorted "^1.1.1"
|
||||||
doctrine "^2.1.0"
|
doctrine "^2.1.0"
|
||||||
has "^1.0.3"
|
estraverse "^5.3.0"
|
||||||
jsx-ast-utils "^2.4.1 || ^3.0.0"
|
jsx-ast-utils "^2.4.1 || ^3.0.0"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.1.2"
|
||||||
object.entries "^1.1.4"
|
object.entries "^1.1.6"
|
||||||
object.fromentries "^2.0.4"
|
object.fromentries "^2.0.6"
|
||||||
object.values "^1.1.4"
|
object.hasown "^1.1.2"
|
||||||
prop-types "^15.7.2"
|
object.values "^1.1.6"
|
||||||
|
prop-types "^15.8.1"
|
||||||
resolve "^2.0.0-next.3"
|
resolve "^2.0.0-next.3"
|
||||||
string.prototype.matchall "^4.0.5"
|
semver "^6.3.0"
|
||||||
|
string.prototype.matchall "^4.0.8"
|
||||||
|
|
||||||
eslint-plugin-simple-import-sort@^7.0.0:
|
eslint-plugin-simple-import-sort@^8.0.0:
|
||||||
version "7.0.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz#a1dad262f46d2184a90095a60c66fef74727f0f8"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-8.0.0.tgz#9d9a2372b0606e999ea841b10458a370a6ccc160"
|
||||||
integrity sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==
|
integrity sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==
|
||||||
|
|
||||||
eslint-plugin-testing-library@^3.9.2:
|
eslint-plugin-testing-library@^3.9.2:
|
||||||
version "3.10.2"
|
version "3.10.2"
|
||||||
@ -9799,6 +9930,11 @@ eslint-visitor-keys@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
||||||
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
||||||
|
|
||||||
|
eslint-visitor-keys@^3.3.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
||||||
|
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
||||||
|
|
||||||
eslint-webpack-plugin@^2.5.2:
|
eslint-webpack-plugin@^2.5.2:
|
||||||
version "2.5.4"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986"
|
resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz#473b84932f1a8e2c2b8e66a402d0497bf440b986"
|
||||||
@ -9895,10 +10031,10 @@ estraverse@^4.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
|
||||||
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
||||||
|
|
||||||
estraverse@^5.1.0, estraverse@^5.2.0:
|
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
|
||||||
version "5.2.0"
|
version "5.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
|
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||||
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
|
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||||
|
|
||||||
estree-walker@^0.6.1:
|
estree-walker@^0.6.1:
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
@ -10390,7 +10526,7 @@ fast-diff@^1.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
|
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
|
||||||
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
|
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
|
||||||
|
|
||||||
fast-glob@^3.1.1, fast-glob@^3.2.11:
|
fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.9:
|
||||||
version "3.2.12"
|
version "3.2.12"
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
|
||||||
integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
|
integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
|
||||||
@ -10900,11 +11036,6 @@ get-package-type@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
||||||
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
||||||
|
|
||||||
get-stdin@^6.0.0:
|
|
||||||
version "6.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz"
|
|
||||||
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
|
|
||||||
|
|
||||||
get-stream@^3.0.0:
|
get-stream@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
|
resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
|
||||||
@ -11033,7 +11164,7 @@ global@~4.4.0:
|
|||||||
min-document "^2.19.0"
|
min-document "^2.19.0"
|
||||||
process "^0.11.10"
|
process "^0.11.10"
|
||||||
|
|
||||||
globals@^11.1.0:
|
globals@^11.1.0, globals@^11.12.0:
|
||||||
version "11.12.0"
|
version "11.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||||
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
||||||
@ -11062,16 +11193,16 @@ globby@11.0.1:
|
|||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
globby@^11.0.3:
|
globby@^11.0.3, globby@^11.1.0:
|
||||||
version "11.0.3"
|
version "11.1.0"
|
||||||
resolved "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz"
|
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
|
||||||
integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==
|
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||||
dependencies:
|
dependencies:
|
||||||
array-union "^2.1.0"
|
array-union "^2.1.0"
|
||||||
dir-glob "^3.0.1"
|
dir-glob "^3.0.1"
|
||||||
fast-glob "^3.1.1"
|
fast-glob "^3.2.9"
|
||||||
ignore "^5.1.4"
|
ignore "^5.2.0"
|
||||||
merge2 "^1.3.0"
|
merge2 "^1.4.1"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
globby@^13.1.2:
|
globby@^13.1.2:
|
||||||
@ -14060,6 +14191,11 @@ native-url@^0.2.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
querystring "^0.2.0"
|
querystring "^0.2.0"
|
||||||
|
|
||||||
|
natural-compare-lite@^1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
|
||||||
|
integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
|
||||||
|
|
||||||
natural-compare@^1.4.0:
|
natural-compare@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||||
@ -14369,24 +14505,23 @@ object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4:
|
|||||||
has-symbols "^1.0.3"
|
has-symbols "^1.0.3"
|
||||||
object-keys "^1.1.1"
|
object-keys "^1.1.1"
|
||||||
|
|
||||||
object.entries@^1.1.0, object.entries@^1.1.4:
|
object.entries@^1.1.0, object.entries@^1.1.4, object.entries@^1.1.6:
|
||||||
version "1.1.4"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd"
|
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23"
|
||||||
integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==
|
integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.2"
|
call-bind "^1.0.2"
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.4"
|
||||||
es-abstract "^1.18.2"
|
es-abstract "^1.20.4"
|
||||||
|
|
||||||
object.fromentries@^2.0.4:
|
object.fromentries@^2.0.4, object.fromentries@^2.0.6:
|
||||||
version "2.0.4"
|
version "2.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8"
|
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
|
||||||
integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==
|
integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.2"
|
call-bind "^1.0.2"
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.4"
|
||||||
es-abstract "^1.18.0-next.2"
|
es-abstract "^1.20.4"
|
||||||
has "^1.0.3"
|
|
||||||
|
|
||||||
object.getownpropertydescriptors@^2.0.3:
|
object.getownpropertydescriptors@^2.0.3:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
@ -14397,6 +14532,14 @@ object.getownpropertydescriptors@^2.0.3:
|
|||||||
define-properties "^1.1.3"
|
define-properties "^1.1.3"
|
||||||
es-abstract "^1.18.0-next.2"
|
es-abstract "^1.18.0-next.2"
|
||||||
|
|
||||||
|
object.hasown@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92"
|
||||||
|
integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==
|
||||||
|
dependencies:
|
||||||
|
define-properties "^1.1.4"
|
||||||
|
es-abstract "^1.20.4"
|
||||||
|
|
||||||
object.pick@^1.3.0:
|
object.pick@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
||||||
@ -14404,7 +14547,7 @@ object.pick@^1.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isobject "^3.0.1"
|
isobject "^3.0.1"
|
||||||
|
|
||||||
object.values@^1.1.0, object.values@^1.1.4, object.values@^1.1.5:
|
object.values@^1.1.0, object.values@^1.1.4, object.values@^1.1.5, object.values@^1.1.6:
|
||||||
version "1.1.6"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
|
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
|
||||||
integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
|
integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
|
||||||
@ -15724,10 +15867,10 @@ prettier-linter-helpers@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fast-diff "^1.1.2"
|
fast-diff "^1.1.2"
|
||||||
|
|
||||||
prettier@^2.1.2, prettier@^2.7.1:
|
prettier@^2.1.2, prettier@^2.7.1, prettier@^2.8.0:
|
||||||
version "2.7.1"
|
version "2.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc"
|
||||||
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
|
integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==
|
||||||
|
|
||||||
pretty-bytes@^5.3.0, pretty-bytes@^5.6.0:
|
pretty-bytes@^5.3.0, pretty-bytes@^5.6.0:
|
||||||
version "5.6.0"
|
version "5.6.0"
|
||||||
@ -15819,7 +15962,7 @@ prompts@2.4.0, prompts@^2.0.1:
|
|||||||
kleur "^3.0.3"
|
kleur "^3.0.3"
|
||||||
sisteransi "^1.0.5"
|
sisteransi "^1.0.5"
|
||||||
|
|
||||||
prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
|
prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
|
||||||
version "15.8.1"
|
version "15.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
|
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
|
||||||
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
||||||
@ -16599,7 +16742,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1, regexp.prototype.f
|
|||||||
define-properties "^1.1.3"
|
define-properties "^1.1.3"
|
||||||
functions-have-names "^1.2.2"
|
functions-have-names "^1.2.2"
|
||||||
|
|
||||||
regexpp@^3.1.0:
|
regexpp@^3.1.0, regexpp@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||||
@ -16758,11 +16901,6 @@ require-main-filename@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
||||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||||
|
|
||||||
requireindex@~1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
|
|
||||||
integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
|
|
||||||
|
|
||||||
requires-port@^1.0.0:
|
requires-port@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||||
@ -17842,18 +17980,18 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
|||||||
is-fullwidth-code-point "^3.0.0"
|
is-fullwidth-code-point "^3.0.0"
|
||||||
strip-ansi "^6.0.1"
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
string.prototype.matchall@^4.0.5:
|
string.prototype.matchall@^4.0.5, string.prototype.matchall@^4.0.8:
|
||||||
version "4.0.5"
|
version "4.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da"
|
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
|
||||||
integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==
|
integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind "^1.0.2"
|
call-bind "^1.0.2"
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.4"
|
||||||
es-abstract "^1.18.2"
|
es-abstract "^1.20.4"
|
||||||
get-intrinsic "^1.1.1"
|
get-intrinsic "^1.1.3"
|
||||||
has-symbols "^1.0.2"
|
has-symbols "^1.0.3"
|
||||||
internal-slot "^1.0.3"
|
internal-slot "^1.0.3"
|
||||||
regexp.prototype.flags "^1.3.1"
|
regexp.prototype.flags "^1.4.3"
|
||||||
side-channel "^1.0.4"
|
side-channel "^1.0.4"
|
||||||
|
|
||||||
string.prototype.trimend@^1.0.5:
|
string.prototype.trimend@^1.0.5:
|
||||||
|
Loading…
Reference in New Issue
Block a user