mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 01:39:44 +01:00
End-to-end test state fixtures (#7663)
* Add network store for testing An alternative persistent state store has been created for use with e2e tests. Instead of reading state from disk, it tries to load state from a local fixture server running on port `12345` and serving state from the path `/state.json`, and returns a blank state otherwise. * Add e2e test fixture server A fixture server has been added for serving background state, which the background will read upon startup as part of restoring persisted state. The `signature-request` e2e test has been updated to use a fixture to bypass the registration step. The fixture used (`imported-account`) was generated by pausing midway through that test run
This commit is contained in:
parent
34b674c3d7
commit
eadeaa7883
@ -15,6 +15,7 @@ const pump = require('pump')
|
||||
const debounce = require('debounce-stream')
|
||||
const log = require('loglevel')
|
||||
const extension = require('extensionizer')
|
||||
const ReadOnlyNetworkStore = require('./lib/network-store')
|
||||
const LocalStore = require('./lib/local-store')
|
||||
const storeTransform = require('obs-store/lib/transform')
|
||||
const asStream = require('obs-store/lib/asStream')
|
||||
@ -60,7 +61,10 @@ const openMetamaskTabsIDs = {}
|
||||
const requestAccountTabIds = {}
|
||||
|
||||
// state persistence
|
||||
const localStore = new LocalStore()
|
||||
const inTest = process.env.IN_TEST === 'true'
|
||||
const localStore = inTest
|
||||
? new ReadOnlyNetworkStore()
|
||||
: new LocalStore()
|
||||
let versionedData
|
||||
|
||||
// initialization flow
|
||||
|
62
app/scripts/lib/network-store.js
Normal file
62
app/scripts/lib/network-store.js
Normal file
@ -0,0 +1,62 @@
|
||||
const log = require('loglevel')
|
||||
|
||||
const FIXTURE_SERVER_HOST = 'localhost'
|
||||
const FIXTURE_SERVER_PORT = 12345
|
||||
const FIXTURE_SERVER_URL = `http://${FIXTURE_SERVER_HOST}:${FIXTURE_SERVER_PORT}/state.json`
|
||||
|
||||
/**
|
||||
* A read-only network-based storage wrapper
|
||||
*/
|
||||
class ReadOnlyNetworkStore {
|
||||
constructor () {
|
||||
this._initialized = false
|
||||
this._initializing = this._init()
|
||||
this._state = undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* Declares this store as compatible with the current browser
|
||||
*/
|
||||
isSupported = true
|
||||
|
||||
/**
|
||||
* Initializes by loading state from the network
|
||||
*/
|
||||
async _init () {
|
||||
try {
|
||||
const response = await fetch(FIXTURE_SERVER_URL)
|
||||
if (response.ok) {
|
||||
this._state = await response.json()
|
||||
}
|
||||
} catch (error) {
|
||||
log.debug(`Error loading network state: '${error.message}'`)
|
||||
} finally {
|
||||
this._initialized = true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns state
|
||||
* @return {Promise<object>}
|
||||
*/
|
||||
async get () {
|
||||
if (!this._initialized) {
|
||||
await this._initializing
|
||||
}
|
||||
return this._state
|
||||
}
|
||||
|
||||
/**
|
||||
* Set state
|
||||
* @param {object} state - The state to set
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
async set (state) {
|
||||
if (!this._initialized) {
|
||||
await this._initializing
|
||||
}
|
||||
this._state = state
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ReadOnlyNetworkStore
|
@ -259,6 +259,7 @@
|
||||
"karma-cli": "^1.0.1",
|
||||
"karma-firefox-launcher": "^1.0.1",
|
||||
"karma-qunit": "^1.2.1",
|
||||
"koa": "^2.7.0",
|
||||
"lodash.assign": "^4.0.6",
|
||||
"mocha": "^5.0.0",
|
||||
"mocha-eslint": "^4.0.0",
|
||||
|
74
test/e2e/fixture-server.js
Normal file
74
test/e2e/fixture-server.js
Normal file
@ -0,0 +1,74 @@
|
||||
const fs = require('fs').promises
|
||||
const Koa = require('koa')
|
||||
const path = require('path')
|
||||
|
||||
const CURRENT_STATE_KEY = '__CURRENT__'
|
||||
const DEFAULT_STATE_KEY = '__DEFAULT__'
|
||||
|
||||
const FIXTURE_SERVER_HOST = 'localhost'
|
||||
const FIXTURE_SERVER_PORT = 12345
|
||||
|
||||
class FixtureServer {
|
||||
constructor () {
|
||||
this._app = new Koa()
|
||||
this._stateMap = new Map([
|
||||
[DEFAULT_STATE_KEY, Object.create(null)],
|
||||
])
|
||||
this._initialStateCache = new Map()
|
||||
|
||||
this._app.use(async (ctx) => {
|
||||
// Firefox is _super_ strict about needing CORS headers
|
||||
ctx.set('Access-Control-Allow-Origin', '*')
|
||||
if (this._isStateRequest(ctx)) {
|
||||
ctx.body = this._stateMap.get(CURRENT_STATE_KEY)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async start () {
|
||||
const options = {
|
||||
host: FIXTURE_SERVER_HOST,
|
||||
port: FIXTURE_SERVER_PORT,
|
||||
exclusive: true,
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
this._server = this._app.listen(options)
|
||||
this._server.once('error', reject)
|
||||
this._server.once('listening', resolve)
|
||||
})
|
||||
}
|
||||
|
||||
async stop () {
|
||||
if (!this._server) {
|
||||
return
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
this._server.close()
|
||||
this._server.once('error', reject)
|
||||
this._server.once('close', resolve)
|
||||
})
|
||||
}
|
||||
|
||||
async loadState (directory) {
|
||||
const statePath = path.resolve(__dirname, directory, 'state.json')
|
||||
|
||||
let state
|
||||
if (this._initialStateCache.has(statePath)) {
|
||||
state = this._initialStateCache.get(statePath)
|
||||
} else {
|
||||
const data = await fs.readFile(statePath)
|
||||
state = JSON.parse(data.toString('utf-8'))
|
||||
this._initialStateCache.set(statePath, state)
|
||||
}
|
||||
|
||||
this._stateMap.set(CURRENT_STATE_KEY, state)
|
||||
}
|
||||
|
||||
_isStateRequest (ctx) {
|
||||
return ctx.method === 'GET' && ctx.path === '/state.json'
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = FixtureServer
|
36
test/e2e/fixtures/README.md
Normal file
36
test/e2e/fixtures/README.md
Normal file
@ -0,0 +1,36 @@
|
||||
# End-to-end tests
|
||||
|
||||
This directory contains the fixture data used to bootstrap the individual e2e tests. Each sub-directory contains
|
||||
one thing:
|
||||
|
||||
1. A `state.json` file that represents a the saved state for the extension (see _Generating fixture data_ below)
|
||||
|
||||
## Generating fixture data
|
||||
|
||||
Fixture data can be generated by loading the unpacked extension, inspecting the background context,
|
||||
dumping `chrome.storage.local`, and using [`copy`][1] to copy it to the clipboard, and manually pasting the contents into
|
||||
a file on disk.
|
||||
|
||||
```js
|
||||
// Step 1:
|
||||
chrome.storage.local.get(null, (x) => console.log(x))
|
||||
// Should print something like:
|
||||
// > temp1
|
||||
// > {data: {…}, meta: {…}}
|
||||
|
||||
// Step 2:
|
||||
// Store the value as a global via the 'Store as global variable' option in context menu (shown below)
|
||||
|
||||
// Step 3:
|
||||
copy(temp1)
|
||||
```
|
||||
|
||||
Store the value as a global variable:
|
||||
|
||||
<img
|
||||
width="840"
|
||||
alt="Store as global variable"
|
||||
src="https://user-images.githubusercontent.com/1623628/60987884-1a2c4a00-a31d-11e9-932e-b7fab452e6bd.png"
|
||||
/>
|
||||
|
||||
[1]:https://developers.google.com/web/tools/chrome-devtools/console/utilities
|
124
test/e2e/fixtures/imported-account/state.json
Normal file
124
test/e2e/fixtures/imported-account/state.json
Normal file
@ -0,0 +1,124 @@
|
||||
{
|
||||
"data": {
|
||||
"AppStateController": {
|
||||
"mkrMigrationReminderTimestamp": null
|
||||
},
|
||||
"CachedBalancesController": {
|
||||
"cachedBalances": {
|
||||
"4": {}
|
||||
}
|
||||
},
|
||||
"CurrencyController": {
|
||||
"conversionDate": 1575697244.188,
|
||||
"conversionRate": 149.61,
|
||||
"currentCurrency": "usd",
|
||||
"nativeCurrency": "ETH"
|
||||
},
|
||||
"IncomingTransactionsController": {
|
||||
"incomingTransactions": {},
|
||||
"incomingTxLastFetchedBlocksByNetwork": {
|
||||
"goerli": null,
|
||||
"kovan": null,
|
||||
"mainnet": null,
|
||||
"rinkeby": 5570536
|
||||
}
|
||||
},
|
||||
"KeyringController": {
|
||||
"vault": "{\"data\":\"s6TpYjlUNsn7ifhEFTkuDGBUM1GyOlPrim7JSjtfIxgTt8/6MiXgiR/CtFfR4dWW2xhq85/NGIBYEeWrZThGdKGarBzeIqBfLFhw9n509jprzJ0zc2Rf+9HVFGLw+xxC4xPxgCS0IIWeAJQ+XtGcHmn0UZXriXm8Ja4kdlow6SWinB7sr/WM3R0+frYs4WgllkwggDf2/Tv6VHygvLnhtzp6hIJFyTjh+l/KnyJTyZW1TkZhDaNDzX3SCOHT\",\"iv\":\"FbeHDAW5afeWNORfNJBR0Q==\",\"salt\":\"TxZ+WbCW6891C9LK/hbMAoUsSEW1E8pyGLVBU6x5KR8=\"}"
|
||||
},
|
||||
"NetworkController": {
|
||||
"network": "3",
|
||||
"provider": {
|
||||
"nickname": "",
|
||||
"rpcTarget": "",
|
||||
"ticker": "ETH",
|
||||
"type": "ropsten"
|
||||
},
|
||||
"settings": {
|
||||
"ticker": "ETH"
|
||||
}
|
||||
},
|
||||
"OnboardingController": {
|
||||
"onboardingTabs": {},
|
||||
"seedPhraseBackedUp": false
|
||||
},
|
||||
"PermissionsMetadata": {
|
||||
"domainMetadata": {
|
||||
"metamask.github.io": {
|
||||
"icon": null,
|
||||
"name": "M E T A M A S K M E S H T E S T"
|
||||
}
|
||||
},
|
||||
"permissionsHistory": {},
|
||||
"permissionsLog": [
|
||||
{
|
||||
"id": 746677923,
|
||||
"method": "eth_accounts",
|
||||
"methodType": "restricted",
|
||||
"origin": "metamask.github.io",
|
||||
"request": {
|
||||
"id": 746677923,
|
||||
"jsonrpc": "2.0",
|
||||
"method": "eth_accounts",
|
||||
"origin": "metamask.github.io",
|
||||
"params": []
|
||||
},
|
||||
"requestTime": 1575697241368,
|
||||
"response": {
|
||||
"id": 746677923,
|
||||
"jsonrpc": "2.0",
|
||||
"result": []
|
||||
},
|
||||
"responseTime": 1575697241370,
|
||||
"success": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"PreferencesController": {
|
||||
"accountTokens": {
|
||||
"0x5cfe73b6021e818b776b421b1c4db2474086a7e1": {
|
||||
"rinkeby": [],
|
||||
"ropsten": []
|
||||
}
|
||||
},
|
||||
"assetImages": {},
|
||||
"completedOnboarding": true,
|
||||
"currentAccountTab": "history",
|
||||
"currentLocale": "en",
|
||||
"featureFlags": {
|
||||
"showIncomingTransactions": true,
|
||||
"transactionTime": false
|
||||
},
|
||||
"firstTimeFlowType": "create",
|
||||
"forgottenPassword": false,
|
||||
"frequentRpcListDetail": [],
|
||||
"identities": {
|
||||
"0x5cfe73b6021e818b776b421b1c4db2474086a7e1": {
|
||||
"address": "0x5cfe73b6021e818b776b421b1c4db2474086a7e1",
|
||||
"name": "Account 1"
|
||||
}
|
||||
},
|
||||
"knownMethodData": {},
|
||||
"lostIdentities": {},
|
||||
"metaMetricsId": null,
|
||||
"metaMetricsSendCount": 0,
|
||||
"participateInMetaMetrics": false,
|
||||
"preferences": {
|
||||
"useNativeCurrencyAsPrimaryCurrency": true
|
||||
},
|
||||
"selectedAddress": "0x5cfe73b6021e818b776b421b1c4db2474086a7e1",
|
||||
"suggestedTokens": {},
|
||||
"tokens": [],
|
||||
"useBlockie": false,
|
||||
"useNonceField": false
|
||||
},
|
||||
"config": {},
|
||||
"firstTimeInfo": {
|
||||
"date": 1575697234195,
|
||||
"version": "7.7.0"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"version": 40
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
const assert = require('assert')
|
||||
const path = require('path')
|
||||
const webdriver = require('selenium-webdriver')
|
||||
const { By, until } = webdriver
|
||||
const { By, Key, until } = webdriver
|
||||
const {
|
||||
checkBrowserForConsoleErrors,
|
||||
delay,
|
||||
@ -14,7 +15,9 @@ const {
|
||||
prepareExtensionForTesting,
|
||||
} = require('./helpers')
|
||||
const Ganache = require('./ganache')
|
||||
const enLocaleMessages = require('../../app/_locales/en/messages.json')
|
||||
const FixtureServer = require('./fixture-server')
|
||||
|
||||
const fixtureServer = new FixtureServer()
|
||||
|
||||
const ganacheServer = new Ganache()
|
||||
|
||||
@ -31,6 +34,9 @@ describe('MetaMask', function () {
|
||||
|
||||
before(async function () {
|
||||
await ganacheServer.start()
|
||||
await fixtureServer.start()
|
||||
await fixtureServer.loadState(path.join(__dirname, 'fixtures', 'imported-account'))
|
||||
publicAddress = '0x5cfe73b6021e818b776b421b1c4db2474086a7e1'
|
||||
const result = await prepareExtensionForTesting()
|
||||
driver = result.driver
|
||||
await setupFetchMocking(driver)
|
||||
@ -52,82 +58,23 @@ describe('MetaMask', function () {
|
||||
|
||||
after(async function () {
|
||||
await ganacheServer.quit()
|
||||
await fixtureServer.stop()
|
||||
await driver.quit()
|
||||
})
|
||||
|
||||
describe('Going through the first time flow, but skipping the seed phrase challenge', () => {
|
||||
it('clicks the continue button on the welcome screen', async () => {
|
||||
await findElement(driver, By.css('.welcome-page__header'))
|
||||
const welcomeScreenBtn = await findElement(driver, By.xpath(`//button[contains(text(), '${enLocaleMessages.getStarted.message}')]`))
|
||||
welcomeScreenBtn.click()
|
||||
await delay(largeDelayMs)
|
||||
})
|
||||
|
||||
it('clicks the "Create New Wallet" option', async () => {
|
||||
const customRpcButton = await findElement(driver, By.xpath(`//button[contains(text(), 'Create a Wallet')]`))
|
||||
customRpcButton.click()
|
||||
await delay(largeDelayMs)
|
||||
})
|
||||
|
||||
it('clicks the "No thanks" option on the metametrics opt-in screen', async () => {
|
||||
const optOutButton = await findElement(driver, By.css('.btn-default'))
|
||||
optOutButton.click()
|
||||
await delay(largeDelayMs)
|
||||
})
|
||||
|
||||
it('accepts a secure password', async () => {
|
||||
const passwordBox = await findElement(driver, By.css('.first-time-flow__form #create-password'))
|
||||
const passwordBoxConfirm = await findElement(driver, By.css('.first-time-flow__form #confirm-password'))
|
||||
const button = await findElement(driver, By.css('.first-time-flow__form button'))
|
||||
|
||||
await passwordBox.sendKeys('correct horse battery staple')
|
||||
await passwordBoxConfirm.sendKeys('correct horse battery staple')
|
||||
|
||||
const tosCheckBox = await findElement(driver, By.css('.first-time-flow__checkbox'))
|
||||
await tosCheckBox.click()
|
||||
|
||||
await button.click()
|
||||
await delay(largeDelayMs)
|
||||
})
|
||||
|
||||
it('skips the seed phrase challenge', async () => {
|
||||
const button = await findElement(driver, By.xpath(`//button[contains(text(), '${enLocaleMessages.remindMeLater.message}')]`))
|
||||
await button.click()
|
||||
await delay(regularDelayMs)
|
||||
|
||||
const detailsButton = await findElement(driver, By.css('.account-details__details-button'))
|
||||
await detailsButton.click()
|
||||
await delay(regularDelayMs)
|
||||
})
|
||||
|
||||
it('gets the current accounts address', async () => {
|
||||
const addressInput = await findElement(driver, By.css('.qr-ellip-address'))
|
||||
publicAddress = (await addressInput.getAttribute('value')).toLowerCase()
|
||||
const accountModal = await driver.findElement(By.css('span .modal'))
|
||||
|
||||
await driver.executeScript("document.querySelector('.account-modal-close').click()")
|
||||
|
||||
await driver.wait(until.stalenessOf(accountModal))
|
||||
await delay(regularDelayMs)
|
||||
})
|
||||
|
||||
it('changes the network', async () => {
|
||||
const networkDropdown = await findElement(driver, By.css('.network-name'))
|
||||
await networkDropdown.click()
|
||||
await delay(regularDelayMs)
|
||||
|
||||
const ropstenButton = await findElement(driver, By.xpath(`//span[contains(text(), 'Ropsten')]`))
|
||||
await ropstenButton.click()
|
||||
await delay(largeDelayMs)
|
||||
})
|
||||
})
|
||||
|
||||
describe('successfuly signs typed data', () => {
|
||||
let extension
|
||||
let popup
|
||||
let dapp
|
||||
let windowHandles
|
||||
|
||||
it('accepts the account password after lock', async () => {
|
||||
await delay(1000)
|
||||
await driver.findElement(By.id('password')).sendKeys('correct horse battery staple')
|
||||
await driver.findElement(By.id('password')).sendKeys(Key.ENTER)
|
||||
await delay(largeDelayMs * 4)
|
||||
})
|
||||
|
||||
it('connects to the dapp', async () => {
|
||||
await openNewPage(driver, 'http://127.0.0.1:8080/')
|
||||
await delay(regularDelayMs)
|
||||
|
184
yarn.lock
184
yarn.lock
@ -3319,6 +3319,14 @@ abstract-logging@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-1.0.0.tgz#8b7deafd310559bc28f77724dd1bb30177278c1b"
|
||||
integrity sha1-i33q/TEFWbwo93ck3RuzAXcnjBs=
|
||||
|
||||
accepts@^1.3.5, accepts@~1.3.7:
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
|
||||
dependencies:
|
||||
mime-types "~2.1.24"
|
||||
negotiator "0.6.2"
|
||||
|
||||
accepts@~1.3.4:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
|
||||
@ -3327,14 +3335,6 @@ accepts@~1.3.4:
|
||||
mime-types "~2.1.16"
|
||||
negotiator "0.6.1"
|
||||
|
||||
accepts@~1.3.7:
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
|
||||
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
|
||||
dependencies:
|
||||
mime-types "~2.1.24"
|
||||
negotiator "0.6.2"
|
||||
|
||||
accounting@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/accounting/-/accounting-0.4.1.tgz#87dd4103eff7f4460f1e186f5c677ed6cf566883"
|
||||
@ -3794,7 +3794,7 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
|
||||
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
|
||||
|
||||
any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0:
|
||||
any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.1.0, any-promise@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
|
||||
@ -6367,6 +6367,14 @@ cache-base@^1.0.1:
|
||||
union-value "^1.0.0"
|
||||
unset-value "^1.0.0"
|
||||
|
||||
cache-content-type@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c"
|
||||
integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==
|
||||
dependencies:
|
||||
mime-types "^2.1.18"
|
||||
ylru "^1.2.0"
|
||||
|
||||
cacheable-request@^2.1.1:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d"
|
||||
@ -7398,7 +7406,7 @@ content-disposition@0.5.2:
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
|
||||
integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
|
||||
|
||||
content-disposition@0.5.3, content-disposition@^0.5.2:
|
||||
content-disposition@0.5.3, content-disposition@^0.5.2, content-disposition@~0.5.2:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
|
||||
integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
|
||||
@ -7419,7 +7427,7 @@ content-type-parser@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
|
||||
integrity sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==
|
||||
|
||||
content-type@~1.0.4:
|
||||
content-type@^1.0.4, content-type@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
|
||||
@ -7471,6 +7479,14 @@ cookiejar@^2.1.0, cookiejar@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
|
||||
integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==
|
||||
|
||||
cookies@~0.8.0:
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90"
|
||||
integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==
|
||||
dependencies:
|
||||
depd "~2.0.0"
|
||||
keygrip "~1.1.0"
|
||||
|
||||
copy-concurrently@^1.0.0:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
|
||||
@ -8643,11 +8659,16 @@ depd@1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
|
||||
integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=
|
||||
|
||||
depd@~1.1.2:
|
||||
depd@^1.1.2, depd@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
|
||||
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
|
||||
|
||||
depd@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
||||
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
||||
|
||||
deprecated-decorator@^0.1.6:
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
|
||||
@ -8691,7 +8712,7 @@ des.js@^1.0.0:
|
||||
inherits "^2.0.1"
|
||||
minimalistic-assert "^1.0.0"
|
||||
|
||||
destroy@~1.0.4:
|
||||
destroy@^1.0.4, destroy@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
|
||||
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
|
||||
@ -9346,7 +9367,7 @@ emotion-theming@^10.0.9:
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
encodeurl@~1.0.2:
|
||||
encodeurl@^1.0.2, encodeurl@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
|
||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
||||
@ -9599,6 +9620,11 @@ error-ex@^1.2.0, error-ex@^1.3.1:
|
||||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
error-inject@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
|
||||
integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=
|
||||
|
||||
error@^7.0.0:
|
||||
version "7.0.2"
|
||||
resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02"
|
||||
@ -12126,7 +12152,7 @@ fragment-cache@^0.2.1:
|
||||
dependencies:
|
||||
map-cache "^0.2.2"
|
||||
|
||||
fresh@0.5.2:
|
||||
fresh@0.5.2, fresh@~0.5.2:
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
|
||||
@ -13853,6 +13879,14 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1:
|
||||
inherits "^2.0.1"
|
||||
readable-stream "^2.0.2"
|
||||
|
||||
http-assert@^1.3.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878"
|
||||
integrity sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw==
|
||||
dependencies:
|
||||
deep-equal "~1.0.1"
|
||||
http-errors "~1.7.2"
|
||||
|
||||
http-cache-semantics@3.8.1:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
|
||||
@ -13884,6 +13918,17 @@ http-errors@1.7.2, http-errors@~1.7.2:
|
||||
statuses ">= 1.5.0 < 2"
|
||||
toidentifier "1.0.0"
|
||||
|
||||
http-errors@^1.6.3:
|
||||
version "1.7.3"
|
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
|
||||
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
|
||||
dependencies:
|
||||
depd "~1.1.2"
|
||||
inherits "2.0.4"
|
||||
setprototypeof "1.1.1"
|
||||
statuses ">= 1.5.0 < 2"
|
||||
toidentifier "1.0.0"
|
||||
|
||||
http-https@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b"
|
||||
@ -14249,7 +14294,7 @@ inherits@2.0.1, inherits@=2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
|
||||
integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
|
||||
|
||||
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
|
||||
inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
@ -15233,6 +15278,11 @@ is-function@^1.0.1, is-function@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
|
||||
integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=
|
||||
|
||||
is-generator-function@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522"
|
||||
integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==
|
||||
|
||||
is-gif@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1"
|
||||
@ -16450,6 +16500,13 @@ keycode@^2.1.9:
|
||||
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
|
||||
integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=
|
||||
|
||||
keygrip@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226"
|
||||
integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==
|
||||
dependencies:
|
||||
tsscmp "1.0.6"
|
||||
|
||||
keypair@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.1.tgz#7603719270afb6564ed38a22087a06fc9aa4ea1b"
|
||||
@ -16546,6 +16603,56 @@ known-css-properties@^0.11.0:
|
||||
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a"
|
||||
integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==
|
||||
|
||||
koa-compose@^3.0.0:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7"
|
||||
integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=
|
||||
dependencies:
|
||||
any-promise "^1.1.0"
|
||||
|
||||
koa-compose@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877"
|
||||
integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==
|
||||
|
||||
koa-convert@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0"
|
||||
integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=
|
||||
dependencies:
|
||||
co "^4.6.0"
|
||||
koa-compose "^3.0.0"
|
||||
|
||||
koa@^2.7.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/koa/-/koa-2.11.0.tgz#fe5a51c46f566d27632dd5dc8fd5d7dd44f935a4"
|
||||
integrity sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==
|
||||
dependencies:
|
||||
accepts "^1.3.5"
|
||||
cache-content-type "^1.0.0"
|
||||
content-disposition "~0.5.2"
|
||||
content-type "^1.0.4"
|
||||
cookies "~0.8.0"
|
||||
debug "~3.1.0"
|
||||
delegates "^1.0.0"
|
||||
depd "^1.1.2"
|
||||
destroy "^1.0.4"
|
||||
encodeurl "^1.0.2"
|
||||
error-inject "^1.0.0"
|
||||
escape-html "^1.0.3"
|
||||
fresh "~0.5.2"
|
||||
http-assert "^1.3.0"
|
||||
http-errors "^1.6.3"
|
||||
is-generator-function "^1.0.7"
|
||||
koa-compose "^4.1.0"
|
||||
koa-convert "^1.2.0"
|
||||
on-finished "^2.3.0"
|
||||
only "~0.0.2"
|
||||
parseurl "^1.3.2"
|
||||
statuses "^1.5.0"
|
||||
type-is "^1.6.16"
|
||||
vary "^1.1.2"
|
||||
|
||||
labeled-stream-splicer@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926"
|
||||
@ -18466,6 +18573,11 @@ mime-db@1.40.0, mime-db@1.x.x:
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
|
||||
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
|
||||
|
||||
mime-db@1.42.0:
|
||||
version "1.42.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
|
||||
integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
|
||||
|
||||
mime-db@^1.28.0:
|
||||
version "1.41.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.41.0.tgz#9110408e1f6aa1b34aef51f2c9df3caddf46b6a0"
|
||||
@ -18502,6 +18614,13 @@ mime-types@^2.1.16:
|
||||
dependencies:
|
||||
mime-db "~1.38.0"
|
||||
|
||||
mime-types@^2.1.18:
|
||||
version "2.1.25"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
|
||||
integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
|
||||
dependencies:
|
||||
mime-db "1.42.0"
|
||||
|
||||
mime@1.6.0, mime@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||
@ -19900,7 +20019,7 @@ offset-sourcemap-lines@^1.0.1:
|
||||
dependencies:
|
||||
source-map "^0.5.0"
|
||||
|
||||
on-finished@~2.3.0:
|
||||
on-finished@^2.3.0, on-finished@~2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
|
||||
@ -19931,6 +20050,11 @@ onetime@^2.0.0:
|
||||
dependencies:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
only@~0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
||||
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
|
||||
|
||||
open@^6.1.0:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-6.3.0.tgz#60d0b845ee38fae0631f5d739a21bd40e3d2a527"
|
||||
@ -20590,16 +20714,16 @@ parseuri@0.0.5:
|
||||
dependencies:
|
||||
better-assert "~1.0.0"
|
||||
|
||||
parseurl@^1.3.2, parseurl@~1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
parseurl@~1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
|
||||
integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
|
||||
|
||||
parseurl@~1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
pascalcase@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
|
||||
@ -25265,7 +25389,7 @@ static-module@^2.2.0:
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
|
||||
integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
|
||||
|
||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
||||
"statuses@>= 1.5.0 < 2", statuses@^1.5.0, statuses@~1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
|
||||
@ -26765,6 +26889,11 @@ tslib@^1.9.0, tslib@^1.9.3:
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
|
||||
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
|
||||
|
||||
tsscmp@1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
|
||||
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
|
||||
|
||||
tty-browserify@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||
@ -26829,7 +26958,7 @@ type-fest@^0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
|
||||
integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
|
||||
|
||||
type-is@~1.6.17, type-is@~1.6.18:
|
||||
type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18:
|
||||
version "1.6.18"
|
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
|
||||
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
|
||||
@ -27477,7 +27606,7 @@ varuint-bitcoin@^1.0.4:
|
||||
dependencies:
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
vary@^1, vary@~1.1.2:
|
||||
vary@^1, vary@^1.1.2, vary@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
|
||||
@ -28730,6 +28859,11 @@ yeast@0.1.2:
|
||||
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
|
||||
integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
|
||||
|
||||
ylru@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"
|
||||
integrity sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==
|
||||
|
||||
zcash-bitcore-lib@~0.13.20-rc3:
|
||||
version "0.13.20-rc3"
|
||||
resolved "https://registry.yarnpkg.com/zcash-bitcore-lib/-/zcash-bitcore-lib-0.13.20-rc3.tgz#813a0f56dcf8b76bc1429951bea6d1236c507008"
|
||||
|
Loading…
Reference in New Issue
Block a user