├── .eslintignore ├── .eslintrc.js ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug-report.md │ └── feature_request.md ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── docs ├── ethcc-2019-presentation-slides.pdf ├── kalis-me-tutorial-code │ ├── .env.example │ ├── contracts │ │ ├── .gitkeep │ │ ├── Casino.sol │ │ └── Migrations.sol │ ├── migrations │ │ └── 1_initial_migration.js │ ├── package.json │ ├── test │ │ ├── test-events.test.js │ │ └── test-reverts.test.js │ ├── truffle-config.js │ └── yarn.lock └── trufflecon-2018-presentation-slides.pdf ├── index.js ├── package.json ├── test ├── events.test.js ├── failures.test.js └── fixture │ ├── truffleV4loseResult.json │ ├── truffleV4rouletteArtifacts.json │ └── truffleV4winResult.json └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "env": { 3 | "mocha": true, 4 | }, 5 | "extends": "airbnb-base", 6 | "rules": { 7 | "no-console": "off", 8 | "no-prototype-builtins": "off" 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [rkalis] 4 | custom: ['https://gitcoin.co/grants/259/rosco-kalis'] 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a bug report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **Example test code** 11 | A link to a repository / test file that includes this bug. Alternatively, provide the example code inline. Where possible, also include example smart contract code to go with it. 12 | 13 | **Expected behavior** 14 | A clear and concise description of what you expected to happen. 15 | 16 | **Environment Information** 17 | Truffle version: x.x 18 | Web3 version: x.x 19 | truffle-assertions version: x.x 20 | (ganache-cli version: x.x) 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem?** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context about the feature request here. 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "8" 5 | - "10" 6 | 7 | script: 8 | - npm run test 9 | - npm run lint 10 | 11 | after_success: 12 | - npm run coverage 13 | 14 | notifications: 15 | email: 16 | roscokalis+travis@gmail.com 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Rosco Kalis 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ⚠️ Truffle (and truffle-assertions) has been sunset. It is recommended to move over to Hardhat or Foundry ⚠️ 2 | 3 | # truffle-assertions 4 | 5 | [![Coverage Status](https://img.shields.io/codecov/c/github/rkalis/truffle-assertions.svg)](https://codecov.io/gh/rkalis/truffle-assertions/) 6 | [![NPM Version](https://img.shields.io/npm/v/truffle-assertions.svg)](https://www.npmjs.com/package/truffle-assertions) 7 | [![NPM Monthly Downloads](https://img.shields.io/npm/dm/truffle-assertions.svg)](https://www.npmjs.com/package/truffle-assertions) 8 | [![NPM License](https://img.shields.io/npm/l/truffle-assertions.svg)](https://www.npmjs.com/package/truffle-assertions) 9 | 10 | This package adds additional assertions that can be used to test Ethereum smart contracts inside Truffle tests. 11 | 12 | ## Installation 13 | truffle-assertions can be installed through npm: 14 | ```bash 15 | npm install truffle-assertions 16 | ``` 17 | 18 | ## Usage 19 | To use this package, import it at the top of the Truffle test file, and use the functions that are documented below. 20 | ```javascript 21 | const truffleAssert = require('truffle-assertions'); 22 | ``` 23 | 24 | ## Tutorials 25 | I wrote two tutorials on using this library for checking events and asserting reverts inside smart contract tests: 26 | * [Checking events when testing Solidity smart contracts with Truffle](https://kalis.me/check-events-solidity-smart-contract-test-truffle/) 27 | * [Asserting reverts when testing Solidity smart contracts with Truffle](https://kalis.me/assert-reverts-solidity-smart-contract-test-truffle/) 28 | 29 | I also gave a two talks that explain a few different use cases of the library: 30 | * [TruffleCon 2018: Using events to unit test smart contracts with Truffle](https://youtu.be/0yjlU1vx0HM) ([Slides](/docs/trufflecon-2018-presentation-slides.pdf)) 31 | * [EthCC 2019: Using events to unit test smart contracts](https://youtu.be/GON3qyFdUtE) ([Slides](/docs/ethcc-2019-presentation-slides.pdf)) 32 | 33 | ## Exported functions 34 | 35 | ### truffleAssert.eventEmitted(result, eventType\[, filter]\[, message]) 36 | The `eventEmitted` assertion checks that an event with type `eventType` has been emitted by the transaction with result `result`. A filter function can be passed along to further specify requirements for the event arguments: 37 | 38 | ```javascript 39 | truffleAssert.eventEmitted(result, 'TestEvent', (ev) => { 40 | return ev.param1 === 10 && ev.param2 === ev.param3; 41 | }); 42 | ``` 43 | 44 | Alternatively, a filter object can be passed in place of a function. If an object is passed, this object will be matched against the event's arguments. This object does not need to include all the event's arguments; only the included ones will be used in the comparison. 45 | 46 | ```javascript 47 | truffleAssert.eventEmitted(result, 'TestEvent', { param1: 10, param2: 20 }); 48 | ``` 49 | 50 | When the `filter` parameter is omitted or set to null, the assertion checks just for event type: 51 | 52 | ```javascript 53 | truffleAssert.eventEmitted(result, 'TestEvent'); 54 | ``` 55 | 56 | Optionally, a custom message can be passed to the assertion, which will be displayed alongside the default one: 57 | 58 | ```javascript 59 | truffleAssert.eventEmitted(result, 'TestEvent', (ev) => { 60 | return ev.param1 === 10 && ev.param2 === ev.param3; 61 | }, 'TestEvent should be emitted with correct parameters'); 62 | ``` 63 | 64 | The default messages are 65 | ```javascript 66 | `Event of type ${eventType} was not emitted` 67 | `Event filter for ${eventType} returned no results` 68 | ``` 69 | Depending on the reason for the assertion failure. The default message also includes a list of events that were emitted in the passed transaction. 70 | 71 | --- 72 | 73 | ### truffleAssert.eventNotEmitted(result, eventType\[, filter]\[, message]) 74 | The `eventNotEmitted` assertion checks that an event with type `eventType` has not been emitted by the transaction with result `result`. A filter function can be passed along to further specify requirements for the event arguments: 75 | 76 | ```javascript 77 | truffleAssert.eventNotEmitted(result, 'TestEvent', (ev) => { 78 | return ev.param1 === 10 && ev.param2 === ev.param3; 79 | }); 80 | ``` 81 | 82 | Alternatively, a filter object can be passed in place of a function. If an object is passed, this object will be matched against the event's arguments. This object does not need to include all the event's arguments; only the included ones will be used in the comparison. 83 | 84 | ```javascript 85 | truffleAssert.eventNotEmitted(result, 'TestEvent', { param1: 10, param2: 20 }); 86 | ``` 87 | 88 | When the `filter` parameter is omitted or set to null, the assertion checks just for event type: 89 | 90 | ```javascript 91 | truffleAssert.eventNotEmitted(result, 'TestEvent'); 92 | ``` 93 | 94 | Optionally, a custom message can be passed to the assertion, which will be displayed alongside the default one: 95 | 96 | ```javascript 97 | truffleAssert.eventNotEmitted(result, 'TestEvent', null, 'TestEvent should not be emitted'); 98 | ``` 99 | 100 | The default messages are 101 | ```javascript 102 | `Event of type ${eventType} was emitted` 103 | `Event filter for ${eventType} returned results` 104 | ``` 105 | Depending on the reason for the assertion failure. The default message also includes a list of events that were emitted in the passed transaction. 106 | 107 | --- 108 | 109 | ### truffleAssert.prettyPrintEmittedEvents(result) 110 | Pretty prints the full list of events with their parameters, that were emitted in transaction with result `result` 111 | 112 | ```javascript 113 | truffleAssert.prettyPrintEmittedEvents(result); 114 | ``` 115 | ``` 116 | Events emitted in tx 0x7da28cf2bd52016ee91f10ec711edd8aa2716aac3ed453b0def0af59991d5120: 117 | ---------------------------------------------------------------------------------------- 118 | TestEvent(testAddress = 0xe04893f0a1bdb132d66b4e7279492fcfe602f0eb, testInt: 10) 119 | ---------------------------------------------------------------------------------------- 120 | ``` 121 | 122 | --- 123 | 124 | ### truffleAssert.createTransactionResult(contract, transactionHash) 125 | There can be times where we only have access to a transaction hash, and not to a transaction result object, such as with the deployment of a new contract instance using `Contract.new();`. In these cases we still want to be able to assert that certain events are or aren't emitted. 126 | 127 | `truffle-assertions` offers the possibility to create a transaction result object from a contract instance and a transaction hash, which can then be used in the other functions that the library offers. 128 | 129 | **Note:** This function assumes that web3 is injected into the tests, which truffle does automatically. If you're not using truffle, you should import web3 manually at the top of your test file. 130 | 131 | ```javascript 132 | let contractInstance = await Contract.new(); 133 | let result = await truffleAssert.createTransactionResult(contractInstance, contractInstance.transactionHash); 134 | 135 | truffleAssert.eventEmitted(result, 'TestEvent'); 136 | ``` 137 | 138 | --- 139 | 140 | ### truffleAssert.passes(asyncFn\[, message]) 141 | Asserts that the passed async contract function does not fail. 142 | 143 | ```javascript 144 | await truffleAssert.passes( 145 | contractInstance.methodThatShouldPass() 146 | ); 147 | ``` 148 | 149 | Optionally, a custom message can be passed to the assertion, which will be displayed alongside the default one: 150 | 151 | ```javascript 152 | await truffleAssert.passes( 153 | contractInstance.methodThatShouldPass(), 154 | 'This method should not run out of gas' 155 | ); 156 | ``` 157 | 158 | The default message is 159 | ```javascript 160 | `Failed with ${error}` 161 | ``` 162 | 163 | --- 164 | 165 | ### truffleAssert.fails(asyncFn\[, errorType]\[, reason]\[, message]) 166 | Asserts that the passed async contract function fails with a certain ErrorType and reason. 167 | 168 | The different error types are defined as follows: 169 | ```javascript 170 | ErrorType = { 171 | REVERT: "revert", 172 | INVALID_OPCODE: "invalid opcode", 173 | OUT_OF_GAS: "out of gas", 174 | INVALID_JUMP: "invalid JUMP" 175 | } 176 | ``` 177 | 178 | ```javascript 179 | await truffleAssert.fails( 180 | contractInstance.methodThatShouldFail(), 181 | truffleAssert.ErrorType.OUT_OF_GAS 182 | ); 183 | ``` 184 | 185 | A reason can be passed to the assertion, which functions as an extra filter on the revert reason (note that this is only relevant in the case of revert, not for the other ErrorTypes). This functionality requires at least Truffle v0.5. 186 | 187 | ```javascript 188 | await truffleAssert.fails( 189 | contractInstance.methodThatShouldFail(), 190 | truffleAssert.ErrorType.REVERT, 191 | "only owner" 192 | ); 193 | ``` 194 | 195 | If the errorType parameter is omitted or set to null, the function just checks for failure, regardless of cause. 196 | 197 | ```javascript 198 | await truffleAssert.fails(contractInstance.methodThatShouldFail()); 199 | ``` 200 | 201 | Optionally, a custom message can be passed to the assertion, which will be displayed alongside the default one: 202 | 203 | ```javascript 204 | await truffleAssert.fails( 205 | contractInstance.methodThatShouldFail(), 206 | truffleAssert.ErrorType.OUT_OF_GAS, 207 | null, 208 | 'This method should run out of gas' 209 | ); 210 | ``` 211 | 212 | The default messages are 213 | ```javascript 214 | 'Did not fail' 215 | `Expected to fail with ${errorType}, but failed with: ${error}` 216 | ``` 217 | 218 | --- 219 | 220 | ### truffleAssert.reverts(asyncFn\[, reason]\[, message]) 221 | This is an alias for `truffleAssert.fails(asyncFn, truffleAssert.ErrorType.REVERT[, reason][, message])`. 222 | 223 | ```javascript 224 | await truffleAssert.reverts( 225 | contractInstance.methodThatShouldRevert(), 226 | "only owner" 227 | ); 228 | ``` 229 | 230 | ## Related projects 231 | 232 | * [truffle-events](https://github.com/zulhfreelancer/truffle-events) — 3rd party add-on to this project with 'deep events' support. You can test emitted events in other contracts, provided they are in the same transaction i.e. event A (contract A) and event B (contract B) are produced in the same transaction. 233 | 234 | ## Donations 235 | If you use this library inside your own projects and you would like to support its development, you can donate Ξ to `0x6775f0Ee4E63983501DBE7b0385bF84DBd36D69B`. 236 | -------------------------------------------------------------------------------- /docs/ethcc-2019-presentation-slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rkalis/truffle-assertions/305df468863722f67377c42ef5443ddc1cc0a380/docs/ethcc-2019-presentation-slides.pdf -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/.env.example: -------------------------------------------------------------------------------- 1 | INFURA_ID= 2 | MNEMONIC= 3 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/contracts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rkalis/truffle-assertions/305df468863722f67377c42ef5443ddc1cc0a380/docs/kalis-me-tutorial-code/contracts/.gitkeep -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/contracts/Casino.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.5.8; 2 | 3 | contract Casino { 4 | address payable public owner; 5 | 6 | event Play(address payable indexed player, uint256 betSize, uint8 betNumber, uint8 winningNumber); 7 | event Payout(address payable winner, uint256 payout); 8 | 9 | constructor() public { 10 | owner = msg.sender; 11 | } 12 | 13 | function kill() external { 14 | require(msg.sender == owner, "Only the owner can kill this contract"); 15 | selfdestruct(owner); 16 | } 17 | 18 | function fund() external payable {} 19 | 20 | function bet(uint8 number) external payable { 21 | require(msg.value <= getMaxBet(), "Bet amount can not exceed max bet size"); 22 | require(msg.value > 0, "A bet should be placed"); 23 | 24 | uint8 winningNumber = generateWinningNumber(); 25 | emit Play(msg.sender, msg.value, number, winningNumber); 26 | 27 | if (number == winningNumber) { 28 | payout(msg.sender, msg.value * 10); 29 | } 30 | } 31 | 32 | function getMaxBet() public view returns (uint256) { 33 | return address(this).balance / 100; 34 | } 35 | 36 | function generateWinningNumber() internal view returns (uint8) { 37 | return uint8(block.number % 10 + 1); // Don't do this in production 38 | } 39 | 40 | function payout(address payable winner, uint256 amount) internal { 41 | assert(amount > 0); 42 | assert(amount <= address(this).balance); 43 | 44 | winner.transfer(amount); 45 | emit Payout(winner, amount); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/contracts/Migrations.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.5.0; 2 | 3 | contract Migrations { 4 | address public owner; 5 | uint public last_completed_migration; 6 | 7 | modifier restricted() { 8 | if (msg.sender == owner) _; 9 | } 10 | 11 | constructor() public { 12 | owner = msg.sender; 13 | } 14 | 15 | function setCompleted(uint completed) public restricted { 16 | last_completed_migration = completed; 17 | } 18 | 19 | function upgrade(address new_address) public restricted { 20 | Migrations upgraded = Migrations(new_address); 21 | upgraded.setCompleted(last_completed_migration); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/migrations/1_initial_migration.js: -------------------------------------------------------------------------------- 1 | var Migrations = artifacts.require("./Migrations.sol"); 2 | 3 | module.exports = function(deployer) { 4 | deployer.deploy(Migrations); 5 | }; 6 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "casino", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "truffle.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "test": "truffle test" 11 | }, 12 | "author": "", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "bignumber.js": "^8.0.0", 16 | "chai": "^4.2.0", 17 | "chai-as-promised": "^7.1.1", 18 | "dotenv": "^8.1.0", 19 | "mocha": "^5.2.0", 20 | "truffle-assertions": "^0.9.0", 21 | "truffle-hdwallet-provider": "^1.0.17" 22 | }, 23 | "dependencies": {} 24 | } 25 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/test/test-events.test.js: -------------------------------------------------------------------------------- 1 | const Casino = artifacts.require('Casino'); 2 | const assert = require("chai").assert; 3 | const truffleAssert = require('truffle-assertions'); 4 | 5 | contract('Casino', (accounts) => { 6 | let casino; 7 | const fundingAccount = accounts[0]; 8 | const bettingAccount = accounts[1]; 9 | const fundingSize = 100; 10 | 11 | // build up and tear down a new Casino contract before each test 12 | beforeEach(async () => { 13 | casino = await Casino.new({ from: fundingAccount }); 14 | await casino.fund({ from: fundingAccount, value: fundingSize }); 15 | assert.equal(await web3.eth.getBalance(casino.address), fundingSize); 16 | }); 17 | 18 | afterEach(async () => { 19 | await casino.kill({ from: fundingAccount }); 20 | }); 21 | 22 | it("should lose when bet on the wrong number", async () => { 23 | let betSize = 1; 24 | // we know what the winning number will be since we know the algorithm 25 | let betNumber = (await web3.eth.getBlock("latest")).number % 10 + 1; 26 | 27 | let tx = await casino.bet(betNumber, { from: bettingAccount, value: betSize }); 28 | 29 | // player should be the same as the betting account, and the betted number should not equal the winning number 30 | truffleAssert.eventEmitted(tx, 'Play', (ev) => { 31 | return ev.player === bettingAccount && !ev.betNumber.eq(ev.winningNumber); 32 | }); 33 | // there should be no payouts 34 | truffleAssert.eventNotEmitted(tx, 'Payout'); 35 | // check the contract's balance 36 | assert.equal(await web3.eth.getBalance(casino.address), fundingSize + betSize); 37 | }); 38 | 39 | it("should win when bet on the right number", async () => { 40 | let betSize = 1; 41 | // we know what the winning number will be since we know the algorithm 42 | let betNumber = ((await web3.eth.getBlock("latest")).number + 1) % 10 + 1; 43 | 44 | let tx = await casino.bet(betNumber, { from: bettingAccount, value: betSize }); 45 | 46 | // player should be the same as the betting account, and the betted number should equal the winning number 47 | truffleAssert.eventEmitted(tx, 'Play', (ev) => { 48 | return ev.player === bettingAccount && ev.betNumber.eq(ev.winningNumber); 49 | }); 50 | // player should be the same as the betting account, and the payout should be 10 times the bet size 51 | truffleAssert.eventEmitted(tx, 'Payout', (ev) => { 52 | return ev.winner === bettingAccount && ev.payout.toNumber() === 10 * betSize; 53 | }); 54 | // check the contract's balance 55 | assert.equal(await web3.eth.getBalance(casino.address), fundingSize + betSize - betSize * 10); 56 | }); 57 | }); 58 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/test/test-reverts.test.js: -------------------------------------------------------------------------------- 1 | const Casino = artifacts.require('Casino'); 2 | const assert = require("chai").assert; 3 | const truffleAssert = require('truffle-assertions'); 4 | 5 | contract('Casino', (accounts) => { 6 | let casino; 7 | const fundingAccount = accounts[0]; 8 | const bettingAccount = accounts[1]; 9 | const fundingSize = 100; 10 | 11 | // build up and tear down a new Casino contract before each test 12 | beforeEach(async () => { 13 | casino = await Casino.new({ from: fundingAccount }); 14 | await casino.fund({ from: fundingAccount, value: fundingSize }); 15 | assert.equal(await web3.eth.getBalance(casino.address), fundingSize); 16 | }); 17 | 18 | afterEach(async () => { 19 | await casino.kill({ from: fundingAccount }); 20 | }); 21 | 22 | it("should not be able to bet more than max bet", async () => { 23 | let betSize = fundingSize / 50; 24 | let betNumber = 1; 25 | 26 | await truffleAssert.reverts( 27 | casino.bet(betNumber, { from: bettingAccount, value: betSize }), 28 | "Bet amount can not exceed max bet size" 29 | ); 30 | }); 31 | 32 | it("should not be able to bet without sending ether", async () => { 33 | let betSize = 0; 34 | let betNumber = 1; 35 | 36 | await truffleAssert.reverts( 37 | casino.bet(betNumber, { from: bettingAccount, value: betSize }), 38 | "A bet should be placed" 39 | ); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /docs/kalis-me-tutorial-code/truffle-config.js: -------------------------------------------------------------------------------- 1 | var HDWalletProvider = require("truffle-hdwallet-provider"); 2 | require('dotenv').config(); 3 | 4 | module.exports = { 5 | networks: { 6 | development: { 7 | host: "127.0.0.1", 8 | port: 8545, 9 | network_id: "*" // Match any network id 10 | }, 11 | ropsten: { 12 | provider: function() { 13 | return new HDWalletProvider(`${process.env.MNEMONIC}`, `https://ropsten.infura.io/v3/${process.env.INFURA_ID}`) 14 | }, 15 | network_id: 3 16 | }, 17 | rinkeby: { 18 | provider: function() { 19 | return new HDWalletProvider(`${process.env.MNEMONIC}`, `https://rinkeby.infura.io/v3/${process.env.INFURA_ID}`) 20 | }, 21 | network_id: 4 22 | }, 23 | goerli: { 24 | provider: function() { 25 | return new HDWalletProvider(`${process.env.MNEMONIC}`, `https://goerli.infura.io/v3/${process.env.INFURA_ID}`) 26 | }, 27 | network_id: 5, 28 | gas: 6500000 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /docs/trufflecon-2018-presentation-slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rkalis/truffle-assertions/305df468863722f67377c42ef5443ddc1cc0a380/docs/trufflecon-2018-presentation-slides.pdf -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const AssertionError = require('assertion-error'); 2 | const isEqual = require('lodash.isequal'); 3 | 4 | /* global web3 */ 5 | 6 | class InvalidTxResultError extends Error {} 7 | 8 | const validateResult = (result) => { 9 | if (!result.logs) { 10 | throw new InvalidTxResultError( 11 | 'First argument is not a transaction result. Did you accidentally pass a contract instance or transaction receipt?\n' 12 | + 'If that is the case, check out truffleAssert.createTransactionResult in the documentation.', 13 | ); 14 | } 15 | }; 16 | 17 | /* Creates a new assertion message, containing the passedAssertionMessage and 18 | * the defaultAssertion message when passedAssertionMessage exists, otherwise 19 | * just the default. 20 | */ 21 | const createAssertionMessage = (passedMessage, defaultMessage) => { 22 | let assertionMessage = defaultMessage; 23 | if (passedMessage) { 24 | assertionMessage = `${passedMessage} : ${defaultMessage}`; 25 | } 26 | return assertionMessage; 27 | }; 28 | 29 | const assertEventListNotEmpty = (list, passedMessage, defaultMessage) => { 30 | const assertionMessage = createAssertionMessage(passedMessage, defaultMessage); 31 | if (!Array.isArray(list) || list.length === 0) { 32 | throw new AssertionError(assertionMessage); 33 | } 34 | }; 35 | 36 | const assertEventListEmpty = (list, passedMessage, defaultMessage) => { 37 | const assertionMessage = createAssertionMessage(passedMessage, defaultMessage); 38 | if (Array.isArray(list) && list.length !== 0) { 39 | throw new AssertionError(assertionMessage); 40 | } 41 | }; 42 | 43 | /* Returns event string in the form of EventType(arg1, arg2, ...) */ 44 | const getPrettyEventString = (eventType, args) => { 45 | let argString = ''; 46 | Object.entries(args).forEach(([key, value]) => { 47 | argString += `, ${key}: ${value}`; 48 | }); 49 | argString = argString.replace(', ', ''); 50 | return `${eventType}(${argString})`; 51 | }; 52 | 53 | /* Returns a list of all emitted events in a transaction, 54 | * using the format of getPrettyEventString 55 | */ 56 | const getPrettyEmittedEventsString = (result, indentationSize) => { 57 | const indentation = ' '.repeat(indentationSize); 58 | if (result.logs.length === 0) { 59 | return `${indentation}No events emitted in tx ${result.tx}\n`; 60 | } 61 | let string = `${indentation}Events emitted in tx ${result.tx}:\n`; 62 | string += `${indentation}----------------------------------------------------------------------------------------\n`; 63 | result.logs.forEach((emittedEvent) => { 64 | string += `${indentation}${getPrettyEventString(emittedEvent.event, emittedEvent.args)}\n`; 65 | }); 66 | string += `${indentation}----------------------------------------------------------------------------------------\n`; 67 | return string; 68 | }; 69 | 70 | const assertEventEmittedFromTxResult = (result, eventType, filter, message) => { 71 | validateResult(result); 72 | 73 | /* Filter correct event types */ 74 | const events = result.logs.filter((entry) => entry.event === eventType); 75 | 76 | // TODO: Move the getPrettyEmittedEventsString to the assertion functions 77 | assertEventListNotEmpty(events, message, `Event of type ${eventType} was not emitted\n${getPrettyEmittedEventsString(result)}`); 78 | 79 | /* Return if no filter function was provided */ 80 | if (filter === undefined || filter === null) { 81 | return; 82 | } 83 | 84 | /* Filter correct arguments */ 85 | let eventArgs = events.map((entry) => entry.args); 86 | 87 | eventArgs = eventArgs.filter(filter); 88 | assertEventListNotEmpty(eventArgs, message, `Event filter for ${eventType} returned no results\n${getPrettyEmittedEventsString(result)}`); 89 | }; 90 | 91 | const assertEventNotEmittedFromTxResult = (result, eventType, filter, message) => { 92 | validateResult(result); 93 | 94 | /* Filter correct event types */ 95 | const events = result.logs.filter((entry) => entry.event === eventType); 96 | 97 | /* Only check filtered events if there is no provided filter function */ 98 | if (filter === undefined || filter === null) { 99 | assertEventListEmpty(events, message, `Event of type ${eventType} was emitted\n${getPrettyEmittedEventsString(result)}`); 100 | return; 101 | } 102 | 103 | /* Filter correct arguments */ 104 | let eventArgs = events.map((entry) => entry.args); 105 | eventArgs = eventArgs.filter(filter); 106 | assertEventListEmpty(eventArgs, message, `Event filter for ${eventType} returned results\n${getPrettyEmittedEventsString(result)}`); 107 | }; 108 | 109 | const createTransactionResult = async (contract, transactionHash) => { 110 | /* Web3 1.x uses contract.getPastEvents, Web3 0.x uses contract.allEvents() */ 111 | /* TODO: truffle-assertions 1.0 will only support Web3 1.x / Truffle v5 */ 112 | if (contract.getPastEvents) { 113 | const transactionReceipt = await web3.eth.getTransactionReceipt(transactionHash); 114 | const { blockNumber } = transactionReceipt; 115 | const eventList = await contract.getPastEvents('allEvents', { fromBlock: blockNumber, toBlock: blockNumber }); 116 | return { 117 | tx: transactionHash, 118 | receipt: transactionReceipt, 119 | logs: eventList.filter((ev) => ev.transactionHash === transactionHash), 120 | }; 121 | } 122 | 123 | return new Promise((resolve, reject) => { 124 | const transactionReceipt = web3.eth.getTransactionReceipt(transactionHash); 125 | const { blockNumber } = transactionReceipt; 126 | contract.allEvents({ fromBlock: blockNumber, toBlock: blockNumber }).get((error, events) => { 127 | if (error) reject(error); 128 | resolve({ 129 | tx: transactionHash, 130 | receipt: transactionReceipt, 131 | logs: events.filter((ev) => ev.transactionHash === transactionHash), 132 | }); 133 | }); 134 | }); 135 | }; 136 | 137 | const passes = async (asyncFn, message) => { 138 | try { 139 | await asyncFn; 140 | } catch (error) { 141 | const assertionMessage = createAssertionMessage(message, `Failed with ${error}`); 142 | throw new AssertionError(assertionMessage); 143 | } 144 | }; 145 | 146 | const fails = async (asyncFn, errorType, reason, message) => { 147 | try { 148 | await asyncFn; 149 | } catch (error) { 150 | if (errorType && !error.message.includes(errorType)) { 151 | const assertionMessage = createAssertionMessage(message, `Expected to fail with ${errorType}, but failed with: ${error}`); 152 | throw new AssertionError(assertionMessage); 153 | } else if (reason && !error.message.includes(reason)) { 154 | const assertionMessage = createAssertionMessage(message, `Expected to fail with ${reason}, but failed with: ${error}`); 155 | throw new AssertionError(assertionMessage); 156 | } 157 | // Error was handled by errorType or reason 158 | return; 159 | } 160 | const assertionMessage = createAssertionMessage(message, 'Did not fail'); 161 | throw new AssertionError(assertionMessage); 162 | }; 163 | 164 | const ErrorType = { 165 | REVERT: 'revert', 166 | INVALID_OPCODE: 'invalid opcode', 167 | OUT_OF_GAS: 'out of gas', 168 | INVALID_JUMP: 'invalid JUMP', 169 | }; 170 | 171 | const takeSameKeys = (filterOrObject, obj) => Object.keys(filterOrObject) 172 | .reduce((accumulator, key) => { 173 | if (obj.hasOwnProperty(key)) { 174 | accumulator[key] = obj[key]; 175 | } 176 | return accumulator; 177 | }, {}); 178 | 179 | const toFilterFunction = (filterOrObject) => { 180 | if (filterOrObject !== null && typeof filterOrObject === 'object') { 181 | return (obj) => { 182 | const objectToCompare = takeSameKeys(filterOrObject, obj); 183 | return isEqual(filterOrObject, objectToCompare); 184 | }; 185 | } 186 | return filterOrObject; 187 | }; 188 | 189 | module.exports = { 190 | eventEmitted: (result, eventType, filterOrObject, message) => { 191 | assertEventEmittedFromTxResult(result, eventType, toFilterFunction(filterOrObject), message); 192 | }, 193 | eventNotEmitted: (result, eventType, filterOrObject, message) => { 194 | assertEventNotEmittedFromTxResult(result, eventType, toFilterFunction(filterOrObject), message); 195 | }, 196 | prettyPrintEmittedEvents: (result, indentationSize) => { 197 | console.log(getPrettyEmittedEventsString(result, indentationSize)); 198 | }, 199 | createTransactionResult: (contract, transactionHash) => ( 200 | createTransactionResult(contract, transactionHash) 201 | ), 202 | passes: async (asyncFn, message) => ( 203 | passes(asyncFn, message) 204 | ), 205 | fails: async (asyncFn, errorType, reason, message) => ( 206 | fails(asyncFn, errorType, reason, message) 207 | ), 208 | reverts: async (asyncFn, reason, message) => ( 209 | fails(asyncFn, ErrorType.REVERT, reason, message) 210 | ), 211 | ErrorType, 212 | InvalidTxResultError, 213 | }; 214 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "truffle-assertions", 3 | "version": "0.9.2", 4 | "description": "Additional assertions and utilities for testing Ethereum smart contracts in Truffle unit tests", 5 | "main": "index.js", 6 | "files": [ 7 | "index.js" 8 | ], 9 | "scripts": { 10 | "test": "nyc mocha", 11 | "coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov", 12 | "lint": "eslint index.js test/*.js", 13 | "lint-fix": "eslint --fix index.js test/*.js" 14 | }, 15 | "nyc": { 16 | "temp-directory": "./node_modules/.nyc_output" 17 | }, 18 | "keywords": [ 19 | "truffle", 20 | "assert", 21 | "assertions", 22 | "test", 23 | "events", 24 | "ethereum", 25 | "solidity" 26 | ], 27 | "author": "Rosco Kalis", 28 | "license": "MIT", 29 | "repository": { 30 | "type": "git", 31 | "url": "https://github.com/rkalis/truffle-assertions" 32 | }, 33 | "bugs": { 34 | "url": "https://github.com/rkalis/truffle-assertions/issues" 35 | }, 36 | "homepage": "https://github.com/rkalis/truffle-assertions", 37 | "dependencies": { 38 | "assertion-error": "^1.1.0", 39 | "lodash.isequal": "^4.5.0" 40 | }, 41 | "devDependencies": { 42 | "chai": "^4.2.0", 43 | "chai-as-promised": "^7.1.1", 44 | "codecov": "^3.6.1", 45 | "coveralls": "^3.0.7", 46 | "eslint": "^6.5.1", 47 | "eslint-config-airbnb-base": "^14.0.0", 48 | "eslint-plugin-import": "^2.18.2", 49 | "mocha": "^6.2.2", 50 | "nyc": "^14.1.1", 51 | "sinon": "^7.5.0" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /test/events.test.js: -------------------------------------------------------------------------------- 1 | const { assert, AssertionError } = require('chai'); 2 | const { stub } = require('sinon'); 3 | const truffleAssert = require('..'); 4 | 5 | const truffleV4loseResult = require('./fixture/truffleV4loseResult.json'); 6 | const truffleV4winResult = require('./fixture/truffleV4winResult.json'); 7 | 8 | describe('eventEmitted', () => { 9 | it('should fail when event is not emitted', () => { 10 | assert.throws(() => truffleAssert.eventEmitted(truffleV4loseResult, 'Payout'), AssertionError); 11 | }); 12 | 13 | it('should return passed error message when event is not emitted', () => { 14 | assert.throws(() => truffleAssert.eventEmitted(truffleV4loseResult, 'Payout', null, 'Should pay'), /Should pay/); 15 | }); 16 | 17 | it('should fail when event is emitted with incorrect arguments given as function', () => { 18 | assert.throws(() => ( 19 | truffleAssert.eventEmitted(truffleV4loseResult, 'Play', (ev) => ev.betNumber === ev.winningNumber) 20 | ), AssertionError); 21 | }); 22 | 23 | it('should fail when event is emitted with incorrect arguments given as object', () => { 24 | assert.throws(() => ( 25 | truffleAssert.eventEmitted(truffleV4loseResult, 'Play', { betNumber: '1', winningNumber: '1' }) 26 | ), AssertionError); 27 | }); 28 | 29 | it('should return passed error message when event is emitted with incorrect arguments', () => { 30 | assert.throws(() => ( 31 | truffleAssert.eventEmitted(truffleV4loseResult, 'Play', (ev) => ev.betNumber === ev.winningNumber, 'Should win') 32 | ), /Should win/); 33 | }); 34 | 35 | it('should pass when event is emitted', () => { 36 | truffleAssert.eventEmitted(truffleV4winResult, 'Payout'); 37 | }); 38 | 39 | it('should pass when event is emitted with correct arguments given as function', () => { 40 | truffleAssert.eventEmitted(truffleV4winResult, 'Play', (ev) => ev.betNumber === ev.winningNumber); 41 | }); 42 | 43 | it('should pass when event is emitted with correct arguments given as an object', () => { 44 | truffleAssert.eventEmitted(truffleV4winResult, 'Play', { 45 | player: '0x24b844a5481ffdfad015c721364cafad49468379', 46 | qid: '0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04', 47 | betSize: '9000000000000000', 48 | betNumber: '0', 49 | winningNumber: '0', 50 | }); 51 | }); 52 | 53 | it('should pass when event is emitted with correct paritial arguments given as an object', () => { 54 | truffleAssert.eventEmitted(truffleV4winResult, 'Play', { 55 | player: '0x24b844a5481ffdfad015c721364cafad49468379', 56 | qid: '0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04', 57 | }); 58 | }); 59 | 60 | it('should pass when event is emitted with correct paritial arguments (number) given as an object', () => { 61 | truffleAssert.eventEmitted(truffleV4winResult, 'Play', { 62 | betNumber: '0', 63 | }); 64 | }); 65 | 66 | it('should throw an error when contract instance is passed instead of tx result', () => { 67 | assert.throws(() => ( 68 | truffleAssert.eventEmitted({}, 'Play', (ev) => ev.betNumber === ev.winningNumber) 69 | ), truffleAssert.InvalidTxResultError); 70 | }); 71 | }); 72 | 73 | describe('eventNotEmitted', () => { 74 | it('should fail when event is emitted', () => { 75 | assert.throws(() => truffleAssert.eventNotEmitted(truffleV4loseResult, 'Play'), AssertionError); 76 | }); 77 | 78 | it('should return passed error message when event is emitted', () => { 79 | assert.throws(() => truffleAssert.eventNotEmitted(truffleV4loseResult, 'Play', null, 'Should not play'), /Should not play/); 80 | }); 81 | 82 | it('should fail when event with specified arguments is emitted', () => { 83 | assert.throws(() => ( 84 | truffleAssert.eventNotEmitted(truffleV4winResult, 'Play', (ev) => ev.betNumber === ev.winningNumber) 85 | ), AssertionError); 86 | }); 87 | 88 | it('should return passed error message when event with specified arguments is emitted', () => { 89 | assert.throws(() => ( 90 | truffleAssert.eventNotEmitted(truffleV4winResult, 'Play', (ev) => ev.betNumber === ev.winningNumber, 'Should not win') 91 | ), /Should not win/); 92 | }); 93 | 94 | it('should pass when event is not emitted', () => { 95 | truffleAssert.eventNotEmitted(truffleV4loseResult, 'Payout'); 96 | }); 97 | 98 | it('should pass when event with specified arguments given as function is not emitted', () => { 99 | truffleAssert.eventNotEmitted(truffleV4winResult, 'Play', (ev) => ev.betNumber !== ev.winningNumber); 100 | }); 101 | 102 | it('should pass when event with specified arguments given as object is not emitted', () => { 103 | truffleAssert.eventNotEmitted(truffleV4winResult, 'Play', { 104 | player: '0x24b844a5481ffdfad015c721364cafad49468379', 105 | qid: '0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04', 106 | betSize: '9000000000000000', 107 | betNumber: '1', 108 | winningNumber: '0', 109 | }); 110 | }); 111 | 112 | it('should pass when event with specified partitial arguments given as object is not emitted', () => { 113 | truffleAssert.eventNotEmitted(truffleV4winResult, 'Play', { 114 | betNumber: '2', 115 | }); 116 | }); 117 | 118 | it('should throw an error when contract instance is passed instead of tx result', () => { 119 | assert.throws(() => ( 120 | truffleAssert.eventNotEmitted({}, 'Play') 121 | ), truffleAssert.InvalidTxResultError); 122 | }); 123 | }); 124 | 125 | // TODO: Truffle v5 -> don't print { 0: xxx, 1: xxx } 126 | describe('prettyPrintEmittedEvents', () => { 127 | it('should print all emitted events', () => { 128 | const logStub = stub(console, 'log'); 129 | 130 | truffleAssert.prettyPrintEmittedEvents(truffleV4winResult); 131 | 132 | assert(logStub.calledWithMatch('Play')); 133 | assert(logStub.calledWithMatch('Payout')); 134 | assert(logStub.calledWithMatch(truffleV4winResult.tx)); 135 | assert(logStub.neverCalledWithMatch('No events')); 136 | 137 | logStub.restore(); 138 | }); 139 | 140 | it('should print no events when no events were emitted', () => { 141 | const logStub = stub(console, 'log'); 142 | 143 | truffleV4winResult.logs = []; 144 | truffleAssert.prettyPrintEmittedEvents(truffleV4winResult); 145 | 146 | assert(logStub.neverCalledWithMatch('Play')); 147 | assert(logStub.neverCalledWithMatch('Payout')); 148 | assert(logStub.calledWithMatch(truffleV4winResult.tx)); 149 | assert(logStub.calledWithMatch('No events')); 150 | 151 | logStub.restore(); 152 | }); 153 | }); 154 | -------------------------------------------------------------------------------- /test/failures.test.js: -------------------------------------------------------------------------------- 1 | const chai = require('chai'); 2 | const chaiAsPromised = require('chai-as-promised'); 3 | const { fake } = require('sinon'); 4 | const truffleAssert = require('..'); 5 | // const t = require('truff'); 6 | 7 | chai.use(chaiAsPromised); 8 | const { assert, AssertionError } = chai; 9 | const { ErrorType } = truffleAssert; 10 | 11 | const passes = fake.resolves(); 12 | const reverts = fake.rejects(new Error('VM Exception while processing transaction: revert')); 13 | const revertsWithReason = fake.rejects(new Error('VM Exception while processing transaction: revert Only owner')); 14 | const revertsOnRinkeby = fake.rejects( 15 | new Error( 16 | 'Transaction: 0x5b4dc57076030dc52c18e15410bccaa1962db7f636204b8222469e888651320d exited with an error (status 0).\n' 17 | + 'Please check that the transaction:\n' 18 | + '- satisfies all conditions set by Solidity `require` statements.\n' 19 | + '- does not trigger a Solidity `revert` statement.', 20 | ), 21 | ); 22 | 23 | describe('fails', () => { 24 | it('should fail when function passes', async () => { 25 | await assert.isRejected(truffleAssert.fails(passes()), AssertionError); 26 | }); 27 | 28 | it('should fail when function fails with incorrect type', async () => { 29 | await assert.isRejected( 30 | truffleAssert.fails(reverts(), ErrorType.OUT_OF_GAS), 31 | AssertionError, 32 | ); 33 | }); 34 | 35 | it('should fail when function reverts with incorrect reason', async () => { 36 | await assert.isRejected( 37 | truffleAssert.fails(revertsWithReason(), ErrorType.REVERT, 'Only administrator'), 38 | AssertionError, 39 | ); 40 | }); 41 | 42 | it('should return custom message on failure', async () => { 43 | await assert.isRejected( 44 | truffleAssert.fails(revertsWithReason(), ErrorType.REVERT, 'Only administrator', 'Only administrator'), 45 | /Only administrator/, 46 | ); 47 | }); 48 | 49 | it('should pass when function fails', async () => { 50 | await truffleAssert.fails(reverts()); 51 | }); 52 | 53 | it('should pass when function fails with correct type', async () => { 54 | await truffleAssert.fails(reverts(), ErrorType.REVERT); 55 | }); 56 | 57 | it('should pass when function reverts with correct reason', async () => { 58 | await truffleAssert.fails(revertsWithReason(), ErrorType.REVERT, 'Only owner'); 59 | }); 60 | }); 61 | 62 | describe('reverts', () => { 63 | it('should fail when function does not revert', async () => { 64 | await assert.isRejected(truffleAssert.reverts(passes()), AssertionError); 65 | }); 66 | 67 | it('should fail when function reverts with incorrect reason', async () => { 68 | await assert.isRejected( 69 | truffleAssert.reverts(revertsWithReason(), 'Only administrator'), 70 | AssertionError, 71 | ); 72 | }); 73 | 74 | it('should fail when passing revert reason to Rinkeby', async () => { 75 | await assert.isRejected( 76 | truffleAssert.reverts(revertsOnRinkeby(), 'Only owner'), 77 | AssertionError, 78 | ); 79 | }); 80 | 81 | it('should return custom message on failure', async () => { 82 | await assert.isRejected( 83 | truffleAssert.reverts(revertsWithReason(), 'Only administrator', 'Only administrator'), 84 | /Only administrator/, 85 | ); 86 | }); 87 | 88 | it('should pass when function reverts', async () => { 89 | await truffleAssert.reverts(reverts()); 90 | }); 91 | 92 | it('should pass when function reverts with correct reason', async () => { 93 | await truffleAssert.reverts(revertsWithReason(), 'Only owner'); 94 | }); 95 | 96 | it('should pass when function reverts on Rinkeby', async () => { 97 | await truffleAssert.reverts(revertsOnRinkeby()); 98 | }); 99 | }); 100 | 101 | describe('passes', () => { 102 | it('should fail when function fails', async () => { 103 | await assert.isRejected(truffleAssert.passes(reverts()), AssertionError); 104 | }); 105 | 106 | it('should return custom message on failure', async () => { 107 | await assert.isRejected(truffleAssert.passes(reverts(), 'Should pass'), /Should pass/); 108 | }); 109 | 110 | it('should pass when function passes', async () => { 111 | await truffleAssert.passes(passes()); 112 | }); 113 | }); 114 | -------------------------------------------------------------------------------- /test/fixture/truffleV4loseResult.json: -------------------------------------------------------------------------------- 1 | { 2 | "tx": "0x716748a8e564f7528c05a532e5b27e4170c407badc508ed03c0cc5c6cd824ced", 3 | "receipt": { 4 | "transactionHash": "0x716748a8e564f7528c05a532e5b27e4170c407badc508ed03c0cc5c6cd824ced", 5 | "transactionIndex": 0, 6 | "blockHash": "0xcf88510cb8be2faf881fe22f830a948d0e309c755cb3ee21319da045dd186bff", 7 | "blockNumber": 189, 8 | "gasUsed": 28540, 9 | "cumulativeGasUsed": 28540, 10 | "contractAddress": null, 11 | "logs": [ 12 | { 13 | "logIndex": 0, 14 | "transactionIndex": 0, 15 | "transactionHash": "0x716748a8e564f7528c05a532e5b27e4170c407badc508ed03c0cc5c6cd824ced", 16 | "blockHash": "0xcf88510cb8be2faf881fe22f830a948d0e309c755cb3ee21319da045dd186bff", 17 | "blockNumber": 189, 18 | "address": "0x5553c571ad1fa3a19be34cb8b9f736de2cacad74", 19 | "data": "0x97a0f5f034ecaad82f37ea76fcacfe0fac6c6832b55be3c9aecab49c7f08a711000000000000000000000000000000000000000000000000001ff973cafa800000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", 20 | "topics": [ 21 | "0x91be5b5d42b869d0275147918e4b559f9d2d696bc711937642c9363242ef1100", 22 | "0x00000000000000000000000024b844a5481ffdfad015c721364cafad49468379" 23 | ], 24 | "type": "mined" 25 | } 26 | ], 27 | "status": "0x1", 28 | "logsBloom": "0x00000000000000000000000082040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000" 29 | }, 30 | "logs": [ 31 | { 32 | "logIndex": 0, 33 | "transactionIndex": 0, 34 | "transactionHash": "0x716748a8e564f7528c05a532e5b27e4170c407badc508ed03c0cc5c6cd824ced", 35 | "blockHash": "0xcf88510cb8be2faf881fe22f830a948d0e309c755cb3ee21319da045dd186bff", 36 | "blockNumber": 189, 37 | "address": "0x5553c571ad1fa3a19be34cb8b9f736de2cacad74", 38 | "type": "mined", 39 | "event": "Play", 40 | "args": { 41 | "player": "0x24b844a5481ffdfad015c721364cafad49468379", 42 | "qid": "0x97a0f5f034ecaad82f37ea76fcacfe0fac6c6832b55be3c9aecab49c7f08a711", 43 | "betSize": "9000000000000000", 44 | "betNumber": "1", 45 | "winningNumber": "0" 46 | } 47 | } 48 | ] 49 | } -------------------------------------------------------------------------------- /test/fixture/truffleV4winResult.json: -------------------------------------------------------------------------------- 1 | { 2 | "tx": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 3 | "receipt": { 4 | "transactionHash": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 5 | "transactionIndex": 0, 6 | "blockHash": "0x56ae963afeae6d2dd03ffcd2a7f3ac706a9aa66e25e3ea236c2effdf8fe442b9", 7 | "blockNumber": 183, 8 | "gasUsed": 42693, 9 | "cumulativeGasUsed": 42693, 10 | "contractAddress": null, 11 | "logs": [ 12 | { 13 | "logIndex": 0, 14 | "transactionIndex": 0, 15 | "transactionHash": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 16 | "blockHash": "0x56ae963afeae6d2dd03ffcd2a7f3ac706a9aa66e25e3ea236c2effdf8fe442b9", 17 | "blockNumber": 183, 18 | "address": "0x23ff1a1dc3de0ead272070dec0af2044f4d3d939", 19 | "data": "0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04000000000000000000000000000000000000000000000000001ff973cafa800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 20 | "topics": [ 21 | "0x91be5b5d42b869d0275147918e4b559f9d2d696bc711937642c9363242ef1100", 22 | "0x00000000000000000000000024b844a5481ffdfad015c721364cafad49468379" 23 | ], 24 | "type": "mined" 25 | }, 26 | { 27 | "logIndex": 1, 28 | "transactionIndex": 0, 29 | "transactionHash": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 30 | "blockHash": "0x56ae963afeae6d2dd03ffcd2a7f3ac706a9aa66e25e3ea236c2effdf8fe442b9", 31 | "blockNumber": 183, 32 | "address": "0x23ff1a1dc3de0ead272070dec0af2044f4d3d939", 33 | "data": "0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04000000000000000000000000000000000000000000000000047f14488b3a0000", 34 | "topics": [ 35 | "0x212950d8b6a2784adeaa8e088d070610bdfab9eaef5a7127d90118ec1cf34a61", 36 | "0x00000000000000000000000024b844a5481ffdfad015c721364cafad49468379" 37 | ], 38 | "type": "mined" 39 | } 40 | ], 41 | "status": "0x1", 42 | "logsBloom": "0x00000000000000000000000080040000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000040000000000000002080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000004000000000000000010000000000000000000000001000000000000000000000000000" 43 | }, 44 | "logs": [ 45 | { 46 | "logIndex": 0, 47 | "transactionIndex": 0, 48 | "transactionHash": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 49 | "blockHash": "0x56ae963afeae6d2dd03ffcd2a7f3ac706a9aa66e25e3ea236c2effdf8fe442b9", 50 | "blockNumber": 183, 51 | "address": "0x23ff1a1dc3de0ead272070dec0af2044f4d3d939", 52 | "type": "mined", 53 | "event": "Play", 54 | "args": { 55 | "player": "0x24b844a5481ffdfad015c721364cafad49468379", 56 | "qid": "0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04", 57 | "betSize": "9000000000000000", 58 | "betNumber": "0", 59 | "winningNumber": "0" 60 | } 61 | }, 62 | { 63 | "logIndex": 1, 64 | "transactionIndex": 0, 65 | "transactionHash": "0x1502426e638126057b51b854d62f7e61c77890f687372bbd021581ef248f3bcf", 66 | "blockHash": "0x56ae963afeae6d2dd03ffcd2a7f3ac706a9aa66e25e3ea236c2effdf8fe442b9", 67 | "blockNumber": 183, 68 | "address": "0x23ff1a1dc3de0ead272070dec0af2044f4d3d939", 69 | "type": "mined", 70 | "event": "Payout", 71 | "args": { 72 | "winner": "0x24b844a5481ffdfad015c721364cafad49468379", 73 | "qid": "0x70e6c24f8eb30062d4da343927b31a39291c70cf5f70401e4bff827661e6ba04", 74 | "payout": "324000000000000000" 75 | } 76 | } 77 | ] 78 | } 79 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/generator@^7.4.0", "@babel/generator@^7.4.4": 13 | version "7.4.4" 14 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" 15 | integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== 16 | dependencies: 17 | "@babel/types" "^7.4.4" 18 | jsesc "^2.5.1" 19 | lodash "^4.17.11" 20 | source-map "^0.5.0" 21 | trim-right "^1.0.1" 22 | 23 | "@babel/helper-function-name@^7.1.0": 24 | version "7.1.0" 25 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" 26 | integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== 27 | dependencies: 28 | "@babel/helper-get-function-arity" "^7.0.0" 29 | "@babel/template" "^7.1.0" 30 | "@babel/types" "^7.0.0" 31 | 32 | "@babel/helper-get-function-arity@^7.0.0": 33 | version "7.0.0" 34 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 35 | integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== 36 | dependencies: 37 | "@babel/types" "^7.0.0" 38 | 39 | "@babel/helper-split-export-declaration@^7.4.4": 40 | version "7.4.4" 41 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" 42 | integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== 43 | dependencies: 44 | "@babel/types" "^7.4.4" 45 | 46 | "@babel/highlight@^7.0.0": 47 | version "7.0.0" 48 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 49 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 50 | dependencies: 51 | chalk "^2.0.0" 52 | esutils "^2.0.2" 53 | js-tokens "^4.0.0" 54 | 55 | "@babel/parser@^7.4.3", "@babel/parser@^7.4.4": 56 | version "7.4.4" 57 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" 58 | integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== 59 | 60 | "@babel/template@^7.1.0", "@babel/template@^7.4.0": 61 | version "7.4.4" 62 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" 63 | integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== 64 | dependencies: 65 | "@babel/code-frame" "^7.0.0" 66 | "@babel/parser" "^7.4.4" 67 | "@babel/types" "^7.4.4" 68 | 69 | "@babel/traverse@^7.4.3": 70 | version "7.4.4" 71 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" 72 | integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== 73 | dependencies: 74 | "@babel/code-frame" "^7.0.0" 75 | "@babel/generator" "^7.4.4" 76 | "@babel/helper-function-name" "^7.1.0" 77 | "@babel/helper-split-export-declaration" "^7.4.4" 78 | "@babel/parser" "^7.4.4" 79 | "@babel/types" "^7.4.4" 80 | debug "^4.1.0" 81 | globals "^11.1.0" 82 | lodash "^4.17.11" 83 | 84 | "@babel/types@^7.0.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": 85 | version "7.4.4" 86 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" 87 | integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== 88 | dependencies: 89 | esutils "^2.0.2" 90 | lodash "^4.17.11" 91 | to-fast-properties "^2.0.0" 92 | 93 | "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0": 94 | version "1.4.0" 95 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" 96 | integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw== 97 | dependencies: 98 | type-detect "4.0.8" 99 | 100 | "@sinonjs/commons@^1.3.0": 101 | version "1.6.0" 102 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.6.0.tgz#ec7670432ae9c8eb710400d112c201a362d83393" 103 | integrity sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg== 104 | dependencies: 105 | type-detect "4.0.8" 106 | 107 | "@sinonjs/formatio@^3.2.1": 108 | version "3.2.1" 109 | resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.1.tgz#52310f2f9bcbc67bdac18c94ad4901b95fde267e" 110 | integrity sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ== 111 | dependencies: 112 | "@sinonjs/commons" "^1" 113 | "@sinonjs/samsam" "^3.1.0" 114 | 115 | "@sinonjs/samsam@^3.1.0": 116 | version "3.3.1" 117 | resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.1.tgz#e88c53fbd9d91ad9f0f2b0140c16c7c107fe0d07" 118 | integrity sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw== 119 | dependencies: 120 | "@sinonjs/commons" "^1.0.2" 121 | array-from "^2.1.1" 122 | lodash "^4.17.11" 123 | 124 | "@sinonjs/samsam@^3.3.3": 125 | version "3.3.3" 126 | resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.3.tgz#46682efd9967b259b81136b9f120fd54585feb4a" 127 | integrity sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ== 128 | dependencies: 129 | "@sinonjs/commons" "^1.3.0" 130 | array-from "^2.1.1" 131 | lodash "^4.17.15" 132 | 133 | "@sinonjs/text-encoding@^0.7.1": 134 | version "0.7.1" 135 | resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" 136 | integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== 137 | 138 | acorn-jsx@^5.1.0: 139 | version "5.1.0" 140 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" 141 | integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== 142 | 143 | acorn@^7.1.0: 144 | version "7.1.0" 145 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" 146 | integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== 147 | 148 | agent-base@^4.1.0: 149 | version "4.2.1" 150 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" 151 | integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== 152 | dependencies: 153 | es6-promisify "^5.0.0" 154 | 155 | ajv@^6.10.0: 156 | version "6.10.1" 157 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" 158 | integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== 159 | dependencies: 160 | fast-deep-equal "^2.0.1" 161 | fast-json-stable-stringify "^2.0.0" 162 | json-schema-traverse "^0.4.1" 163 | uri-js "^4.2.2" 164 | 165 | ajv@^6.5.5, ajv@^6.9.1: 166 | version "6.10.0" 167 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" 168 | integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== 169 | dependencies: 170 | fast-deep-equal "^2.0.1" 171 | fast-json-stable-stringify "^2.0.0" 172 | json-schema-traverse "^0.4.1" 173 | uri-js "^4.2.2" 174 | 175 | ansi-colors@3.2.3: 176 | version "3.2.3" 177 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 178 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 179 | 180 | ansi-escapes@^3.2.0: 181 | version "3.2.0" 182 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 183 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 184 | 185 | ansi-regex@^3.0.0: 186 | version "3.0.0" 187 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 188 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 189 | 190 | ansi-regex@^4.1.0: 191 | version "4.1.0" 192 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 193 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 194 | 195 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 196 | version "3.2.1" 197 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 198 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 199 | dependencies: 200 | color-convert "^1.9.0" 201 | 202 | append-transform@^1.0.0: 203 | version "1.0.0" 204 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 205 | integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== 206 | dependencies: 207 | default-require-extensions "^2.0.0" 208 | 209 | archy@^1.0.0: 210 | version "1.0.0" 211 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 212 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= 213 | 214 | argparse@^1.0.7: 215 | version "1.0.10" 216 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 217 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 218 | dependencies: 219 | sprintf-js "~1.0.2" 220 | 221 | argv@^0.0.2: 222 | version "0.0.2" 223 | resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" 224 | integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= 225 | 226 | array-from@^2.1.1: 227 | version "2.1.1" 228 | resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" 229 | integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= 230 | 231 | array-includes@^3.0.3: 232 | version "3.0.3" 233 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 234 | integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= 235 | dependencies: 236 | define-properties "^1.1.2" 237 | es-abstract "^1.7.0" 238 | 239 | asn1@~0.2.3: 240 | version "0.2.4" 241 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 242 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 243 | dependencies: 244 | safer-buffer "~2.1.0" 245 | 246 | assert-plus@1.0.0, assert-plus@^1.0.0: 247 | version "1.0.0" 248 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 249 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 250 | 251 | assertion-error@^1.1.0: 252 | version "1.1.0" 253 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 254 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 255 | 256 | astral-regex@^1.0.0: 257 | version "1.0.0" 258 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 259 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 260 | 261 | asynckit@^0.4.0: 262 | version "0.4.0" 263 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 264 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 265 | 266 | aws-sign2@~0.7.0: 267 | version "0.7.0" 268 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 269 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 270 | 271 | aws4@^1.8.0: 272 | version "1.8.0" 273 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 274 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 275 | 276 | balanced-match@^1.0.0: 277 | version "1.0.0" 278 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 279 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 280 | 281 | bcrypt-pbkdf@^1.0.0: 282 | version "1.0.2" 283 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 284 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 285 | dependencies: 286 | tweetnacl "^0.14.3" 287 | 288 | brace-expansion@^1.1.7: 289 | version "1.1.11" 290 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 291 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 292 | dependencies: 293 | balanced-match "^1.0.0" 294 | concat-map "0.0.1" 295 | 296 | browser-stdout@1.3.1: 297 | version "1.3.1" 298 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 299 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 300 | 301 | caching-transform@^3.0.2: 302 | version "3.0.2" 303 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" 304 | integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== 305 | dependencies: 306 | hasha "^3.0.0" 307 | make-dir "^2.0.0" 308 | package-hash "^3.0.0" 309 | write-file-atomic "^2.4.2" 310 | 311 | callsites@^3.0.0: 312 | version "3.1.0" 313 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 314 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 315 | 316 | camelcase@^5.0.0: 317 | version "5.3.1" 318 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 319 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 320 | 321 | caseless@~0.12.0: 322 | version "0.12.0" 323 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 324 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 325 | 326 | chai-as-promised@^7.1.1: 327 | version "7.1.1" 328 | resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" 329 | integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== 330 | dependencies: 331 | check-error "^1.0.2" 332 | 333 | chai@^4.2.0: 334 | version "4.2.0" 335 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 336 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 337 | dependencies: 338 | assertion-error "^1.1.0" 339 | check-error "^1.0.2" 340 | deep-eql "^3.0.1" 341 | get-func-name "^2.0.0" 342 | pathval "^1.1.0" 343 | type-detect "^4.0.5" 344 | 345 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.2: 346 | version "2.4.2" 347 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 348 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 349 | dependencies: 350 | ansi-styles "^3.2.1" 351 | escape-string-regexp "^1.0.5" 352 | supports-color "^5.3.0" 353 | 354 | chardet@^0.7.0: 355 | version "0.7.0" 356 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 357 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 358 | 359 | check-error@^1.0.2: 360 | version "1.0.2" 361 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 362 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 363 | 364 | cli-cursor@^2.1.0: 365 | version "2.1.0" 366 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 367 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 368 | dependencies: 369 | restore-cursor "^2.0.0" 370 | 371 | cli-width@^2.0.0: 372 | version "2.2.0" 373 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 374 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 375 | 376 | cliui@^5.0.0: 377 | version "5.0.0" 378 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 379 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 380 | dependencies: 381 | string-width "^3.1.0" 382 | strip-ansi "^5.2.0" 383 | wrap-ansi "^5.1.0" 384 | 385 | codecov@^3.6.1: 386 | version "3.6.1" 387 | resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.6.1.tgz#f39fc49413445555f81f8e3ca5730992843b4517" 388 | integrity sha512-IUJB6WG47nWK7o50etF8jBadxdMw7DmoQg05yIljstXFBGB6clOZsIj6iD4P82T2YaIU3qq+FFu8K9pxgkCJDQ== 389 | dependencies: 390 | argv "^0.0.2" 391 | ignore-walk "^3.0.1" 392 | js-yaml "^3.13.1" 393 | teeny-request "^3.11.3" 394 | urlgrey "^0.4.4" 395 | 396 | color-convert@^1.9.0: 397 | version "1.9.3" 398 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 399 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 400 | dependencies: 401 | color-name "1.1.3" 402 | 403 | color-name@1.1.3: 404 | version "1.1.3" 405 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 406 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 407 | 408 | combined-stream@^1.0.6, combined-stream@~1.0.6: 409 | version "1.0.8" 410 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 411 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 412 | dependencies: 413 | delayed-stream "~1.0.0" 414 | 415 | commander@~2.20.0: 416 | version "2.20.0" 417 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" 418 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== 419 | 420 | commondir@^1.0.1: 421 | version "1.0.1" 422 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 423 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 424 | 425 | concat-map@0.0.1: 426 | version "0.0.1" 427 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 428 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 429 | 430 | confusing-browser-globals@^1.0.7: 431 | version "1.0.9" 432 | resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" 433 | integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== 434 | 435 | contains-path@^0.1.0: 436 | version "0.1.0" 437 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 438 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 439 | 440 | convert-source-map@^1.6.0: 441 | version "1.6.0" 442 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 443 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== 444 | dependencies: 445 | safe-buffer "~5.1.1" 446 | 447 | core-util-is@1.0.2: 448 | version "1.0.2" 449 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 450 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 451 | 452 | coveralls@^3.0.7: 453 | version "3.0.7" 454 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.7.tgz#1eca48e47976e9573d6a2f18b97c2fea4026f34a" 455 | integrity sha512-mUuH2MFOYB2oBaA4D4Ykqi9LaEYpMMlsiOMJOrv358yAjP6enPIk55fod2fNJ8AvwoYXStWQls37rA+s5e7boA== 456 | dependencies: 457 | growl "~> 1.10.0" 458 | js-yaml "^3.13.1" 459 | lcov-parse "^0.0.10" 460 | log-driver "^1.2.7" 461 | minimist "^1.2.0" 462 | request "^2.86.0" 463 | 464 | cp-file@^6.2.0: 465 | version "6.2.0" 466 | resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" 467 | integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== 468 | dependencies: 469 | graceful-fs "^4.1.2" 470 | make-dir "^2.0.0" 471 | nested-error-stacks "^2.0.0" 472 | pify "^4.0.1" 473 | safe-buffer "^5.0.1" 474 | 475 | cross-spawn@^4: 476 | version "4.0.2" 477 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 478 | integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= 479 | dependencies: 480 | lru-cache "^4.0.1" 481 | which "^1.2.9" 482 | 483 | cross-spawn@^6.0.0, cross-spawn@^6.0.5: 484 | version "6.0.5" 485 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 486 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 487 | dependencies: 488 | nice-try "^1.0.4" 489 | path-key "^2.0.1" 490 | semver "^5.5.0" 491 | shebang-command "^1.2.0" 492 | which "^1.2.9" 493 | 494 | dashdash@^1.12.0: 495 | version "1.14.1" 496 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 497 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 498 | dependencies: 499 | assert-plus "^1.0.0" 500 | 501 | debug@3.2.6, debug@^3.1.0: 502 | version "3.2.6" 503 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 504 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 505 | dependencies: 506 | ms "^2.1.1" 507 | 508 | debug@^2.6.8, debug@^2.6.9: 509 | version "2.6.9" 510 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 511 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 512 | dependencies: 513 | ms "2.0.0" 514 | 515 | debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: 516 | version "4.1.1" 517 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 518 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 519 | dependencies: 520 | ms "^2.1.1" 521 | 522 | decamelize@^1.2.0: 523 | version "1.2.0" 524 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 525 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 526 | 527 | deep-eql@^3.0.1: 528 | version "3.0.1" 529 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 530 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 531 | dependencies: 532 | type-detect "^4.0.0" 533 | 534 | deep-is@~0.1.3: 535 | version "0.1.3" 536 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 537 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 538 | 539 | default-require-extensions@^2.0.0: 540 | version "2.0.0" 541 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 542 | integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= 543 | dependencies: 544 | strip-bom "^3.0.0" 545 | 546 | define-properties@^1.1.2, define-properties@^1.1.3: 547 | version "1.1.3" 548 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 549 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 550 | dependencies: 551 | object-keys "^1.0.12" 552 | 553 | delayed-stream@~1.0.0: 554 | version "1.0.0" 555 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 556 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 557 | 558 | diff@3.5.0, diff@^3.5.0: 559 | version "3.5.0" 560 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 561 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 562 | 563 | doctrine@1.5.0: 564 | version "1.5.0" 565 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 566 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 567 | dependencies: 568 | esutils "^2.0.2" 569 | isarray "^1.0.0" 570 | 571 | doctrine@^3.0.0: 572 | version "3.0.0" 573 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 574 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 575 | dependencies: 576 | esutils "^2.0.2" 577 | 578 | ecc-jsbn@~0.1.1: 579 | version "0.1.2" 580 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 581 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 582 | dependencies: 583 | jsbn "~0.1.0" 584 | safer-buffer "^2.1.0" 585 | 586 | emoji-regex@^7.0.1: 587 | version "7.0.3" 588 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 589 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 590 | 591 | end-of-stream@^1.1.0: 592 | version "1.4.1" 593 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 594 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 595 | dependencies: 596 | once "^1.4.0" 597 | 598 | error-ex@^1.2.0, error-ex@^1.3.1: 599 | version "1.3.2" 600 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 601 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 602 | dependencies: 603 | is-arrayish "^0.2.1" 604 | 605 | es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: 606 | version "1.13.0" 607 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" 608 | integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== 609 | dependencies: 610 | es-to-primitive "^1.2.0" 611 | function-bind "^1.1.1" 612 | has "^1.0.3" 613 | is-callable "^1.1.4" 614 | is-regex "^1.0.4" 615 | object-keys "^1.0.12" 616 | 617 | es-to-primitive@^1.2.0: 618 | version "1.2.0" 619 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 620 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 621 | dependencies: 622 | is-callable "^1.1.4" 623 | is-date-object "^1.0.1" 624 | is-symbol "^1.0.2" 625 | 626 | es6-error@^4.0.1: 627 | version "4.1.1" 628 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 629 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 630 | 631 | es6-promise@^4.0.3: 632 | version "4.2.6" 633 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" 634 | integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== 635 | 636 | es6-promisify@^5.0.0: 637 | version "5.0.0" 638 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 639 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 640 | dependencies: 641 | es6-promise "^4.0.3" 642 | 643 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 644 | version "1.0.5" 645 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 646 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 647 | 648 | eslint-config-airbnb-base@^14.0.0: 649 | version "14.0.0" 650 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" 651 | integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== 652 | dependencies: 653 | confusing-browser-globals "^1.0.7" 654 | object.assign "^4.1.0" 655 | object.entries "^1.1.0" 656 | 657 | eslint-import-resolver-node@^0.3.2: 658 | version "0.3.2" 659 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 660 | integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== 661 | dependencies: 662 | debug "^2.6.9" 663 | resolve "^1.5.0" 664 | 665 | eslint-module-utils@^2.4.0: 666 | version "2.4.0" 667 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" 668 | integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== 669 | dependencies: 670 | debug "^2.6.8" 671 | pkg-dir "^2.0.0" 672 | 673 | eslint-plugin-import@^2.18.2: 674 | version "2.18.2" 675 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" 676 | integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== 677 | dependencies: 678 | array-includes "^3.0.3" 679 | contains-path "^0.1.0" 680 | debug "^2.6.9" 681 | doctrine "1.5.0" 682 | eslint-import-resolver-node "^0.3.2" 683 | eslint-module-utils "^2.4.0" 684 | has "^1.0.3" 685 | minimatch "^3.0.4" 686 | object.values "^1.1.0" 687 | read-pkg-up "^2.0.0" 688 | resolve "^1.11.0" 689 | 690 | eslint-scope@^5.0.0: 691 | version "5.0.0" 692 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 693 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 694 | dependencies: 695 | esrecurse "^4.1.0" 696 | estraverse "^4.1.1" 697 | 698 | eslint-utils@^1.4.2: 699 | version "1.4.3" 700 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 701 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 702 | dependencies: 703 | eslint-visitor-keys "^1.1.0" 704 | 705 | eslint-visitor-keys@^1.1.0: 706 | version "1.1.0" 707 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 708 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 709 | 710 | eslint@^6.5.1: 711 | version "6.5.1" 712 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.1.tgz#828e4c469697d43bb586144be152198b91e96ed6" 713 | integrity sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A== 714 | dependencies: 715 | "@babel/code-frame" "^7.0.0" 716 | ajv "^6.10.0" 717 | chalk "^2.1.0" 718 | cross-spawn "^6.0.5" 719 | debug "^4.0.1" 720 | doctrine "^3.0.0" 721 | eslint-scope "^5.0.0" 722 | eslint-utils "^1.4.2" 723 | eslint-visitor-keys "^1.1.0" 724 | espree "^6.1.1" 725 | esquery "^1.0.1" 726 | esutils "^2.0.2" 727 | file-entry-cache "^5.0.1" 728 | functional-red-black-tree "^1.0.1" 729 | glob-parent "^5.0.0" 730 | globals "^11.7.0" 731 | ignore "^4.0.6" 732 | import-fresh "^3.0.0" 733 | imurmurhash "^0.1.4" 734 | inquirer "^6.4.1" 735 | is-glob "^4.0.0" 736 | js-yaml "^3.13.1" 737 | json-stable-stringify-without-jsonify "^1.0.1" 738 | levn "^0.3.0" 739 | lodash "^4.17.14" 740 | minimatch "^3.0.4" 741 | mkdirp "^0.5.1" 742 | natural-compare "^1.4.0" 743 | optionator "^0.8.2" 744 | progress "^2.0.0" 745 | regexpp "^2.0.1" 746 | semver "^6.1.2" 747 | strip-ansi "^5.2.0" 748 | strip-json-comments "^3.0.1" 749 | table "^5.2.3" 750 | text-table "^0.2.0" 751 | v8-compile-cache "^2.0.3" 752 | 753 | espree@^6.1.1: 754 | version "6.1.2" 755 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" 756 | integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== 757 | dependencies: 758 | acorn "^7.1.0" 759 | acorn-jsx "^5.1.0" 760 | eslint-visitor-keys "^1.1.0" 761 | 762 | esprima@^4.0.0: 763 | version "4.0.1" 764 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 765 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 766 | 767 | esquery@^1.0.1: 768 | version "1.0.1" 769 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 770 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 771 | dependencies: 772 | estraverse "^4.0.0" 773 | 774 | esrecurse@^4.1.0: 775 | version "4.2.1" 776 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 777 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 778 | dependencies: 779 | estraverse "^4.1.0" 780 | 781 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 782 | version "4.2.0" 783 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 784 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 785 | 786 | esutils@^2.0.2: 787 | version "2.0.2" 788 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 789 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 790 | 791 | execa@^1.0.0: 792 | version "1.0.0" 793 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 794 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 795 | dependencies: 796 | cross-spawn "^6.0.0" 797 | get-stream "^4.0.0" 798 | is-stream "^1.1.0" 799 | npm-run-path "^2.0.0" 800 | p-finally "^1.0.0" 801 | signal-exit "^3.0.0" 802 | strip-eof "^1.0.0" 803 | 804 | extend@~3.0.2: 805 | version "3.0.2" 806 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 807 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 808 | 809 | external-editor@^3.0.3: 810 | version "3.0.3" 811 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" 812 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== 813 | dependencies: 814 | chardet "^0.7.0" 815 | iconv-lite "^0.4.24" 816 | tmp "^0.0.33" 817 | 818 | extsprintf@1.3.0: 819 | version "1.3.0" 820 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 821 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 822 | 823 | extsprintf@^1.2.0: 824 | version "1.4.0" 825 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 826 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 827 | 828 | fast-deep-equal@^2.0.1: 829 | version "2.0.1" 830 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 831 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 832 | 833 | fast-json-stable-stringify@^2.0.0: 834 | version "2.0.0" 835 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 836 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 837 | 838 | fast-levenshtein@~2.0.4: 839 | version "2.0.6" 840 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 841 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 842 | 843 | figures@^2.0.0: 844 | version "2.0.0" 845 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 846 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 847 | dependencies: 848 | escape-string-regexp "^1.0.5" 849 | 850 | file-entry-cache@^5.0.1: 851 | version "5.0.1" 852 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 853 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 854 | dependencies: 855 | flat-cache "^2.0.1" 856 | 857 | find-cache-dir@^2.1.0: 858 | version "2.1.0" 859 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" 860 | integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== 861 | dependencies: 862 | commondir "^1.0.1" 863 | make-dir "^2.0.0" 864 | pkg-dir "^3.0.0" 865 | 866 | find-up@3.0.0, find-up@^3.0.0: 867 | version "3.0.0" 868 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 869 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 870 | dependencies: 871 | locate-path "^3.0.0" 872 | 873 | find-up@^2.0.0, find-up@^2.1.0: 874 | version "2.1.0" 875 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 876 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 877 | dependencies: 878 | locate-path "^2.0.0" 879 | 880 | flat-cache@^2.0.1: 881 | version "2.0.1" 882 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 883 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 884 | dependencies: 885 | flatted "^2.0.0" 886 | rimraf "2.6.3" 887 | write "1.0.3" 888 | 889 | flat@^4.1.0: 890 | version "4.1.0" 891 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 892 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 893 | dependencies: 894 | is-buffer "~2.0.3" 895 | 896 | flatted@^2.0.0: 897 | version "2.0.0" 898 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" 899 | integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== 900 | 901 | foreground-child@^1.5.6: 902 | version "1.5.6" 903 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" 904 | integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= 905 | dependencies: 906 | cross-spawn "^4" 907 | signal-exit "^3.0.0" 908 | 909 | forever-agent@~0.6.1: 910 | version "0.6.1" 911 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 912 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 913 | 914 | form-data@~2.3.2: 915 | version "2.3.3" 916 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 917 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 918 | dependencies: 919 | asynckit "^0.4.0" 920 | combined-stream "^1.0.6" 921 | mime-types "^2.1.12" 922 | 923 | fs.realpath@^1.0.0: 924 | version "1.0.0" 925 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 926 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 927 | 928 | function-bind@^1.1.1: 929 | version "1.1.1" 930 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 931 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 932 | 933 | functional-red-black-tree@^1.0.1: 934 | version "1.0.1" 935 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 936 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 937 | 938 | get-caller-file@^2.0.1: 939 | version "2.0.5" 940 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 941 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 942 | 943 | get-func-name@^2.0.0: 944 | version "2.0.0" 945 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 946 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 947 | 948 | get-stream@^4.0.0: 949 | version "4.1.0" 950 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 951 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 952 | dependencies: 953 | pump "^3.0.0" 954 | 955 | getpass@^0.1.1: 956 | version "0.1.7" 957 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 958 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 959 | dependencies: 960 | assert-plus "^1.0.0" 961 | 962 | glob-parent@^5.0.0: 963 | version "5.1.0" 964 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 965 | integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== 966 | dependencies: 967 | is-glob "^4.0.1" 968 | 969 | glob@7.1.3: 970 | version "7.1.3" 971 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 972 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 973 | dependencies: 974 | fs.realpath "^1.0.0" 975 | inflight "^1.0.4" 976 | inherits "2" 977 | minimatch "^3.0.4" 978 | once "^1.3.0" 979 | path-is-absolute "^1.0.0" 980 | 981 | glob@^7.1.3: 982 | version "7.1.4" 983 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 984 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 985 | dependencies: 986 | fs.realpath "^1.0.0" 987 | inflight "^1.0.4" 988 | inherits "2" 989 | minimatch "^3.0.4" 990 | once "^1.3.0" 991 | path-is-absolute "^1.0.0" 992 | 993 | globals@^11.1.0, globals@^11.7.0: 994 | version "11.12.0" 995 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 996 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 997 | 998 | graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: 999 | version "4.1.15" 1000 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 1001 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 1002 | 1003 | growl@1.10.5, "growl@~> 1.10.0": 1004 | version "1.10.5" 1005 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 1006 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 1007 | 1008 | handlebars@^4.1.2: 1009 | version "4.1.2" 1010 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" 1011 | integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== 1012 | dependencies: 1013 | neo-async "^2.6.0" 1014 | optimist "^0.6.1" 1015 | source-map "^0.6.1" 1016 | optionalDependencies: 1017 | uglify-js "^3.1.4" 1018 | 1019 | har-schema@^2.0.0: 1020 | version "2.0.0" 1021 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1022 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 1023 | 1024 | har-validator@~5.1.0: 1025 | version "5.1.3" 1026 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 1027 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 1028 | dependencies: 1029 | ajv "^6.5.5" 1030 | har-schema "^2.0.0" 1031 | 1032 | has-flag@^3.0.0: 1033 | version "3.0.0" 1034 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1035 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1036 | 1037 | has-symbols@^1.0.0: 1038 | version "1.0.0" 1039 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 1040 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 1041 | 1042 | has@^1.0.1, has@^1.0.3: 1043 | version "1.0.3" 1044 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1045 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1046 | dependencies: 1047 | function-bind "^1.1.1" 1048 | 1049 | hasha@^3.0.0: 1050 | version "3.0.0" 1051 | resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" 1052 | integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= 1053 | dependencies: 1054 | is-stream "^1.0.1" 1055 | 1056 | he@1.2.0: 1057 | version "1.2.0" 1058 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1059 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1060 | 1061 | hosted-git-info@^2.1.4: 1062 | version "2.7.1" 1063 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" 1064 | integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== 1065 | 1066 | http-signature@~1.2.0: 1067 | version "1.2.0" 1068 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1069 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1070 | dependencies: 1071 | assert-plus "^1.0.0" 1072 | jsprim "^1.2.2" 1073 | sshpk "^1.7.0" 1074 | 1075 | https-proxy-agent@^2.2.1: 1076 | version "2.2.1" 1077 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" 1078 | integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== 1079 | dependencies: 1080 | agent-base "^4.1.0" 1081 | debug "^3.1.0" 1082 | 1083 | iconv-lite@^0.4.24: 1084 | version "0.4.24" 1085 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1086 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1087 | dependencies: 1088 | safer-buffer ">= 2.1.2 < 3" 1089 | 1090 | ignore-walk@^3.0.1: 1091 | version "3.0.1" 1092 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1093 | integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== 1094 | dependencies: 1095 | minimatch "^3.0.4" 1096 | 1097 | ignore@^4.0.6: 1098 | version "4.0.6" 1099 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1100 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1101 | 1102 | import-fresh@^3.0.0: 1103 | version "3.0.0" 1104 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" 1105 | integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== 1106 | dependencies: 1107 | parent-module "^1.0.0" 1108 | resolve-from "^4.0.0" 1109 | 1110 | imurmurhash@^0.1.4: 1111 | version "0.1.4" 1112 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1113 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1114 | 1115 | inflight@^1.0.4: 1116 | version "1.0.6" 1117 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1118 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1119 | dependencies: 1120 | once "^1.3.0" 1121 | wrappy "1" 1122 | 1123 | inherits@2: 1124 | version "2.0.3" 1125 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1126 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1127 | 1128 | inquirer@^6.4.1: 1129 | version "6.5.2" 1130 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" 1131 | integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== 1132 | dependencies: 1133 | ansi-escapes "^3.2.0" 1134 | chalk "^2.4.2" 1135 | cli-cursor "^2.1.0" 1136 | cli-width "^2.0.0" 1137 | external-editor "^3.0.3" 1138 | figures "^2.0.0" 1139 | lodash "^4.17.12" 1140 | mute-stream "0.0.7" 1141 | run-async "^2.2.0" 1142 | rxjs "^6.4.0" 1143 | string-width "^2.1.0" 1144 | strip-ansi "^5.1.0" 1145 | through "^2.3.6" 1146 | 1147 | invert-kv@^2.0.0: 1148 | version "2.0.0" 1149 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 1150 | integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== 1151 | 1152 | is-arrayish@^0.2.1: 1153 | version "0.2.1" 1154 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1155 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1156 | 1157 | is-buffer@~2.0.3: 1158 | version "2.0.3" 1159 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" 1160 | integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== 1161 | 1162 | is-callable@^1.1.4: 1163 | version "1.1.4" 1164 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1165 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 1166 | 1167 | is-date-object@^1.0.1: 1168 | version "1.0.1" 1169 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1170 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1171 | 1172 | is-extglob@^2.1.1: 1173 | version "2.1.1" 1174 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1175 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1176 | 1177 | is-fullwidth-code-point@^2.0.0: 1178 | version "2.0.0" 1179 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1180 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1181 | 1182 | is-glob@^4.0.0, is-glob@^4.0.1: 1183 | version "4.0.1" 1184 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1185 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1186 | dependencies: 1187 | is-extglob "^2.1.1" 1188 | 1189 | is-promise@^2.1.0: 1190 | version "2.1.0" 1191 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1192 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1193 | 1194 | is-regex@^1.0.4: 1195 | version "1.0.4" 1196 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1197 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 1198 | dependencies: 1199 | has "^1.0.1" 1200 | 1201 | is-stream@^1.0.1, is-stream@^1.1.0: 1202 | version "1.1.0" 1203 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1204 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1205 | 1206 | is-symbol@^1.0.2: 1207 | version "1.0.2" 1208 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 1209 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 1210 | dependencies: 1211 | has-symbols "^1.0.0" 1212 | 1213 | is-typedarray@~1.0.0: 1214 | version "1.0.0" 1215 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1216 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1217 | 1218 | isarray@0.0.1: 1219 | version "0.0.1" 1220 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1221 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1222 | 1223 | isarray@^1.0.0: 1224 | version "1.0.0" 1225 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1226 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1227 | 1228 | isexe@^2.0.0: 1229 | version "2.0.0" 1230 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1231 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1232 | 1233 | isstream@~0.1.2: 1234 | version "0.1.2" 1235 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1236 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1237 | 1238 | istanbul-lib-coverage@^2.0.5: 1239 | version "2.0.5" 1240 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" 1241 | integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== 1242 | 1243 | istanbul-lib-hook@^2.0.7: 1244 | version "2.0.7" 1245 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" 1246 | integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== 1247 | dependencies: 1248 | append-transform "^1.0.0" 1249 | 1250 | istanbul-lib-instrument@^3.3.0: 1251 | version "3.3.0" 1252 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" 1253 | integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== 1254 | dependencies: 1255 | "@babel/generator" "^7.4.0" 1256 | "@babel/parser" "^7.4.3" 1257 | "@babel/template" "^7.4.0" 1258 | "@babel/traverse" "^7.4.3" 1259 | "@babel/types" "^7.4.0" 1260 | istanbul-lib-coverage "^2.0.5" 1261 | semver "^6.0.0" 1262 | 1263 | istanbul-lib-report@^2.0.8: 1264 | version "2.0.8" 1265 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" 1266 | integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== 1267 | dependencies: 1268 | istanbul-lib-coverage "^2.0.5" 1269 | make-dir "^2.1.0" 1270 | supports-color "^6.1.0" 1271 | 1272 | istanbul-lib-source-maps@^3.0.6: 1273 | version "3.0.6" 1274 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" 1275 | integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== 1276 | dependencies: 1277 | debug "^4.1.1" 1278 | istanbul-lib-coverage "^2.0.5" 1279 | make-dir "^2.1.0" 1280 | rimraf "^2.6.3" 1281 | source-map "^0.6.1" 1282 | 1283 | istanbul-reports@^2.2.4: 1284 | version "2.2.6" 1285 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" 1286 | integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== 1287 | dependencies: 1288 | handlebars "^4.1.2" 1289 | 1290 | js-tokens@^4.0.0: 1291 | version "4.0.0" 1292 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1293 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1294 | 1295 | js-yaml@3.13.1, js-yaml@^3.13.1: 1296 | version "3.13.1" 1297 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1298 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1299 | dependencies: 1300 | argparse "^1.0.7" 1301 | esprima "^4.0.0" 1302 | 1303 | jsbn@~0.1.0: 1304 | version "0.1.1" 1305 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1306 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1307 | 1308 | jsesc@^2.5.1: 1309 | version "2.5.2" 1310 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1311 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1312 | 1313 | json-parse-better-errors@^1.0.1: 1314 | version "1.0.2" 1315 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1316 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1317 | 1318 | json-schema-traverse@^0.4.1: 1319 | version "0.4.1" 1320 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1321 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1322 | 1323 | json-schema@0.2.3: 1324 | version "0.2.3" 1325 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1326 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1327 | 1328 | json-stable-stringify-without-jsonify@^1.0.1: 1329 | version "1.0.1" 1330 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1331 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1332 | 1333 | json-stringify-safe@~5.0.1: 1334 | version "5.0.1" 1335 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1336 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1337 | 1338 | jsprim@^1.2.2: 1339 | version "1.4.1" 1340 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1341 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1342 | dependencies: 1343 | assert-plus "1.0.0" 1344 | extsprintf "1.3.0" 1345 | json-schema "0.2.3" 1346 | verror "1.10.0" 1347 | 1348 | just-extend@^4.0.2: 1349 | version "4.0.2" 1350 | resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" 1351 | integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== 1352 | 1353 | lcid@^2.0.0: 1354 | version "2.0.0" 1355 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" 1356 | integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== 1357 | dependencies: 1358 | invert-kv "^2.0.0" 1359 | 1360 | lcov-parse@^0.0.10: 1361 | version "0.0.10" 1362 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" 1363 | integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= 1364 | 1365 | levn@^0.3.0, levn@~0.3.0: 1366 | version "0.3.0" 1367 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1368 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1369 | dependencies: 1370 | prelude-ls "~1.1.2" 1371 | type-check "~0.3.2" 1372 | 1373 | load-json-file@^2.0.0: 1374 | version "2.0.0" 1375 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1376 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1377 | dependencies: 1378 | graceful-fs "^4.1.2" 1379 | parse-json "^2.2.0" 1380 | pify "^2.0.0" 1381 | strip-bom "^3.0.0" 1382 | 1383 | load-json-file@^4.0.0: 1384 | version "4.0.0" 1385 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1386 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1387 | dependencies: 1388 | graceful-fs "^4.1.2" 1389 | parse-json "^4.0.0" 1390 | pify "^3.0.0" 1391 | strip-bom "^3.0.0" 1392 | 1393 | locate-path@^2.0.0: 1394 | version "2.0.0" 1395 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1396 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1397 | dependencies: 1398 | p-locate "^2.0.0" 1399 | path-exists "^3.0.0" 1400 | 1401 | locate-path@^3.0.0: 1402 | version "3.0.0" 1403 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1404 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1405 | dependencies: 1406 | p-locate "^3.0.0" 1407 | path-exists "^3.0.0" 1408 | 1409 | lodash.flattendeep@^4.4.0: 1410 | version "4.4.0" 1411 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 1412 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= 1413 | 1414 | lodash.isequal@^4.5.0: 1415 | version "4.5.0" 1416 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 1417 | integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= 1418 | 1419 | lodash@^4.17.11: 1420 | version "4.17.11" 1421 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 1422 | integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 1423 | 1424 | lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15: 1425 | version "4.17.15" 1426 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1427 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1428 | 1429 | log-driver@^1.2.7: 1430 | version "1.2.7" 1431 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" 1432 | integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== 1433 | 1434 | log-symbols@2.2.0: 1435 | version "2.2.0" 1436 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 1437 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 1438 | dependencies: 1439 | chalk "^2.0.1" 1440 | 1441 | lolex@^4.1.0, lolex@^4.2.0: 1442 | version "4.2.0" 1443 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7" 1444 | integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg== 1445 | 1446 | lru-cache@^4.0.1: 1447 | version "4.1.5" 1448 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1449 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1450 | dependencies: 1451 | pseudomap "^1.0.2" 1452 | yallist "^2.1.2" 1453 | 1454 | make-dir@^2.0.0, make-dir@^2.1.0: 1455 | version "2.1.0" 1456 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 1457 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1458 | dependencies: 1459 | pify "^4.0.1" 1460 | semver "^5.6.0" 1461 | 1462 | map-age-cleaner@^0.1.1: 1463 | version "0.1.3" 1464 | resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" 1465 | integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== 1466 | dependencies: 1467 | p-defer "^1.0.0" 1468 | 1469 | mem@^4.0.0: 1470 | version "4.3.0" 1471 | resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" 1472 | integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== 1473 | dependencies: 1474 | map-age-cleaner "^0.1.1" 1475 | mimic-fn "^2.0.0" 1476 | p-is-promise "^2.0.0" 1477 | 1478 | merge-source-map@^1.1.0: 1479 | version "1.1.0" 1480 | resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" 1481 | integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== 1482 | dependencies: 1483 | source-map "^0.6.1" 1484 | 1485 | mime-db@1.40.0: 1486 | version "1.40.0" 1487 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 1488 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 1489 | 1490 | mime-types@^2.1.12, mime-types@~2.1.19: 1491 | version "2.1.24" 1492 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 1493 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 1494 | dependencies: 1495 | mime-db "1.40.0" 1496 | 1497 | mimic-fn@^1.0.0: 1498 | version "1.2.0" 1499 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 1500 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 1501 | 1502 | mimic-fn@^2.0.0: 1503 | version "2.1.0" 1504 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1505 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1506 | 1507 | minimatch@3.0.4, minimatch@^3.0.4: 1508 | version "3.0.4" 1509 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1510 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1511 | dependencies: 1512 | brace-expansion "^1.1.7" 1513 | 1514 | minimist@0.0.8: 1515 | version "0.0.8" 1516 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1517 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1518 | 1519 | minimist@^1.2.0: 1520 | version "1.2.0" 1521 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1522 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1523 | 1524 | minimist@~0.0.1: 1525 | version "0.0.10" 1526 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1527 | integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= 1528 | 1529 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 1530 | version "0.5.1" 1531 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1532 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1533 | dependencies: 1534 | minimist "0.0.8" 1535 | 1536 | mocha@^6.2.2: 1537 | version "6.2.2" 1538 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.2.tgz#5d8987e28940caf8957a7d7664b910dc5b2fea20" 1539 | integrity sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A== 1540 | dependencies: 1541 | ansi-colors "3.2.3" 1542 | browser-stdout "1.3.1" 1543 | debug "3.2.6" 1544 | diff "3.5.0" 1545 | escape-string-regexp "1.0.5" 1546 | find-up "3.0.0" 1547 | glob "7.1.3" 1548 | growl "1.10.5" 1549 | he "1.2.0" 1550 | js-yaml "3.13.1" 1551 | log-symbols "2.2.0" 1552 | minimatch "3.0.4" 1553 | mkdirp "0.5.1" 1554 | ms "2.1.1" 1555 | node-environment-flags "1.0.5" 1556 | object.assign "4.1.0" 1557 | strip-json-comments "2.0.1" 1558 | supports-color "6.0.0" 1559 | which "1.3.1" 1560 | wide-align "1.1.3" 1561 | yargs "13.3.0" 1562 | yargs-parser "13.1.1" 1563 | yargs-unparser "1.6.0" 1564 | 1565 | ms@2.0.0: 1566 | version "2.0.0" 1567 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1568 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1569 | 1570 | ms@2.1.1, ms@^2.1.1: 1571 | version "2.1.1" 1572 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1573 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1574 | 1575 | mute-stream@0.0.7: 1576 | version "0.0.7" 1577 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1578 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 1579 | 1580 | natural-compare@^1.4.0: 1581 | version "1.4.0" 1582 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1583 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1584 | 1585 | neo-async@^2.6.0: 1586 | version "2.6.1" 1587 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" 1588 | integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== 1589 | 1590 | nested-error-stacks@^2.0.0: 1591 | version "2.1.0" 1592 | resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" 1593 | integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== 1594 | 1595 | nice-try@^1.0.4: 1596 | version "1.0.5" 1597 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1598 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1599 | 1600 | nise@^1.5.2: 1601 | version "1.5.2" 1602 | resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.2.tgz#b6d29af10e48b321b307e10e065199338eeb2652" 1603 | integrity sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA== 1604 | dependencies: 1605 | "@sinonjs/formatio" "^3.2.1" 1606 | "@sinonjs/text-encoding" "^0.7.1" 1607 | just-extend "^4.0.2" 1608 | lolex "^4.1.0" 1609 | path-to-regexp "^1.7.0" 1610 | 1611 | node-environment-flags@1.0.5: 1612 | version "1.0.5" 1613 | resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" 1614 | integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== 1615 | dependencies: 1616 | object.getownpropertydescriptors "^2.0.3" 1617 | semver "^5.7.0" 1618 | 1619 | node-fetch@^2.2.0: 1620 | version "2.5.0" 1621 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.5.0.tgz#8028c49fc1191bba56a07adc6e2a954644a48501" 1622 | integrity sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw== 1623 | 1624 | normalize-package-data@^2.3.2: 1625 | version "2.5.0" 1626 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1627 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1628 | dependencies: 1629 | hosted-git-info "^2.1.4" 1630 | resolve "^1.10.0" 1631 | semver "2 || 3 || 4 || 5" 1632 | validate-npm-package-license "^3.0.1" 1633 | 1634 | npm-run-path@^2.0.0: 1635 | version "2.0.2" 1636 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1637 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1638 | dependencies: 1639 | path-key "^2.0.0" 1640 | 1641 | nyc@^14.1.1: 1642 | version "14.1.1" 1643 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" 1644 | integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== 1645 | dependencies: 1646 | archy "^1.0.0" 1647 | caching-transform "^3.0.2" 1648 | convert-source-map "^1.6.0" 1649 | cp-file "^6.2.0" 1650 | find-cache-dir "^2.1.0" 1651 | find-up "^3.0.0" 1652 | foreground-child "^1.5.6" 1653 | glob "^7.1.3" 1654 | istanbul-lib-coverage "^2.0.5" 1655 | istanbul-lib-hook "^2.0.7" 1656 | istanbul-lib-instrument "^3.3.0" 1657 | istanbul-lib-report "^2.0.8" 1658 | istanbul-lib-source-maps "^3.0.6" 1659 | istanbul-reports "^2.2.4" 1660 | js-yaml "^3.13.1" 1661 | make-dir "^2.1.0" 1662 | merge-source-map "^1.1.0" 1663 | resolve-from "^4.0.0" 1664 | rimraf "^2.6.3" 1665 | signal-exit "^3.0.2" 1666 | spawn-wrap "^1.4.2" 1667 | test-exclude "^5.2.3" 1668 | uuid "^3.3.2" 1669 | yargs "^13.2.2" 1670 | yargs-parser "^13.0.0" 1671 | 1672 | oauth-sign@~0.9.0: 1673 | version "0.9.0" 1674 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1675 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1676 | 1677 | object-keys@^1.0.11, object-keys@^1.0.12: 1678 | version "1.1.1" 1679 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1680 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1681 | 1682 | object.assign@4.1.0, object.assign@^4.1.0: 1683 | version "4.1.0" 1684 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1685 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1686 | dependencies: 1687 | define-properties "^1.1.2" 1688 | function-bind "^1.1.1" 1689 | has-symbols "^1.0.0" 1690 | object-keys "^1.0.11" 1691 | 1692 | object.entries@^1.1.0: 1693 | version "1.1.0" 1694 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" 1695 | integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== 1696 | dependencies: 1697 | define-properties "^1.1.3" 1698 | es-abstract "^1.12.0" 1699 | function-bind "^1.1.1" 1700 | has "^1.0.3" 1701 | 1702 | object.getownpropertydescriptors@^2.0.3: 1703 | version "2.0.3" 1704 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" 1705 | integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= 1706 | dependencies: 1707 | define-properties "^1.1.2" 1708 | es-abstract "^1.5.1" 1709 | 1710 | object.values@^1.1.0: 1711 | version "1.1.0" 1712 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" 1713 | integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== 1714 | dependencies: 1715 | define-properties "^1.1.3" 1716 | es-abstract "^1.12.0" 1717 | function-bind "^1.1.1" 1718 | has "^1.0.3" 1719 | 1720 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1721 | version "1.4.0" 1722 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1723 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1724 | dependencies: 1725 | wrappy "1" 1726 | 1727 | onetime@^2.0.0: 1728 | version "2.0.1" 1729 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1730 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 1731 | dependencies: 1732 | mimic-fn "^1.0.0" 1733 | 1734 | optimist@^0.6.1: 1735 | version "0.6.1" 1736 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1737 | integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= 1738 | dependencies: 1739 | minimist "~0.0.1" 1740 | wordwrap "~0.0.2" 1741 | 1742 | optionator@^0.8.2: 1743 | version "0.8.2" 1744 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1745 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 1746 | dependencies: 1747 | deep-is "~0.1.3" 1748 | fast-levenshtein "~2.0.4" 1749 | levn "~0.3.0" 1750 | prelude-ls "~1.1.2" 1751 | type-check "~0.3.2" 1752 | wordwrap "~1.0.0" 1753 | 1754 | os-homedir@^1.0.1: 1755 | version "1.0.2" 1756 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1757 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1758 | 1759 | os-locale@^3.1.0: 1760 | version "3.1.0" 1761 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" 1762 | integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== 1763 | dependencies: 1764 | execa "^1.0.0" 1765 | lcid "^2.0.0" 1766 | mem "^4.0.0" 1767 | 1768 | os-tmpdir@~1.0.2: 1769 | version "1.0.2" 1770 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1771 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1772 | 1773 | p-defer@^1.0.0: 1774 | version "1.0.0" 1775 | resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" 1776 | integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= 1777 | 1778 | p-finally@^1.0.0: 1779 | version "1.0.0" 1780 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1781 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1782 | 1783 | p-is-promise@^2.0.0: 1784 | version "2.1.0" 1785 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" 1786 | integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== 1787 | 1788 | p-limit@^1.1.0: 1789 | version "1.3.0" 1790 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1791 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1792 | dependencies: 1793 | p-try "^1.0.0" 1794 | 1795 | p-limit@^2.0.0: 1796 | version "2.2.0" 1797 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" 1798 | integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== 1799 | dependencies: 1800 | p-try "^2.0.0" 1801 | 1802 | p-locate@^2.0.0: 1803 | version "2.0.0" 1804 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1805 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1806 | dependencies: 1807 | p-limit "^1.1.0" 1808 | 1809 | p-locate@^3.0.0: 1810 | version "3.0.0" 1811 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1812 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1813 | dependencies: 1814 | p-limit "^2.0.0" 1815 | 1816 | p-try@^1.0.0: 1817 | version "1.0.0" 1818 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1819 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1820 | 1821 | p-try@^2.0.0: 1822 | version "2.2.0" 1823 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1824 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1825 | 1826 | package-hash@^3.0.0: 1827 | version "3.0.0" 1828 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" 1829 | integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== 1830 | dependencies: 1831 | graceful-fs "^4.1.15" 1832 | hasha "^3.0.0" 1833 | lodash.flattendeep "^4.4.0" 1834 | release-zalgo "^1.0.0" 1835 | 1836 | parent-module@^1.0.0: 1837 | version "1.0.1" 1838 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1839 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1840 | dependencies: 1841 | callsites "^3.0.0" 1842 | 1843 | parse-json@^2.2.0: 1844 | version "2.2.0" 1845 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1846 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1847 | dependencies: 1848 | error-ex "^1.2.0" 1849 | 1850 | parse-json@^4.0.0: 1851 | version "4.0.0" 1852 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1853 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1854 | dependencies: 1855 | error-ex "^1.3.1" 1856 | json-parse-better-errors "^1.0.1" 1857 | 1858 | path-exists@^3.0.0: 1859 | version "3.0.0" 1860 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1861 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1862 | 1863 | path-is-absolute@^1.0.0: 1864 | version "1.0.1" 1865 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1866 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1867 | 1868 | path-key@^2.0.0, path-key@^2.0.1: 1869 | version "2.0.1" 1870 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1871 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1872 | 1873 | path-parse@^1.0.6: 1874 | version "1.0.6" 1875 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1876 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1877 | 1878 | path-to-regexp@^1.7.0: 1879 | version "1.7.0" 1880 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" 1881 | integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= 1882 | dependencies: 1883 | isarray "0.0.1" 1884 | 1885 | path-type@^2.0.0: 1886 | version "2.0.0" 1887 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1888 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1889 | dependencies: 1890 | pify "^2.0.0" 1891 | 1892 | path-type@^3.0.0: 1893 | version "3.0.0" 1894 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1895 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1896 | dependencies: 1897 | pify "^3.0.0" 1898 | 1899 | pathval@^1.1.0: 1900 | version "1.1.0" 1901 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1902 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 1903 | 1904 | performance-now@^2.1.0: 1905 | version "2.1.0" 1906 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1907 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1908 | 1909 | pify@^2.0.0: 1910 | version "2.3.0" 1911 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1912 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1913 | 1914 | pify@^3.0.0: 1915 | version "3.0.0" 1916 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1917 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1918 | 1919 | pify@^4.0.1: 1920 | version "4.0.1" 1921 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1922 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1923 | 1924 | pkg-dir@^2.0.0: 1925 | version "2.0.0" 1926 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1927 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1928 | dependencies: 1929 | find-up "^2.1.0" 1930 | 1931 | pkg-dir@^3.0.0: 1932 | version "3.0.0" 1933 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1934 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 1935 | dependencies: 1936 | find-up "^3.0.0" 1937 | 1938 | prelude-ls@~1.1.2: 1939 | version "1.1.2" 1940 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1941 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1942 | 1943 | progress@^2.0.0: 1944 | version "2.0.3" 1945 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1946 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1947 | 1948 | pseudomap@^1.0.2: 1949 | version "1.0.2" 1950 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1951 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1952 | 1953 | psl@^1.1.24: 1954 | version "1.1.31" 1955 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" 1956 | integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== 1957 | 1958 | pump@^3.0.0: 1959 | version "3.0.0" 1960 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1961 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1962 | dependencies: 1963 | end-of-stream "^1.1.0" 1964 | once "^1.3.1" 1965 | 1966 | punycode@^1.4.1: 1967 | version "1.4.1" 1968 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1969 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1970 | 1971 | punycode@^2.1.0: 1972 | version "2.1.1" 1973 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1974 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1975 | 1976 | qs@~6.5.2: 1977 | version "6.5.2" 1978 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1979 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1980 | 1981 | read-pkg-up@^2.0.0: 1982 | version "2.0.0" 1983 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1984 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1985 | dependencies: 1986 | find-up "^2.0.0" 1987 | read-pkg "^2.0.0" 1988 | 1989 | read-pkg-up@^4.0.0: 1990 | version "4.0.0" 1991 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" 1992 | integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== 1993 | dependencies: 1994 | find-up "^3.0.0" 1995 | read-pkg "^3.0.0" 1996 | 1997 | read-pkg@^2.0.0: 1998 | version "2.0.0" 1999 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 2000 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 2001 | dependencies: 2002 | load-json-file "^2.0.0" 2003 | normalize-package-data "^2.3.2" 2004 | path-type "^2.0.0" 2005 | 2006 | read-pkg@^3.0.0: 2007 | version "3.0.0" 2008 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 2009 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 2010 | dependencies: 2011 | load-json-file "^4.0.0" 2012 | normalize-package-data "^2.3.2" 2013 | path-type "^3.0.0" 2014 | 2015 | regexpp@^2.0.1: 2016 | version "2.0.1" 2017 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 2018 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 2019 | 2020 | release-zalgo@^1.0.0: 2021 | version "1.0.0" 2022 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 2023 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= 2024 | dependencies: 2025 | es6-error "^4.0.1" 2026 | 2027 | request@^2.86.0: 2028 | version "2.88.0" 2029 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 2030 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 2031 | dependencies: 2032 | aws-sign2 "~0.7.0" 2033 | aws4 "^1.8.0" 2034 | caseless "~0.12.0" 2035 | combined-stream "~1.0.6" 2036 | extend "~3.0.2" 2037 | forever-agent "~0.6.1" 2038 | form-data "~2.3.2" 2039 | har-validator "~5.1.0" 2040 | http-signature "~1.2.0" 2041 | is-typedarray "~1.0.0" 2042 | isstream "~0.1.2" 2043 | json-stringify-safe "~5.0.1" 2044 | mime-types "~2.1.19" 2045 | oauth-sign "~0.9.0" 2046 | performance-now "^2.1.0" 2047 | qs "~6.5.2" 2048 | safe-buffer "^5.1.2" 2049 | tough-cookie "~2.4.3" 2050 | tunnel-agent "^0.6.0" 2051 | uuid "^3.3.2" 2052 | 2053 | require-directory@^2.1.1: 2054 | version "2.1.1" 2055 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2056 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2057 | 2058 | require-main-filename@^2.0.0: 2059 | version "2.0.0" 2060 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 2061 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 2062 | 2063 | resolve-from@^4.0.0: 2064 | version "4.0.0" 2065 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2066 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2067 | 2068 | resolve@^1.10.0, resolve@^1.5.0: 2069 | version "1.10.1" 2070 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" 2071 | integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== 2072 | dependencies: 2073 | path-parse "^1.0.6" 2074 | 2075 | resolve@^1.11.0: 2076 | version "1.11.1" 2077 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" 2078 | integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== 2079 | dependencies: 2080 | path-parse "^1.0.6" 2081 | 2082 | restore-cursor@^2.0.0: 2083 | version "2.0.0" 2084 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 2085 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 2086 | dependencies: 2087 | onetime "^2.0.0" 2088 | signal-exit "^3.0.2" 2089 | 2090 | rimraf@2.6.3, rimraf@^2.6.2, rimraf@^2.6.3: 2091 | version "2.6.3" 2092 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 2093 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 2094 | dependencies: 2095 | glob "^7.1.3" 2096 | 2097 | run-async@^2.2.0: 2098 | version "2.3.0" 2099 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 2100 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 2101 | dependencies: 2102 | is-promise "^2.1.0" 2103 | 2104 | rxjs@^6.4.0: 2105 | version "6.5.2" 2106 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" 2107 | integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== 2108 | dependencies: 2109 | tslib "^1.9.0" 2110 | 2111 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.1: 2112 | version "5.1.2" 2113 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2114 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2115 | 2116 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 2117 | version "2.1.2" 2118 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2119 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2120 | 2121 | "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: 2122 | version "5.7.0" 2123 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" 2124 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== 2125 | 2126 | semver@^6.0.0: 2127 | version "6.0.0" 2128 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" 2129 | integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== 2130 | 2131 | semver@^6.1.2: 2132 | version "6.3.0" 2133 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2134 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2135 | 2136 | set-blocking@^2.0.0: 2137 | version "2.0.0" 2138 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2139 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2140 | 2141 | shebang-command@^1.2.0: 2142 | version "1.2.0" 2143 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2144 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2145 | dependencies: 2146 | shebang-regex "^1.0.0" 2147 | 2148 | shebang-regex@^1.0.0: 2149 | version "1.0.0" 2150 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2151 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2152 | 2153 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2154 | version "3.0.2" 2155 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2156 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2157 | 2158 | sinon@^7.5.0: 2159 | version "7.5.0" 2160 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec" 2161 | integrity sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q== 2162 | dependencies: 2163 | "@sinonjs/commons" "^1.4.0" 2164 | "@sinonjs/formatio" "^3.2.1" 2165 | "@sinonjs/samsam" "^3.3.3" 2166 | diff "^3.5.0" 2167 | lolex "^4.2.0" 2168 | nise "^1.5.2" 2169 | supports-color "^5.5.0" 2170 | 2171 | slice-ansi@^2.1.0: 2172 | version "2.1.0" 2173 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 2174 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 2175 | dependencies: 2176 | ansi-styles "^3.2.0" 2177 | astral-regex "^1.0.0" 2178 | is-fullwidth-code-point "^2.0.0" 2179 | 2180 | source-map@^0.5.0: 2181 | version "0.5.7" 2182 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2183 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2184 | 2185 | source-map@^0.6.1, source-map@~0.6.1: 2186 | version "0.6.1" 2187 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2188 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2189 | 2190 | spawn-wrap@^1.4.2: 2191 | version "1.4.2" 2192 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" 2193 | integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== 2194 | dependencies: 2195 | foreground-child "^1.5.6" 2196 | mkdirp "^0.5.0" 2197 | os-homedir "^1.0.1" 2198 | rimraf "^2.6.2" 2199 | signal-exit "^3.0.2" 2200 | which "^1.3.0" 2201 | 2202 | spdx-correct@^3.0.0: 2203 | version "3.1.0" 2204 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 2205 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 2206 | dependencies: 2207 | spdx-expression-parse "^3.0.0" 2208 | spdx-license-ids "^3.0.0" 2209 | 2210 | spdx-exceptions@^2.1.0: 2211 | version "2.2.0" 2212 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 2213 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 2214 | 2215 | spdx-expression-parse@^3.0.0: 2216 | version "3.0.0" 2217 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2218 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 2219 | dependencies: 2220 | spdx-exceptions "^2.1.0" 2221 | spdx-license-ids "^3.0.0" 2222 | 2223 | spdx-license-ids@^3.0.0: 2224 | version "3.0.4" 2225 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" 2226 | integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== 2227 | 2228 | sprintf-js@~1.0.2: 2229 | version "1.0.3" 2230 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2231 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2232 | 2233 | sshpk@^1.7.0: 2234 | version "1.16.1" 2235 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 2236 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 2237 | dependencies: 2238 | asn1 "~0.2.3" 2239 | assert-plus "^1.0.0" 2240 | bcrypt-pbkdf "^1.0.0" 2241 | dashdash "^1.12.0" 2242 | ecc-jsbn "~0.1.1" 2243 | getpass "^0.1.1" 2244 | jsbn "~0.1.0" 2245 | safer-buffer "^2.0.2" 2246 | tweetnacl "~0.14.0" 2247 | 2248 | "string-width@^1.0.2 || 2", string-width@^2.1.0: 2249 | version "2.1.1" 2250 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2251 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2252 | dependencies: 2253 | is-fullwidth-code-point "^2.0.0" 2254 | strip-ansi "^4.0.0" 2255 | 2256 | string-width@^3.0.0, string-width@^3.1.0: 2257 | version "3.1.0" 2258 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2259 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2260 | dependencies: 2261 | emoji-regex "^7.0.1" 2262 | is-fullwidth-code-point "^2.0.0" 2263 | strip-ansi "^5.1.0" 2264 | 2265 | strip-ansi@^4.0.0: 2266 | version "4.0.0" 2267 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2268 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2269 | dependencies: 2270 | ansi-regex "^3.0.0" 2271 | 2272 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2273 | version "5.2.0" 2274 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2275 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2276 | dependencies: 2277 | ansi-regex "^4.1.0" 2278 | 2279 | strip-bom@^3.0.0: 2280 | version "3.0.0" 2281 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2282 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2283 | 2284 | strip-eof@^1.0.0: 2285 | version "1.0.0" 2286 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2287 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2288 | 2289 | strip-json-comments@2.0.1: 2290 | version "2.0.1" 2291 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2292 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2293 | 2294 | strip-json-comments@^3.0.1: 2295 | version "3.0.1" 2296 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 2297 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 2298 | 2299 | supports-color@6.0.0: 2300 | version "6.0.0" 2301 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 2302 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 2303 | dependencies: 2304 | has-flag "^3.0.0" 2305 | 2306 | supports-color@^5.3.0, supports-color@^5.5.0: 2307 | version "5.5.0" 2308 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2309 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2310 | dependencies: 2311 | has-flag "^3.0.0" 2312 | 2313 | supports-color@^6.1.0: 2314 | version "6.1.0" 2315 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 2316 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 2317 | dependencies: 2318 | has-flag "^3.0.0" 2319 | 2320 | table@^5.2.3: 2321 | version "5.3.3" 2322 | resolved "https://registry.yarnpkg.com/table/-/table-5.3.3.tgz#eae560c90437331b74200e011487a33442bd28b4" 2323 | integrity sha512-3wUNCgdWX6PNpOe3amTTPWPuF6VGvgzjKCaO1snFj0z7Y3mUPWf5+zDtxUVGispJkDECPmR29wbzh6bVMOHbcw== 2324 | dependencies: 2325 | ajv "^6.9.1" 2326 | lodash "^4.17.11" 2327 | slice-ansi "^2.1.0" 2328 | string-width "^3.0.0" 2329 | 2330 | teeny-request@^3.11.3: 2331 | version "3.11.3" 2332 | resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" 2333 | integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== 2334 | dependencies: 2335 | https-proxy-agent "^2.2.1" 2336 | node-fetch "^2.2.0" 2337 | uuid "^3.3.2" 2338 | 2339 | test-exclude@^5.2.3: 2340 | version "5.2.3" 2341 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" 2342 | integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== 2343 | dependencies: 2344 | glob "^7.1.3" 2345 | minimatch "^3.0.4" 2346 | read-pkg-up "^4.0.0" 2347 | require-main-filename "^2.0.0" 2348 | 2349 | text-table@^0.2.0: 2350 | version "0.2.0" 2351 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2352 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2353 | 2354 | through@^2.3.6: 2355 | version "2.3.8" 2356 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2357 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2358 | 2359 | tmp@^0.0.33: 2360 | version "0.0.33" 2361 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2362 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2363 | dependencies: 2364 | os-tmpdir "~1.0.2" 2365 | 2366 | to-fast-properties@^2.0.0: 2367 | version "2.0.0" 2368 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2369 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2370 | 2371 | tough-cookie@~2.4.3: 2372 | version "2.4.3" 2373 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 2374 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 2375 | dependencies: 2376 | psl "^1.1.24" 2377 | punycode "^1.4.1" 2378 | 2379 | trim-right@^1.0.1: 2380 | version "1.0.1" 2381 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2382 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 2383 | 2384 | tslib@^1.9.0: 2385 | version "1.9.3" 2386 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 2387 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 2388 | 2389 | tunnel-agent@^0.6.0: 2390 | version "0.6.0" 2391 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2392 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2393 | dependencies: 2394 | safe-buffer "^5.0.1" 2395 | 2396 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2397 | version "0.14.5" 2398 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2399 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2400 | 2401 | type-check@~0.3.2: 2402 | version "0.3.2" 2403 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2404 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2405 | dependencies: 2406 | prelude-ls "~1.1.2" 2407 | 2408 | type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: 2409 | version "4.0.8" 2410 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2411 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2412 | 2413 | uglify-js@^3.1.4: 2414 | version "3.5.12" 2415 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.12.tgz#6b759cabc08c3e91fe82323d6387019f0c5864cd" 2416 | integrity sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q== 2417 | dependencies: 2418 | commander "~2.20.0" 2419 | source-map "~0.6.1" 2420 | 2421 | uri-js@^4.2.2: 2422 | version "4.2.2" 2423 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2424 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2425 | dependencies: 2426 | punycode "^2.1.0" 2427 | 2428 | urlgrey@^0.4.4: 2429 | version "0.4.4" 2430 | resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" 2431 | integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= 2432 | 2433 | uuid@^3.3.2: 2434 | version "3.3.2" 2435 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 2436 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 2437 | 2438 | v8-compile-cache@^2.0.3: 2439 | version "2.1.0" 2440 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2441 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 2442 | 2443 | validate-npm-package-license@^3.0.1: 2444 | version "3.0.4" 2445 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2446 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2447 | dependencies: 2448 | spdx-correct "^3.0.0" 2449 | spdx-expression-parse "^3.0.0" 2450 | 2451 | verror@1.10.0: 2452 | version "1.10.0" 2453 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2454 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2455 | dependencies: 2456 | assert-plus "^1.0.0" 2457 | core-util-is "1.0.2" 2458 | extsprintf "^1.2.0" 2459 | 2460 | which-module@^2.0.0: 2461 | version "2.0.0" 2462 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2463 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2464 | 2465 | which@1.3.1, which@^1.2.9, which@^1.3.0: 2466 | version "1.3.1" 2467 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2468 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2469 | dependencies: 2470 | isexe "^2.0.0" 2471 | 2472 | wide-align@1.1.3: 2473 | version "1.1.3" 2474 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2475 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2476 | dependencies: 2477 | string-width "^1.0.2 || 2" 2478 | 2479 | wordwrap@~0.0.2: 2480 | version "0.0.3" 2481 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2482 | integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= 2483 | 2484 | wordwrap@~1.0.0: 2485 | version "1.0.0" 2486 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2487 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 2488 | 2489 | wrap-ansi@^5.1.0: 2490 | version "5.1.0" 2491 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 2492 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 2493 | dependencies: 2494 | ansi-styles "^3.2.0" 2495 | string-width "^3.0.0" 2496 | strip-ansi "^5.0.0" 2497 | 2498 | wrappy@1: 2499 | version "1.0.2" 2500 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2501 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2502 | 2503 | write-file-atomic@^2.4.2: 2504 | version "2.4.2" 2505 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" 2506 | integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== 2507 | dependencies: 2508 | graceful-fs "^4.1.11" 2509 | imurmurhash "^0.1.4" 2510 | signal-exit "^3.0.2" 2511 | 2512 | write@1.0.3: 2513 | version "1.0.3" 2514 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 2515 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 2516 | dependencies: 2517 | mkdirp "^0.5.1" 2518 | 2519 | y18n@^4.0.0: 2520 | version "4.0.0" 2521 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2522 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2523 | 2524 | yallist@^2.1.2: 2525 | version "2.1.2" 2526 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2527 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2528 | 2529 | yargs-parser@13.1.1, yargs-parser@^13.0.0, yargs-parser@^13.1.0, yargs-parser@^13.1.1: 2530 | version "13.1.1" 2531 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 2532 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== 2533 | dependencies: 2534 | camelcase "^5.0.0" 2535 | decamelize "^1.2.0" 2536 | 2537 | yargs-unparser@1.6.0: 2538 | version "1.6.0" 2539 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" 2540 | integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== 2541 | dependencies: 2542 | flat "^4.1.0" 2543 | lodash "^4.17.15" 2544 | yargs "^13.3.0" 2545 | 2546 | yargs@13.3.0, yargs@^13.3.0: 2547 | version "13.3.0" 2548 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" 2549 | integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== 2550 | dependencies: 2551 | cliui "^5.0.0" 2552 | find-up "^3.0.0" 2553 | get-caller-file "^2.0.1" 2554 | require-directory "^2.1.1" 2555 | require-main-filename "^2.0.0" 2556 | set-blocking "^2.0.0" 2557 | string-width "^3.0.0" 2558 | which-module "^2.0.0" 2559 | y18n "^4.0.0" 2560 | yargs-parser "^13.1.1" 2561 | 2562 | yargs@^13.2.2: 2563 | version "13.2.4" 2564 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" 2565 | integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== 2566 | dependencies: 2567 | cliui "^5.0.0" 2568 | find-up "^3.0.0" 2569 | get-caller-file "^2.0.1" 2570 | os-locale "^3.1.0" 2571 | require-directory "^2.1.1" 2572 | require-main-filename "^2.0.0" 2573 | set-blocking "^2.0.0" 2574 | string-width "^3.0.0" 2575 | which-module "^2.0.0" 2576 | y18n "^4.0.0" 2577 | yargs-parser "^13.1.0" 2578 | --------------------------------------------------------------------------------