diff --git a/package.json b/package.json index b9755f75..9fc07a28 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "buffer": "^6.0.3", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", - "edge-core-js": "^0.19.29", + "edge-core-js": "^0.19.33", "eslint": "^7.14.0", "eslint-config-standard-kit": "0.15.1", "eslint-plugin-flowtype": "^5.2.0", diff --git a/src/swap-helpers.ts b/src/swap-helpers.ts index e6494311..1ef2e61d 100644 --- a/src/swap-helpers.ts +++ b/src/swap-helpers.ts @@ -10,6 +10,8 @@ import { SwapCurrencyError } from 'edge-core-js/types' +import { fixRequest } from './util/utils' + const likeKindAssets = [ ['BTC', 'WBTC', 'SBTC', 'RBTC'], ['ETH', 'WETH'], @@ -53,6 +55,7 @@ export function makeSwapPluginQuote( ) const out: EdgeSwapQuote = { + request, fromNativeAmount, toNativeAmount, networkFee: { @@ -100,12 +103,15 @@ interface AllCodes { toCurrencyCode: string } -export const getCodes = (request: EdgeSwapRequest): AllCodes => ({ - fromMainnetCode: request.fromWallet.currencyInfo.currencyCode, - toMainnetCode: request.toWallet.currencyInfo.currencyCode, - fromCurrencyCode: request.fromCurrencyCode, - toCurrencyCode: request.toCurrencyCode -}) +export const getCodes = (rawRequest: EdgeSwapRequest): AllCodes => { + const request = fixRequest(rawRequest) + return { + fromMainnetCode: request.fromWallet.currencyInfo.currencyCode, + toMainnetCode: request.toWallet.currencyInfo.currencyCode, + fromCurrencyCode: request.fromCurrencyCode, + toCurrencyCode: request.toCurrencyCode + } +} const getPluginIds = ( request: EdgeSwapRequest @@ -129,9 +135,10 @@ const defaultInvalidCodes: InvalidCurrencyCodes = { */ export function checkInvalidCodes( invalidCodes: InvalidCurrencyCodes, - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, swapInfo: EdgeSwapInfo ): void { + const request = fixRequest(rawRequest) const { fromPluginId, toPluginId } = getPluginIds(request) const { fromMainnetCode, diff --git a/src/swap/changehero.ts b/src/swap/changehero.ts index 491feabe..1b61f856 100644 --- a/src/swap/changehero.ts +++ b/src/swap/changehero.ts @@ -27,6 +27,7 @@ import { InvalidCurrencyCodes, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const pluginId = 'changehero' @@ -96,8 +97,9 @@ async function getAddress( function checkReply( reply: { error?: { code?: number; message?: string } }, - request: EdgeSwapRequest + rawRequest: EdgeSwapRequest ): void { + const request = fixRequest(rawRequest) if (reply.error != null) { if ( reply.error.code === -32602 || @@ -135,8 +137,9 @@ export function makeChangeHeroPlugin( } async function getFixedQuote( - request: EdgeSwapRequest + rawRequest: EdgeSwapRequest ): Promise { + const request = fixRequest(rawRequest) const [fromAddress, toAddress] = await Promise.all([ getAddress(request.fromWallet, request.fromCurrencyCode), getAddress(request.toWallet, request.toCurrencyCode) @@ -299,7 +302,8 @@ export function makeChangeHeroPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) return await getFixedQuote(request) } diff --git a/src/swap/changenow.ts b/src/swap/changenow.ts index ceb36b01..ab0cb1db 100644 --- a/src/swap/changenow.ts +++ b/src/swap/changenow.ts @@ -30,6 +30,7 @@ import { InvalidCurrencyCodes, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const pluginId = 'changenow' const swapInfo: EdgeSwapInfo = { @@ -87,10 +88,11 @@ export function makeChangeNowPlugin( swapInfo, async fetchSwapQuote( - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, userSettings: Object | undefined, opts: { promoCode?: string } ): Promise { + const request = fixRequest(rawRequest) const { promoCode } = opts checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) diff --git a/src/swap/defi/thorchain.ts b/src/swap/defi/thorchain.ts index f3c8817c..b9995472 100644 --- a/src/swap/defi/thorchain.ts +++ b/src/swap/defi/thorchain.ts @@ -27,7 +27,12 @@ import { isLikeKind, makeSwapPluginQuote } from '../../swap-helpers' -import { fetchInfo, fetchWaterfall, promiseWithTimeout } from '../../util/utils' +import { + fetchInfo, + fetchWaterfall, + fixRequest, + promiseWithTimeout +} from '../../util/utils' import abi from './abi/THORCHAIN_SWAP_ABI' import erc20Abi from './abi/UNISWAP_V2_ERC20_ABI' @@ -149,7 +154,8 @@ export function makeThorchainPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) const { fromCurrencyCode, toCurrencyCode, diff --git a/src/swap/defi/thorchainDa.ts b/src/swap/defi/thorchainDa.ts index cbdc26cd..449c9896 100644 --- a/src/swap/defi/thorchainDa.ts +++ b/src/swap/defi/thorchainDa.ts @@ -34,6 +34,7 @@ import { import { fetchInfo, fetchWaterfall, + fixRequest, makeQueryParams, promiseWithTimeout } from '../../util/utils' @@ -130,7 +131,8 @@ export function makeThorchainDaPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) const { fromCurrencyCode, toCurrencyCode, diff --git a/src/swap/defi/uni-v2-based/plugins/spookySwap.ts b/src/swap/defi/uni-v2-based/plugins/spookySwap.ts index b5ee3ae8..05c93956 100644 --- a/src/swap/defi/uni-v2-based/plugins/spookySwap.ts +++ b/src/swap/defi/uni-v2-based/plugins/spookySwap.ts @@ -10,6 +10,7 @@ import { } from 'edge-core-js/types' import { ethers } from 'ethers' +import { fixRequest } from '../../../../util/utils' import { getInOutTokenAddresses } from '../../defiUtils' import { getFtmProvider, makeSpookySwapRouterContract } from '../uniV2Contracts' import { @@ -39,7 +40,8 @@ export function makeSpookySwapPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) const { fromWallet, toWallet, diff --git a/src/swap/defi/uni-v2-based/plugins/tombSwap.ts b/src/swap/defi/uni-v2-based/plugins/tombSwap.ts index db397684..d401b30e 100644 --- a/src/swap/defi/uni-v2-based/plugins/tombSwap.ts +++ b/src/swap/defi/uni-v2-based/plugins/tombSwap.ts @@ -10,6 +10,7 @@ import { } from 'edge-core-js/types' import { ethers } from 'ethers' +import { fixRequest } from '../../../../util/utils' import { getInOutTokenAddresses } from '../../defiUtils' import { getFtmProvider, makeTombSwapRouterContract } from '../uniV2Contracts' import { @@ -39,7 +40,8 @@ export function makeTombSwapPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) const { fromWallet, toWallet, diff --git a/src/swap/defi/uni-v2-based/uniV2Utils.ts b/src/swap/defi/uni-v2-based/uniV2Utils.ts index 38572460..b7f916c2 100644 --- a/src/swap/defi/uni-v2-based/uniV2Utils.ts +++ b/src/swap/defi/uni-v2-based/uniV2Utils.ts @@ -8,6 +8,7 @@ import { import { BigNumber, Contract, ethers, PopulatedTransaction } from 'ethers' import { round } from '../../../util/biggystringplus' +import { fixRequest } from '../../../util/utils' import { getMetaTokenAddress } from '../defiUtils' import { makeErc20Contract, makeWrappedFtmContract } from './uniV2Contracts' /** @@ -44,7 +45,7 @@ export const getSwapAmounts = async ( */ export const getSwapTransactions = async ( provider: ethers.providers.Provider, - swapRequest: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, router: Contract, amountToSwap: string, expectedAmountOut: string, @@ -52,6 +53,7 @@ export const getSwapTransactions = async ( slippage: string, deadline: number ): Promise => { + const swapRequest = fixRequest(rawRequest) const { fromWallet, fromCurrencyCode, toCurrencyCode } = swapRequest const { currencyCode: nativeCurrencyCode, @@ -192,6 +194,7 @@ export function makeUniV2EdgeSwapQuote( const swapTx = txs[txs.length - 1] const out: EdgeSwapQuote = { + request, fromNativeAmount, toNativeAmount, networkFee: { diff --git a/src/swap/exolix.ts b/src/swap/exolix.ts index 2872656c..5e63feea 100644 --- a/src/swap/exolix.ts +++ b/src/swap/exolix.ts @@ -19,6 +19,7 @@ import { InvalidCurrencyCodes, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const pluginId = 'exolix' @@ -113,9 +114,10 @@ export function makeExolixPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { const out: EdgeSwapPlugin = { swapInfo, async fetchSwapQuote( - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, userSettings: Object | undefined ): Promise { + const request = fixRequest(rawRequest) checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) const fixedPromise = getFixedQuote(request, userSettings) @@ -126,9 +128,10 @@ export function makeExolixPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { } const getFixedQuote = async ( - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, _userSettings: Object | undefined ): Promise => { + const request = fixRequest(rawRequest) const [fromAddress, toAddress] = await Promise.all([ getAddress(request.fromWallet, request.fromCurrencyCode), getAddress(request.toWallet, request.toCurrencyCode) diff --git a/src/swap/godex.ts b/src/swap/godex.ts index 66b26a79..66af8191 100644 --- a/src/swap/godex.ts +++ b/src/swap/godex.ts @@ -27,6 +27,7 @@ import { InvalidCurrencyCodes, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const pluginId = 'godex' @@ -113,9 +114,10 @@ export function makeGodexPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { async function call( url: string, - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, data: { params: JsonObject } ): Promise { + const request = fixRequest(rawRequest) const body = JSON.stringify(data.params) const headers = { @@ -140,10 +142,11 @@ export function makeGodexPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { swapInfo, async fetchSwapQuote( - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, userSettings: Object | undefined, opts: { promoCode?: string } ): Promise { + const request = fixRequest(rawRequest) checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) const reverseQuote = request.quoteFor === 'to' diff --git a/src/swap/letsexchange.ts b/src/swap/letsexchange.ts index 98879d7f..7a23c3f0 100644 --- a/src/swap/letsexchange.ts +++ b/src/swap/letsexchange.ts @@ -20,6 +20,7 @@ import { InvalidCurrencyCodes, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' import { asOptionalBlank } from './changenow' const pluginId = 'letsexchange' @@ -93,9 +94,10 @@ export function makeLetsExchangePlugin( async function call( url: string, - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, data: { params: Object } ): Promise { + const request = fixRequest(rawRequest) const body = JSON.stringify(data.params) const headers = { @@ -121,10 +123,11 @@ export function makeLetsExchangePlugin( swapInfo, async fetchSwapQuote( - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, userSettings: Object | undefined, opts: { promoCode?: string } ): Promise { + const request = fixRequest(rawRequest) checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) const reverseQuote = request.quoteFor === 'to' diff --git a/src/swap/sideshift.ts b/src/swap/sideshift.ts index 101e3c43..98787408 100644 --- a/src/swap/sideshift.ts +++ b/src/swap/sideshift.ts @@ -20,6 +20,7 @@ import { getCodesWithTranscription, makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const MAINNET_CODE_TRANSCRIPTION = { zcash: 'shielded', @@ -45,9 +46,10 @@ async function getAddress( async function checkQuoteError( rate: Rate, - request: EdgeSwapRequest, + rawRequest: EdgeSwapRequest, quoteErrorMessage: string ): Promise { + const request = fixRequest(rawRequest) const { fromCurrencyCode, fromWallet, toCurrencyCode } = request if (quoteErrorMessage === 'Amount too low') { @@ -121,8 +123,9 @@ const createSideshiftApi = ( const createFetchSwapQuote = (api: SideshiftApi, affiliateId: string) => async function fetchSwapQuote( - request: EdgeSwapRequest + rawRequest: EdgeSwapRequest ): Promise { + const request = fixRequest(rawRequest) const [refundAddress, settleAddress] = await Promise.all([ getAddress(request.fromWallet, request.fromCurrencyCode), getAddress(request.toWallet, request.toCurrencyCode) diff --git a/src/swap/swapuz.ts b/src/swap/swapuz.ts index 9106c92e..f90d9de4 100644 --- a/src/swap/swapuz.ts +++ b/src/swap/swapuz.ts @@ -29,6 +29,7 @@ import { makeSwapPluginQuote } from '../swap-helpers' import { div18 } from '../util/biggystringplus' +import { fixRequest } from '../util/utils' const pluginId = 'swapuz' @@ -82,8 +83,9 @@ export function makeSwapuzPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { } const fetchSwapQuoteInner = async ( - request: EdgeSwapRequest + rawRequest: EdgeSwapRequest ): Promise => { + const request = fixRequest(rawRequest) const { fromWallet, toWallet, nativeAmount } = request checkInvalidCodes(INVALID_CURRENCY_CODES, request, swapInfo) @@ -232,7 +234,8 @@ export function makeSwapuzPlugin(opts: EdgeCorePluginOptions): EdgeSwapPlugin { const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(requestTop: EdgeSwapRequest): Promise { + async fetchSwapQuote(request: EdgeSwapRequest): Promise { + const requestTop = fixRequest(request) const { fromCurrencyCode, toWallet, diff --git a/src/swap/switchain.ts b/src/swap/switchain.ts index 8bc369ec..d80f115b 100644 --- a/src/swap/switchain.ts +++ b/src/swap/switchain.ts @@ -7,6 +7,8 @@ import { SwapCurrencyError } from 'edge-core-js' +import { fixRequest } from '../util/utils' + const pluginId = 'switchain' const swapInfo: EdgeSwapInfo = { @@ -21,7 +23,8 @@ export function makeSwitchainPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) throw new SwapCurrencyError( swapInfo, request.fromCurrencyCode, diff --git a/src/swap/transfer.ts b/src/swap/transfer.ts index 379e7c94..754f99ee 100644 --- a/src/swap/transfer.ts +++ b/src/swap/transfer.ts @@ -9,6 +9,7 @@ import { } from 'edge-core-js/types' import { makeSwapPluginQuote } from '../swap-helpers' +import { fixRequest } from '../util/utils' const pluginId = 'transfer' @@ -28,7 +29,8 @@ export function makeTransferPlugin( const out: EdgeSwapPlugin = { swapInfo, - async fetchSwapQuote(request: EdgeSwapRequest): Promise { + async fetchSwapQuote(rawRequest: EdgeSwapRequest): Promise { + const request = fixRequest(rawRequest) if ( request.fromWallet.currencyInfo.pluginId !== request.toWallet.currencyInfo.pluginId || diff --git a/src/util/utils.ts b/src/util/utils.ts index ef4480af..b40c9ada 100644 --- a/src/util/utils.ts +++ b/src/util/utils.ts @@ -1,4 +1,8 @@ -import { EdgeFetchFunction, EdgeFetchResponse } from 'edge-core-js' +import { + EdgeFetchFunction, + EdgeFetchResponse, + EdgeSwapRequest +} from 'edge-core-js' const INFO_SERVERS = ['https://info1.edge.app', 'https://info2.edge.app'] const RATES_SERVERS = ['https://rates1.edge.app', 'https://rates2.edge.app'] @@ -6,6 +10,19 @@ export interface QueryParams { [key: string]: string | number | boolean | null } +export type FixedRequest = EdgeSwapRequest & { + fromCurrencyCode: string + toCurrencyCode: string +} + +export function fixRequest(request: EdgeSwapRequest): FixedRequest { + const { fromCurrencyCode, toCurrencyCode } = request + if (fromCurrencyCode == null || toCurrencyCode == null) { + throw new Error('Expecting fromCurrencyCode and toCurrencyCode') + } + return { ...request, fromCurrencyCode, toCurrencyCode } +} + export const promiseWithTimeout = async ( promise: Promise, timeoutMs: number = 5000 diff --git a/test/fakeCurrencyPlugin.ts b/test/fakeCurrencyPlugin.ts index f6d22b58..8fbc6f29 100644 --- a/test/fakeCurrencyPlugin.ts +++ b/test/fakeCurrencyPlugin.ts @@ -308,6 +308,7 @@ class FakeCurrencyEngine { // TODO: Return a high-fidelity transaction return { + walletId: '', blockHeight: 0, currencyCode, date: defaultTx.date, diff --git a/yarn.lock b/yarn.lock index 45a6c9b0..45330a56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -827,6 +827,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.9.2": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" + integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.12.13", "@babel/template@^7.18.10", "@babel/template@^7.18.6": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -1976,13 +1983,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -biggystring@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/biggystring/-/biggystring-3.0.2.tgz#e9a8cd1ada0ec54b377a621cde53dea5e19085b6" - integrity sha512-Sl1Ek3XwFliCf08nIaypxQtW+XwocfF33h5WC2baU5xVBf/LBctiK28cB3hmhWOBeArtZp0FbNk4hgDFCP3Fag== - dependencies: - bn.js "^4.11.7" - biggystring@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/biggystring/-/biggystring-4.0.0.tgz#82c4aa30c6bd07f8e2c02df20cfe4b865f84cd25" @@ -2650,14 +2650,14 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -edge-core-js@^0.19.29: - version "0.19.29" - resolved "https://registry.yarnpkg.com/edge-core-js/-/edge-core-js-0.19.29.tgz#a248a21463f7df2a0babb63d6ab9c5ef6ceb23fd" - integrity sha512-bseVDKNngtkWl4H0eHtul86bAGRg8SpP/b2liP0eDETMgXYheU61N8o2RbBR3BjUC+07N7znQerB18/hc3Uu9g== +edge-core-js@^0.19.33: + version "0.19.33" + resolved "https://registry.yarnpkg.com/edge-core-js/-/edge-core-js-0.19.33.tgz#55129d6d15d3da4dd3221eedc62684e071b99d3d" + integrity sha512-OIXQAGYS3cxAsU64lMA7ppU539sAGFdpv/Ss7RI3L4SJQhom5J2m74nvm1Y7vSXj78tH5bTNHqh9nClck34VsQ== dependencies: aes-js "^3.1.0" base-x "^1.0.4" - biggystring "^3.0.2" + biggystring "^4.0.0" cleaners "^0.3.11" currency-codes "^1.1.2" disklet "^0.5.2" @@ -2668,8 +2668,8 @@ edge-core-js@^0.19.29: hash.js "^1.1.7" hmac-drbg "^1.0.1" node-fetch "^2.6.1" - redux "^3.6.0" - redux-keto "^0.3.4" + redux "^4.2.0" + redux-keto "^0.3.5" redux-pixies "^0.3.6" rfc4648 "^1.4.0" scrypt-js "^2.0.3" @@ -4318,11 +4318,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash-es@^4.2.1: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -4368,7 +4363,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.15, lodash@^4.17.21, lodash@^4.2.1: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4398,7 +4393,7 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -5271,25 +5266,22 @@ rechoir@^0.7.0: dependencies: resolve "^1.9.0" -redux-keto@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/redux-keto/-/redux-keto-0.3.4.tgz#1bf78a36736dc181dd419b10e57116dea17fa3a5" - integrity sha512-16q/QujMkv+zdsVRExJuGbl6grXZLoRakBbQR5E9DmEAPIeJoXtjmc6L3bCMUVjBfF+0XFQyJDZwjhS2guh+ng== +redux-keto@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/redux-keto/-/redux-keto-0.3.5.tgz#dc87f93483d134d0dc3693dc052374901c6f9a69" + integrity sha512-TcFK6zefcBMRjRGBEjmQOGjG7nLxKsKUY8ZPbm/qHLlP9HPXZFhJI1TB5uTuRka0l3JP7yyhn1qMGhsRyM/djg== redux-pixies@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/redux-pixies/-/redux-pixies-0.3.6.tgz#b2ea20a559ba9238a020f0f329afe7e6abf18e4c" integrity sha512-RXOEaCKEWa2/qTnUX3GZdziVkgCK1CgzPb739Un/fl2Tam+fJo0MOmyqhxewsz+bj0GaqzYfxIJaaNvEKGL/Yg== -redux@^3.6.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== +redux@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" + "@babel/runtime" "^7.9.2" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -5303,6 +5295,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -5911,11 +5908,6 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -symbol-observable@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - table@^6.0.4: version "6.0.9" resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb"