├── CONTRIBUTING.md ├── package.json ├── .eslintrc ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── index.js ├── README.md ├── CODE_OF_CONDUCT.md ├── .gitignore └── yarn.lock /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Project Guidelines 2 | 3 | ### No special guidelines here for now :D, hit us with your PR. 4 | **Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-firebase-auth", 3 | "version": "1.3.4", 4 | "description": "Firebase authentication middleware for Express.", 5 | "main": "index.js", 6 | "repository": "git@github.com:LeafyCode/express-firebase-auth.git", 7 | "author": "LeafyCode", 8 | "license": "MIT", 9 | "peerDependencies": { 10 | "express": "^4.16.0", 11 | "firebase-admin": "^5.3.0" 12 | }, 13 | "readme": "./README.md", 14 | "homepage": "https://leafycode.com/", 15 | "devDependencies": { 16 | "babel-eslint": "^8.0.1", 17 | "eslint": "^3.19.0 || ^4.3.0", 18 | "eslint-config-airbnb": "^15.1.0", 19 | "eslint-config-prettier": "^2.9.0", 20 | "eslint-plugin-import": "^2.7.0", 21 | "eslint-plugin-jsx-a11y": "^5.1.1", 22 | "eslint-plugin-prettier": "^2.6.0", 23 | "eslint-plugin-react": "^7.1.0", 24 | "prettier": "^1.12.1", 25 | "prettier-eslint": "^8.2.1" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es6": true, 5 | "node": true 6 | }, 7 | "extends": [ 8 | "airbnb", 9 | "prettier", 10 | "prettier/react" 11 | ], 12 | "parser": "babel-eslint", 13 | "rules": { 14 | "func-names": [ 15 | "error", 16 | "never" 17 | ], 18 | "no-use-before-define": [ 19 | 2, 20 | { 21 | "functions": false 22 | } 23 | ], 24 | "comma-dangle": [ 25 | "error", 26 | "never" 27 | ], 28 | "react/prop-types": 0, 29 | "global-require": 0, 30 | "no-underscore-dangle": 0, 31 | "react/jsx-filename-extension": [ 32 | "error", 33 | { 34 | "extensions": [ 35 | ".js", 36 | ".jsx" 37 | ] 38 | } 39 | ], 40 | "max-len": [ 41 | 2, 42 | 100, 43 | 4 44 | ], 45 | "import/prefer-default-export": 0, 46 | "prettier/prettier": [ 47 | "error", 48 | { 49 | "singleQuote": true, 50 | "printWidth": 100 51 | } 52 | ] 53 | }, 54 | "plugins": [ 55 | "prettier" 56 | ] 57 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 LeafyCode 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 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Description 4 | 5 | 6 | ## Related Issue 7 | 8 | 9 | 10 | 11 | 12 | ## Motivation and Context 13 | 14 | 15 | ## How Has This Been Tested? 16 | 17 | 18 | 19 | 20 | ## Screenshots (if appropriate): 21 | 22 | ## Types of changes 23 | 24 | - [ ] Bug fix (non-breaking change which fixes an issue) 25 | - [ ] New feature (non-breaking change which adds functionality) 26 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 27 | 28 | ## Checklist: 29 | 30 | 31 | - [ ] My code follows the code style of this project. 32 | - [ ] My change requires a change to the documentation. 33 | - [ ] I have updated the documentation accordingly. 34 | - [ ] I have read the **CONTRIBUTING** document. 35 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const createFirebaseAuth = ({ 2 | ignoredUrls, 3 | serviceAccount, 4 | firebase, 5 | checkEmailVerified = false, 6 | checkEmailVerifiedIgnoredUrls 7 | }) => { 8 | if (!serviceAccount && !firebase) { 9 | /* eslint-disable no-console */ 10 | console.log( 11 | '*********************************************************************************' 12 | ); 13 | console.log( 14 | 'Please provide the Firebase serviceAccount object or an initialized firebase app!' 15 | ); 16 | console.log( 17 | '*********************************************************************************' 18 | ); 19 | /* eslint-enable no-console */ 20 | } 21 | 22 | // If the user has passed an initialized firebase app, use that 23 | // or initialize one using the serviceAccount object. 24 | const firebaseAdmin = firebase || require.main.require('firebase-admin'); 25 | if (!firebase) { 26 | firebaseAdmin.initializeApp({ 27 | credential: firebaseAdmin.credential.cert(serviceAccount), 28 | databaseURL: `https://${process.env.FIREBASE_DATABASE_NAME}.firebaseio.com` 29 | }); 30 | } 31 | 32 | return (req, res, next) => { 33 | if (ignoredUrls && ignoredUrls.includes(req.path)) { 34 | next(); // If the url is in `ignoredUrls`, skip the authorization. 35 | } else { 36 | const authorizationHeader = req.header('Authorization'); 37 | 38 | // Send an error if the authorization header is missing 39 | if (!authorizationHeader) { 40 | res.status(401); 41 | return res.send({ error: 'Missing authorization header!' }); 42 | } 43 | 44 | const idToken = authorizationHeader.split(' ').pop(); 45 | 46 | // Authenticate user 47 | firebaseAdmin 48 | .auth() 49 | .verifyIdToken(idToken) 50 | .then(user => { 51 | // If checkEmailVerified is true, deny the request if the user's email is not verified 52 | // Skip if the url is in checkEmailVerifiedIgnoredUrls 53 | if ( 54 | checkEmailVerified && 55 | (checkEmailVerifiedIgnoredUrls && 56 | !checkEmailVerifiedIgnoredUrls.includes(req.originalUrl)) && 57 | !user.email_verified 58 | ) { 59 | res.status(401); 60 | return res.send({ error: 'You are not authorized!' }); 61 | } 62 | 63 | res.locals.user = user; // Set the user object to locals 64 | return next(); 65 | }) 66 | .catch(error => { 67 | res.status(401); 68 | res.send({ error: 'You are not authorized!' }); 69 | 70 | next(error); 71 | }); 72 | } 73 | }; 74 | }; 75 | 76 | module.exports = { 77 | createFirebaseAuth 78 | }; 79 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Express Firebase Auth Middleware 2 | [![npm version](https://badge.fury.io/js/express-firebase-auth.svg)](https://badge.fury.io/js/express-firebase-auth) 3 | 4 | Authenticate your endpoints with Firebase auth. 5 | 6 | ## Features: 7 | 8 | - Authenticate the user using Firebase before running the function. 9 | - Ability to skip authentication on public API endpoints. 10 | 11 | 12 | ## Installing / Getting started 13 | 14 | ```shell 15 | yarn add express-firebase-auth 16 | ``` 17 | 18 | In your app: 19 | 20 | ```javascript 21 | // Get this credentials file from the Firebase console. 22 | import serviceAccount from '../firebase-config.json'; 23 | // Import the package 24 | import { createFirebaseAuth } from 'express-firebase-auth'; 25 | 26 | // Initialize the firebase auth 27 | const firebaseAuth = createFirebaseAuth({ 28 | serviceAccount, 29 | ignoredUrls: [ 30 | '/ignore' 31 | ] 32 | }); 33 | app.use(firebaseAuth); 34 | ``` 35 | 36 | | Option | Value | 37 | | ------------- |:-------------------------------------------------------------------------------------------------------------------------:| 38 | | `serviceAccount` | ([**Note1**](#note1)) [Obtain this from firebase](https://firebase.google.com/docs/admin/setup#initialize_the_sdk) | 39 | | `firebase` | ([**Note1**](#note1)) An initialized firebase app. [Refer Firebase setup](https://firebase.google.com/docs/admin/setup) | 40 | | `ignoredUrls` | (*Optional*) An array of URLs where you need to skip the authentication. | 41 | | `checkEmailVerified` | (*Optional*) (Default: **false**) If set to **true**, only users with a verified email will be allowed access. | 42 | | `checkEmailVerifiedIgnoredUrls` | (*Optional*) An array of URLs where you need to skip the email verified check. | 43 | 44 | #### Note1 45 | You **must** provide either the `serviceAccount` credentials or an already initialized `firebase` app. 46 | If you are planning to use other services of Firebase in your app, you should initialize your own app. 47 | If you only want the authentication part, you can simply pass the `serviceAccount` credentials and `express-firebase-auth` will initialize the app for you. 48 | You cannot initialize two firebase apps. 49 | 50 | This package adds the `user` object returned by firebase to `res.locals.user`. You can use that inside your functions. 51 | 52 | ## Developing 53 | 54 | ### Prerequisites 55 | - NodeJS: [https://nodejs.org/en/](https://nodejs.org/en/) 56 | - Yarn: [https://yarnpkg.com/en/](https://yarnpkg.com/en/) 57 | - ESLint in your editor. 58 | 59 | 60 | ### Setting up Dev 61 | 62 | Clone the repo and run `yarn install`. Make sure you have an editor with an `eslint` plugin active. **Never** start working without `eslint`. 63 | 64 | 65 | ## Versioning 66 | 67 | We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [link to tags on this repository](/tags). 68 | 69 | ## Style guide 70 | 71 | Always follow the AirBnb Style Guide. 72 | 73 | ## License 74 | 75 | [MIT licensed](./LICENSE). -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hello@leafycode.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/node,phpstorm,netbeans,intellij,webstorm,visualstudiocode 3 | 4 | ### Intellij ### 5 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 6 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 7 | 8 | # User-specific stuff: 9 | .idea/**/workspace.xml 10 | .idea/**/tasks.xml 11 | .idea/dictionaries 12 | 13 | # Sensitive or high-churn files: 14 | .idea/**/dataSources/ 15 | .idea/**/dataSources.ids 16 | .idea/**/dataSources.xml 17 | .idea/**/dataSources.local.xml 18 | .idea/**/sqlDataSources.xml 19 | .idea/**/dynamic.xml 20 | .idea/**/uiDesigner.xml 21 | 22 | # Gradle: 23 | .idea/**/gradle.xml 24 | .idea/**/libraries 25 | 26 | # CMake 27 | cmake-build-debug/ 28 | 29 | # Mongo Explorer plugin: 30 | .idea/**/mongoSettings.xml 31 | 32 | ## File-based project format: 33 | *.iws 34 | 35 | ## Plugin-specific files: 36 | 37 | # IntelliJ 38 | /out/ 39 | 40 | # mpeltonen/sbt-idea plugin 41 | .idea_modules/ 42 | 43 | # JIRA plugin 44 | atlassian-ide-plugin.xml 45 | 46 | # Cursive Clojure plugin 47 | .idea/replstate.xml 48 | 49 | # Crashlytics plugin (for Android Studio and IntelliJ) 50 | com_crashlytics_export_strings.xml 51 | crashlytics.properties 52 | crashlytics-build.properties 53 | fabric.properties 54 | 55 | ### Intellij Patch ### 56 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 57 | 58 | # *.iml 59 | # modules.xml 60 | # .idea/misc.xml 61 | # *.ipr 62 | 63 | # Sonarlint plugin 64 | .idea/sonarlint 65 | 66 | ### NetBeans ### 67 | nbproject/private/ 68 | build/ 69 | nbbuild/ 70 | dist/ 71 | nbdist/ 72 | .nb-gradle/ 73 | 74 | ### Node ### 75 | # Logs 76 | logs 77 | *.log 78 | npm-debug.log* 79 | yarn-debug.log* 80 | yarn-error.log* 81 | 82 | # Runtime data 83 | pids 84 | *.pid 85 | *.seed 86 | *.pid.lock 87 | 88 | # Directory for instrumented libs generated by jscoverage/JSCover 89 | lib-cov 90 | 91 | # Coverage directory used by tools like istanbul 92 | coverage 93 | 94 | # nyc test coverage 95 | .nyc_output 96 | 97 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 98 | .grunt 99 | 100 | # Bower dependency directory (https://bower.io/) 101 | bower_components 102 | 103 | # node-waf configuration 104 | .lock-wscript 105 | 106 | # Compiled binary addons (http://nodejs.org/api/addons.html) 107 | build/Release 108 | 109 | # Dependency directories 110 | node_modules/ 111 | jspm_packages/ 112 | 113 | # Typescript v1 declaration files 114 | typings/ 115 | 116 | # Optional npm cache directory 117 | .npm 118 | 119 | # Optional eslint cache 120 | .eslintcache 121 | 122 | # Optional REPL history 123 | .node_repl_history 124 | 125 | # Output of 'npm pack' 126 | *.tgz 127 | 128 | # Yarn Integrity file 129 | .yarn-integrity 130 | 131 | # dotenv environment variables file 132 | .env 133 | 134 | 135 | ### PhpStorm ### 136 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 137 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 138 | 139 | # User-specific stuff: 140 | 141 | # Sensitive or high-churn files: 142 | 143 | # Gradle: 144 | 145 | # CMake 146 | 147 | # Mongo Explorer plugin: 148 | 149 | ## File-based project format: 150 | 151 | ## Plugin-specific files: 152 | 153 | # IntelliJ 154 | 155 | # mpeltonen/sbt-idea plugin 156 | 157 | # JIRA plugin 158 | 159 | # Cursive Clojure plugin 160 | 161 | # Crashlytics plugin (for Android Studio and IntelliJ) 162 | 163 | ### PhpStorm Patch ### 164 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 165 | 166 | # *.iml 167 | # modules.xml 168 | # .idea/misc.xml 169 | # *.ipr 170 | 171 | # Sonarlint plugin 172 | 173 | ### VisualStudioCode ### 174 | .vscode/* 175 | !.vscode/settings.json 176 | !.vscode/tasks.json 177 | !.vscode/launch.json 178 | !.vscode/extensions.json 179 | .history 180 | 181 | ### WebStorm ### 182 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 183 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 184 | 185 | # User-specific stuff: 186 | 187 | # Sensitive or high-churn files: 188 | 189 | # Gradle: 190 | 191 | # CMake 192 | 193 | # Mongo Explorer plugin: 194 | 195 | ## File-based project format: 196 | 197 | ## Plugin-specific files: 198 | 199 | # IntelliJ 200 | 201 | # mpeltonen/sbt-idea plugin 202 | 203 | # JIRA plugin 204 | 205 | # Cursive Clojure plugin 206 | 207 | # Crashlytics plugin (for Android Studio and IntelliJ) 208 | 209 | ### WebStorm Patch ### 210 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 211 | 212 | # *.iml 213 | # modules.xml 214 | # .idea/misc.xml 215 | # *.ipr 216 | 217 | # Sonarlint plugin 218 | 219 | # End of https://www.gitignore.io/api/node,phpstorm,netbeans,intellij,webstorm,visualstudiocode 220 | dist/* 221 | *.env 222 | 223 | *firebase-config.json 224 | 225 | 226 | # Created by https://www.gitignore.io/api/linux,windows 227 | 228 | ### Linux ### 229 | *~ 230 | 231 | # temporary files which can be created if a process still has a handle open of a deleted file 232 | .fuse_hidden* 233 | 234 | # KDE directory preferences 235 | .directory 236 | 237 | # Linux trash folder which might appear on any partition or disk 238 | .Trash-* 239 | 240 | # .nfs files are created when an open file is removed but is still being accessed 241 | .nfs* 242 | 243 | ### Windows ### 244 | # Windows thumbnail cache files 245 | Thumbs.db 246 | ehthumbs.db 247 | ehthumbs_vista.db 248 | 249 | # Folder config file 250 | Desktop.ini 251 | 252 | # Recycle Bin used on file shares 253 | $RECYCLE.BIN/ 254 | 255 | # Windows Installer files 256 | *.cab 257 | *.msi 258 | *.msm 259 | *.msp 260 | 261 | # Windows shortcuts 262 | *.lnk 263 | 264 | # End of https://www.gitignore.io/api/linux,windows 265 | 266 | 267 | # Created by https://www.gitignore.io/api/macos 268 | 269 | ### macOS ### 270 | *.DS_Store 271 | .AppleDouble 272 | .LSOverride 273 | 274 | # Icon must end with two \r 275 | Icon 276 | 277 | # Thumbnails 278 | ._* 279 | 280 | # Files that might appear in the root of a volume 281 | .DocumentRevisions-V100 282 | .fseventsd 283 | .Spotlight-V100 284 | .TemporaryItems 285 | .Trashes 286 | .VolumeIcon.icns 287 | .com.apple.timemachine.donotpresent 288 | 289 | # Directories potentially created on remote AFP share 290 | .AppleDB 291 | .AppleDesktop 292 | Network Trash Folder 293 | Temporary Items 294 | .apdisk 295 | 296 | # End of https://www.gitignore.io/api/macos -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | acorn-jsx@^3.0.0: 6 | version "3.0.1" 7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 8 | dependencies: 9 | acorn "^3.0.4" 10 | 11 | acorn@^3.0.4: 12 | version "3.3.0" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 14 | 15 | acorn@^5.1.1: 16 | version "5.1.2" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" 18 | 19 | acorn@^5.2.1: 20 | version "5.2.1" 21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" 22 | 23 | ajv-keywords@^2.1.0: 24 | version "2.1.0" 25 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" 26 | 27 | ajv@^5.2.0, ajv@^5.2.3: 28 | version "5.2.3" 29 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" 30 | dependencies: 31 | co "^4.6.0" 32 | fast-deep-equal "^1.0.0" 33 | json-schema-traverse "^0.3.0" 34 | json-stable-stringify "^1.0.1" 35 | 36 | ajv@^5.3.0: 37 | version "5.3.0" 38 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" 39 | dependencies: 40 | co "^4.6.0" 41 | fast-deep-equal "^1.0.0" 42 | fast-json-stable-stringify "^2.0.0" 43 | json-schema-traverse "^0.3.0" 44 | 45 | ansi-escapes@^3.0.0: 46 | version "3.0.0" 47 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" 48 | 49 | ansi-regex@^2.0.0, ansi-regex@^2.1.1: 50 | version "2.1.1" 51 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 52 | 53 | ansi-regex@^3.0.0: 54 | version "3.0.0" 55 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 56 | 57 | ansi-styles@^2.2.1: 58 | version "2.2.1" 59 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 60 | 61 | ansi-styles@^3.0.0, ansi-styles@^3.1.0: 62 | version "3.2.0" 63 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 64 | dependencies: 65 | color-convert "^1.9.0" 66 | 67 | argparse@^1.0.7: 68 | version "1.0.9" 69 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 70 | dependencies: 71 | sprintf-js "~1.0.2" 72 | 73 | aria-query@^0.7.0: 74 | version "0.7.0" 75 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" 76 | dependencies: 77 | ast-types-flow "0.0.7" 78 | 79 | array-includes@^3.0.3: 80 | version "3.0.3" 81 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 82 | dependencies: 83 | define-properties "^1.1.2" 84 | es-abstract "^1.7.0" 85 | 86 | array-union@^1.0.1: 87 | version "1.0.2" 88 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 89 | dependencies: 90 | array-uniq "^1.0.1" 91 | 92 | array-uniq@^1.0.1: 93 | version "1.0.3" 94 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 95 | 96 | arrify@^1.0.0: 97 | version "1.0.1" 98 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 99 | 100 | asap@~2.0.3: 101 | version "2.0.6" 102 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 103 | 104 | ast-types-flow@0.0.7: 105 | version "0.0.7" 106 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" 107 | 108 | axobject-query@^0.1.0: 109 | version "0.1.0" 110 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" 111 | dependencies: 112 | ast-types-flow "0.0.7" 113 | 114 | babel-code-frame@7.0.0-beta.0: 115 | version "7.0.0-beta.0" 116 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-beta.0.tgz#418a7b5f3f7dc9a4670e61b1158b4c5661bec98d" 117 | dependencies: 118 | chalk "^2.0.0" 119 | esutils "^2.0.2" 120 | js-tokens "^3.0.0" 121 | 122 | babel-code-frame@^6.22.0: 123 | version "6.26.0" 124 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 125 | dependencies: 126 | chalk "^1.1.3" 127 | esutils "^2.0.2" 128 | js-tokens "^3.0.2" 129 | 130 | babel-eslint@^8.0.1: 131 | version "8.0.1" 132 | resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.1.tgz#5d718be7a328625d006022eb293ed3008cbd6346" 133 | dependencies: 134 | babel-code-frame "7.0.0-beta.0" 135 | babel-traverse "7.0.0-beta.0" 136 | babel-types "7.0.0-beta.0" 137 | babylon "7.0.0-beta.22" 138 | 139 | babel-helper-function-name@7.0.0-beta.0: 140 | version "7.0.0-beta.0" 141 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-7.0.0-beta.0.tgz#d1b6779b647e5c5c31ebeb05e13b998e4d352d56" 142 | dependencies: 143 | babel-helper-get-function-arity "7.0.0-beta.0" 144 | babel-template "7.0.0-beta.0" 145 | babel-traverse "7.0.0-beta.0" 146 | babel-types "7.0.0-beta.0" 147 | 148 | babel-helper-get-function-arity@7.0.0-beta.0: 149 | version "7.0.0-beta.0" 150 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-beta.0.tgz#9d1ab7213bb5efe1ef1638a8ea1489969b5a8b6e" 151 | dependencies: 152 | babel-types "7.0.0-beta.0" 153 | 154 | babel-messages@7.0.0-beta.0: 155 | version "7.0.0-beta.0" 156 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-7.0.0-beta.0.tgz#6df01296e49fc8fbd0637394326a167f36da817b" 157 | 158 | babel-runtime@^6.18.0: 159 | version "6.26.0" 160 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 161 | dependencies: 162 | core-js "^2.4.0" 163 | regenerator-runtime "^0.11.0" 164 | 165 | babel-template@7.0.0-beta.0: 166 | version "7.0.0-beta.0" 167 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-beta.0.tgz#85083cf9e4395d5e48bf5154d7a8d6991cafecfb" 168 | dependencies: 169 | babel-traverse "7.0.0-beta.0" 170 | babel-types "7.0.0-beta.0" 171 | babylon "7.0.0-beta.22" 172 | lodash "^4.2.0" 173 | 174 | babel-traverse@7.0.0-beta.0: 175 | version "7.0.0-beta.0" 176 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-7.0.0-beta.0.tgz#da14be9b762f62a2f060db464eaafdd8cd072a41" 177 | dependencies: 178 | babel-code-frame "7.0.0-beta.0" 179 | babel-helper-function-name "7.0.0-beta.0" 180 | babel-messages "7.0.0-beta.0" 181 | babel-types "7.0.0-beta.0" 182 | babylon "7.0.0-beta.22" 183 | debug "^3.0.1" 184 | globals "^10.0.0" 185 | invariant "^2.2.0" 186 | lodash "^4.2.0" 187 | 188 | babel-types@7.0.0-beta.0: 189 | version "7.0.0-beta.0" 190 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.0.tgz#eb8b6e556470e6dcc4aef982d79ad229469b5169" 191 | dependencies: 192 | esutils "^2.0.2" 193 | lodash "^4.2.0" 194 | to-fast-properties "^2.0.0" 195 | 196 | babylon@7.0.0-beta.22: 197 | version "7.0.0-beta.22" 198 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65" 199 | 200 | balanced-match@^1.0.0: 201 | version "1.0.0" 202 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 203 | 204 | brace-expansion@^1.1.7: 205 | version "1.1.8" 206 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 207 | dependencies: 208 | balanced-match "^1.0.0" 209 | concat-map "0.0.1" 210 | 211 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 212 | version "1.1.1" 213 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 214 | 215 | caller-path@^0.1.0: 216 | version "0.1.0" 217 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 218 | dependencies: 219 | callsites "^0.2.0" 220 | 221 | callsites@^0.2.0: 222 | version "0.2.0" 223 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 224 | 225 | chalk@^1.1.3: 226 | version "1.1.3" 227 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 228 | dependencies: 229 | ansi-styles "^2.2.1" 230 | escape-string-regexp "^1.0.2" 231 | has-ansi "^2.0.0" 232 | strip-ansi "^3.0.0" 233 | supports-color "^2.0.0" 234 | 235 | chalk@^2.0.0, chalk@^2.1.0: 236 | version "2.1.0" 237 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" 238 | dependencies: 239 | ansi-styles "^3.1.0" 240 | escape-string-regexp "^1.0.5" 241 | supports-color "^4.0.0" 242 | 243 | circular-json@^0.3.1: 244 | version "0.3.3" 245 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 246 | 247 | cli-cursor@^2.1.0: 248 | version "2.1.0" 249 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 250 | dependencies: 251 | restore-cursor "^2.0.0" 252 | 253 | cli-width@^2.0.0: 254 | version "2.2.0" 255 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 256 | 257 | co@^4.6.0: 258 | version "4.6.0" 259 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 260 | 261 | color-convert@^1.9.0: 262 | version "1.9.0" 263 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 264 | dependencies: 265 | color-name "^1.1.1" 266 | 267 | color-name@^1.1.1: 268 | version "1.1.3" 269 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 270 | 271 | common-tags@^1.4.0: 272 | version "1.4.0" 273 | resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" 274 | dependencies: 275 | babel-runtime "^6.18.0" 276 | 277 | concat-map@0.0.1: 278 | version "0.0.1" 279 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 280 | 281 | concat-stream@^1.6.0: 282 | version "1.6.0" 283 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 284 | dependencies: 285 | inherits "^2.0.3" 286 | readable-stream "^2.2.2" 287 | typedarray "^0.0.6" 288 | 289 | contains-path@^0.1.0: 290 | version "0.1.0" 291 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 292 | 293 | core-js@^1.0.0: 294 | version "1.2.7" 295 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" 296 | 297 | core-js@^2.4.0: 298 | version "2.5.1" 299 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" 300 | 301 | core-util-is@~1.0.0: 302 | version "1.0.2" 303 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 304 | 305 | cross-spawn@^5.1.0: 306 | version "5.1.0" 307 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 308 | dependencies: 309 | lru-cache "^4.0.1" 310 | shebang-command "^1.2.0" 311 | which "^1.2.9" 312 | 313 | damerau-levenshtein@^1.0.0: 314 | version "1.0.4" 315 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" 316 | 317 | debug@^2.6.8: 318 | version "2.6.9" 319 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 320 | dependencies: 321 | ms "2.0.0" 322 | 323 | debug@^3.0.1: 324 | version "3.1.0" 325 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 326 | dependencies: 327 | ms "2.0.0" 328 | 329 | deep-is@~0.1.3: 330 | version "0.1.3" 331 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 332 | 333 | define-properties@^1.1.2: 334 | version "1.1.2" 335 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 336 | dependencies: 337 | foreach "^2.0.5" 338 | object-keys "^1.0.8" 339 | 340 | del@^2.0.2: 341 | version "2.2.2" 342 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 343 | dependencies: 344 | globby "^5.0.0" 345 | is-path-cwd "^1.0.0" 346 | is-path-in-cwd "^1.0.0" 347 | object-assign "^4.0.1" 348 | pify "^2.0.0" 349 | pinkie-promise "^2.0.0" 350 | rimraf "^2.2.8" 351 | 352 | dlv@^1.1.0: 353 | version "1.1.0" 354 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" 355 | 356 | doctrine@1.5.0: 357 | version "1.5.0" 358 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 359 | dependencies: 360 | esutils "^2.0.2" 361 | isarray "^1.0.0" 362 | 363 | doctrine@^2.0.0: 364 | version "2.0.0" 365 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 366 | dependencies: 367 | esutils "^2.0.2" 368 | isarray "^1.0.0" 369 | 370 | emoji-regex@^6.1.0: 371 | version "6.5.1" 372 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" 373 | 374 | encoding@^0.1.11: 375 | version "0.1.12" 376 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 377 | dependencies: 378 | iconv-lite "~0.4.13" 379 | 380 | error-ex@^1.2.0: 381 | version "1.3.1" 382 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 383 | dependencies: 384 | is-arrayish "^0.2.1" 385 | 386 | es-abstract@^1.7.0: 387 | version "1.8.2" 388 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" 389 | dependencies: 390 | es-to-primitive "^1.1.1" 391 | function-bind "^1.1.1" 392 | has "^1.0.1" 393 | is-callable "^1.1.3" 394 | is-regex "^1.0.4" 395 | 396 | es-to-primitive@^1.1.1: 397 | version "1.1.1" 398 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 399 | dependencies: 400 | is-callable "^1.1.1" 401 | is-date-object "^1.0.1" 402 | is-symbol "^1.0.1" 403 | 404 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 405 | version "1.0.5" 406 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 407 | 408 | eslint-config-airbnb-base@^11.3.0: 409 | version "11.3.2" 410 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a" 411 | dependencies: 412 | eslint-restricted-globals "^0.1.1" 413 | 414 | eslint-config-airbnb@^15.1.0: 415 | version "15.1.0" 416 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.1.0.tgz#fd432965a906e30139001ba830f58f73aeddae8e" 417 | dependencies: 418 | eslint-config-airbnb-base "^11.3.0" 419 | 420 | eslint-config-prettier@^2.9.0: 421 | version "2.9.0" 422 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz#5ecd65174d486c22dff389fe036febf502d468a3" 423 | dependencies: 424 | get-stdin "^5.0.1" 425 | 426 | eslint-import-resolver-node@^0.3.1: 427 | version "0.3.1" 428 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" 429 | dependencies: 430 | debug "^2.6.8" 431 | resolve "^1.2.0" 432 | 433 | eslint-module-utils@^2.1.1: 434 | version "2.1.1" 435 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" 436 | dependencies: 437 | debug "^2.6.8" 438 | pkg-dir "^1.0.0" 439 | 440 | eslint-plugin-import@^2.7.0: 441 | version "2.7.0" 442 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" 443 | dependencies: 444 | builtin-modules "^1.1.1" 445 | contains-path "^0.1.0" 446 | debug "^2.6.8" 447 | doctrine "1.5.0" 448 | eslint-import-resolver-node "^0.3.1" 449 | eslint-module-utils "^2.1.1" 450 | has "^1.0.1" 451 | lodash.cond "^4.3.0" 452 | minimatch "^3.0.3" 453 | read-pkg-up "^2.0.0" 454 | 455 | eslint-plugin-jsx-a11y@^5.1.1: 456 | version "5.1.1" 457 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" 458 | dependencies: 459 | aria-query "^0.7.0" 460 | array-includes "^3.0.3" 461 | ast-types-flow "0.0.7" 462 | axobject-query "^0.1.0" 463 | damerau-levenshtein "^1.0.0" 464 | emoji-regex "^6.1.0" 465 | jsx-ast-utils "^1.4.0" 466 | 467 | eslint-plugin-prettier@^2.6.0: 468 | version "2.6.0" 469 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" 470 | dependencies: 471 | fast-diff "^1.1.1" 472 | jest-docblock "^21.0.0" 473 | 474 | eslint-plugin-react@^7.1.0: 475 | version "7.4.0" 476 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a" 477 | dependencies: 478 | doctrine "^2.0.0" 479 | has "^1.0.1" 480 | jsx-ast-utils "^2.0.0" 481 | prop-types "^15.5.10" 482 | 483 | eslint-restricted-globals@^0.1.1: 484 | version "0.1.1" 485 | resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" 486 | 487 | eslint-scope@^3.7.1: 488 | version "3.7.1" 489 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 490 | dependencies: 491 | esrecurse "^4.1.0" 492 | estraverse "^4.1.1" 493 | 494 | "eslint@^3.19.0 || ^4.3.0": 495 | version "4.7.2" 496 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.7.2.tgz#ff6f5f5193848a27ee9b627be3e73fb9cb5e662e" 497 | dependencies: 498 | ajv "^5.2.0" 499 | babel-code-frame "^6.22.0" 500 | chalk "^2.1.0" 501 | concat-stream "^1.6.0" 502 | cross-spawn "^5.1.0" 503 | debug "^3.0.1" 504 | doctrine "^2.0.0" 505 | eslint-scope "^3.7.1" 506 | espree "^3.5.1" 507 | esquery "^1.0.0" 508 | estraverse "^4.2.0" 509 | esutils "^2.0.2" 510 | file-entry-cache "^2.0.0" 511 | functional-red-black-tree "^1.0.1" 512 | glob "^7.1.2" 513 | globals "^9.17.0" 514 | ignore "^3.3.3" 515 | imurmurhash "^0.1.4" 516 | inquirer "^3.0.6" 517 | is-resolvable "^1.0.0" 518 | js-yaml "^3.9.1" 519 | json-stable-stringify "^1.0.1" 520 | levn "^0.3.0" 521 | lodash "^4.17.4" 522 | minimatch "^3.0.2" 523 | mkdirp "^0.5.1" 524 | natural-compare "^1.4.0" 525 | optionator "^0.8.2" 526 | path-is-inside "^1.0.2" 527 | pluralize "^7.0.0" 528 | progress "^2.0.0" 529 | require-uncached "^1.0.3" 530 | semver "^5.3.0" 531 | strip-ansi "^4.0.0" 532 | strip-json-comments "~2.0.1" 533 | table "^4.0.1" 534 | text-table "~0.2.0" 535 | 536 | eslint@^4.5.0: 537 | version "4.11.0" 538 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34" 539 | dependencies: 540 | ajv "^5.3.0" 541 | babel-code-frame "^6.22.0" 542 | chalk "^2.1.0" 543 | concat-stream "^1.6.0" 544 | cross-spawn "^5.1.0" 545 | debug "^3.0.1" 546 | doctrine "^2.0.0" 547 | eslint-scope "^3.7.1" 548 | espree "^3.5.2" 549 | esquery "^1.0.0" 550 | estraverse "^4.2.0" 551 | esutils "^2.0.2" 552 | file-entry-cache "^2.0.0" 553 | functional-red-black-tree "^1.0.1" 554 | glob "^7.1.2" 555 | globals "^9.17.0" 556 | ignore "^3.3.3" 557 | imurmurhash "^0.1.4" 558 | inquirer "^3.0.6" 559 | is-resolvable "^1.0.0" 560 | js-yaml "^3.9.1" 561 | json-stable-stringify-without-jsonify "^1.0.1" 562 | levn "^0.3.0" 563 | lodash "^4.17.4" 564 | minimatch "^3.0.2" 565 | mkdirp "^0.5.1" 566 | natural-compare "^1.4.0" 567 | optionator "^0.8.2" 568 | path-is-inside "^1.0.2" 569 | pluralize "^7.0.0" 570 | progress "^2.0.0" 571 | require-uncached "^1.0.3" 572 | semver "^5.3.0" 573 | strip-ansi "^4.0.0" 574 | strip-json-comments "~2.0.1" 575 | table "^4.0.1" 576 | text-table "~0.2.0" 577 | 578 | espree@^3.5.1: 579 | version "3.5.1" 580 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" 581 | dependencies: 582 | acorn "^5.1.1" 583 | acorn-jsx "^3.0.0" 584 | 585 | espree@^3.5.2: 586 | version "3.5.2" 587 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" 588 | dependencies: 589 | acorn "^5.2.1" 590 | acorn-jsx "^3.0.0" 591 | 592 | esprima@^4.0.0: 593 | version "4.0.0" 594 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 595 | 596 | esquery@^1.0.0: 597 | version "1.0.0" 598 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 599 | dependencies: 600 | estraverse "^4.0.0" 601 | 602 | esrecurse@^4.1.0: 603 | version "4.2.0" 604 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 605 | dependencies: 606 | estraverse "^4.1.0" 607 | object-assign "^4.0.1" 608 | 609 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: 610 | version "4.2.0" 611 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 612 | 613 | esutils@^2.0.2: 614 | version "2.0.2" 615 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 616 | 617 | external-editor@^2.0.4: 618 | version "2.0.5" 619 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" 620 | dependencies: 621 | iconv-lite "^0.4.17" 622 | jschardet "^1.4.2" 623 | tmp "^0.0.33" 624 | 625 | fast-deep-equal@^1.0.0: 626 | version "1.0.0" 627 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 628 | 629 | fast-diff@^1.1.1: 630 | version "1.1.2" 631 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" 632 | 633 | fast-json-stable-stringify@^2.0.0: 634 | version "2.0.0" 635 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 636 | 637 | fast-levenshtein@~2.0.4: 638 | version "2.0.6" 639 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 640 | 641 | fbjs@^0.8.16: 642 | version "0.8.16" 643 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" 644 | dependencies: 645 | core-js "^1.0.0" 646 | isomorphic-fetch "^2.1.1" 647 | loose-envify "^1.0.0" 648 | object-assign "^4.1.0" 649 | promise "^7.1.1" 650 | setimmediate "^1.0.5" 651 | ua-parser-js "^0.7.9" 652 | 653 | figures@^2.0.0: 654 | version "2.0.0" 655 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 656 | dependencies: 657 | escape-string-regexp "^1.0.5" 658 | 659 | file-entry-cache@^2.0.0: 660 | version "2.0.0" 661 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 662 | dependencies: 663 | flat-cache "^1.2.1" 664 | object-assign "^4.0.1" 665 | 666 | find-up@^1.0.0: 667 | version "1.1.2" 668 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 669 | dependencies: 670 | path-exists "^2.0.0" 671 | pinkie-promise "^2.0.0" 672 | 673 | find-up@^2.0.0: 674 | version "2.1.0" 675 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 676 | dependencies: 677 | locate-path "^2.0.0" 678 | 679 | flat-cache@^1.2.1: 680 | version "1.3.0" 681 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 682 | dependencies: 683 | circular-json "^0.3.1" 684 | del "^2.0.2" 685 | graceful-fs "^4.1.2" 686 | write "^0.2.1" 687 | 688 | foreach@^2.0.5: 689 | version "2.0.5" 690 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 691 | 692 | fs.realpath@^1.0.0: 693 | version "1.0.0" 694 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 695 | 696 | function-bind@^1.0.2, function-bind@^1.1.1: 697 | version "1.1.1" 698 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 699 | 700 | functional-red-black-tree@^1.0.1: 701 | version "1.0.1" 702 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 703 | 704 | get-stdin@^5.0.1: 705 | version "5.0.1" 706 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" 707 | 708 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: 709 | version "7.1.2" 710 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 711 | dependencies: 712 | fs.realpath "^1.0.0" 713 | inflight "^1.0.4" 714 | inherits "2" 715 | minimatch "^3.0.4" 716 | once "^1.3.0" 717 | path-is-absolute "^1.0.0" 718 | 719 | globals@^10.0.0: 720 | version "10.1.0" 721 | resolved "https://registry.yarnpkg.com/globals/-/globals-10.1.0.tgz#4425a1881be0d336b4a823a82a7be725d5dd987c" 722 | 723 | globals@^9.17.0: 724 | version "9.18.0" 725 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 726 | 727 | globby@^5.0.0: 728 | version "5.0.0" 729 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 730 | dependencies: 731 | array-union "^1.0.1" 732 | arrify "^1.0.0" 733 | glob "^7.0.3" 734 | object-assign "^4.0.1" 735 | pify "^2.0.0" 736 | pinkie-promise "^2.0.0" 737 | 738 | graceful-fs@^4.1.2: 739 | version "4.1.11" 740 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 741 | 742 | has-ansi@^2.0.0: 743 | version "2.0.0" 744 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 745 | dependencies: 746 | ansi-regex "^2.0.0" 747 | 748 | has-flag@^2.0.0: 749 | version "2.0.0" 750 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 751 | 752 | has@^1.0.1: 753 | version "1.0.1" 754 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 755 | dependencies: 756 | function-bind "^1.0.2" 757 | 758 | hosted-git-info@^2.1.4: 759 | version "2.5.0" 760 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 761 | 762 | iconv-lite@^0.4.17, iconv-lite@~0.4.13: 763 | version "0.4.19" 764 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 765 | 766 | ignore@^3.3.3: 767 | version "3.3.5" 768 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" 769 | 770 | imurmurhash@^0.1.4: 771 | version "0.1.4" 772 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 773 | 774 | indent-string@^3.2.0: 775 | version "3.2.0" 776 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" 777 | 778 | inflight@^1.0.4: 779 | version "1.0.6" 780 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 781 | dependencies: 782 | once "^1.3.0" 783 | wrappy "1" 784 | 785 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 786 | version "2.0.3" 787 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 788 | 789 | inquirer@^3.0.6: 790 | version "3.3.0" 791 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 792 | dependencies: 793 | ansi-escapes "^3.0.0" 794 | chalk "^2.0.0" 795 | cli-cursor "^2.1.0" 796 | cli-width "^2.0.0" 797 | external-editor "^2.0.4" 798 | figures "^2.0.0" 799 | lodash "^4.3.0" 800 | mute-stream "0.0.7" 801 | run-async "^2.2.0" 802 | rx-lite "^4.0.8" 803 | rx-lite-aggregates "^4.0.8" 804 | string-width "^2.1.0" 805 | strip-ansi "^4.0.0" 806 | through "^2.3.6" 807 | 808 | invariant@^2.2.0: 809 | version "2.2.2" 810 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 811 | dependencies: 812 | loose-envify "^1.0.0" 813 | 814 | is-arrayish@^0.2.1: 815 | version "0.2.1" 816 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 817 | 818 | is-builtin-module@^1.0.0: 819 | version "1.0.0" 820 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 821 | dependencies: 822 | builtin-modules "^1.0.0" 823 | 824 | is-callable@^1.1.1, is-callable@^1.1.3: 825 | version "1.1.3" 826 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 827 | 828 | is-date-object@^1.0.1: 829 | version "1.0.1" 830 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 831 | 832 | is-fullwidth-code-point@^2.0.0: 833 | version "2.0.0" 834 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 835 | 836 | is-path-cwd@^1.0.0: 837 | version "1.0.0" 838 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 839 | 840 | is-path-in-cwd@^1.0.0: 841 | version "1.0.0" 842 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 843 | dependencies: 844 | is-path-inside "^1.0.0" 845 | 846 | is-path-inside@^1.0.0: 847 | version "1.0.0" 848 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 849 | dependencies: 850 | path-is-inside "^1.0.1" 851 | 852 | is-promise@^2.1.0: 853 | version "2.1.0" 854 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 855 | 856 | is-regex@^1.0.4: 857 | version "1.0.4" 858 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 859 | dependencies: 860 | has "^1.0.1" 861 | 862 | is-resolvable@^1.0.0: 863 | version "1.0.0" 864 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 865 | dependencies: 866 | tryit "^1.0.1" 867 | 868 | is-stream@^1.0.1: 869 | version "1.1.0" 870 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 871 | 872 | is-symbol@^1.0.1: 873 | version "1.0.1" 874 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 875 | 876 | isarray@^1.0.0, isarray@~1.0.0: 877 | version "1.0.0" 878 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 879 | 880 | isexe@^2.0.0: 881 | version "2.0.0" 882 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 883 | 884 | isomorphic-fetch@^2.1.1: 885 | version "2.2.1" 886 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 887 | dependencies: 888 | node-fetch "^1.0.1" 889 | whatwg-fetch ">=0.10.0" 890 | 891 | jest-docblock@^21.0.0: 892 | version "21.2.0" 893 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" 894 | 895 | js-tokens@^3.0.0, js-tokens@^3.0.2: 896 | version "3.0.2" 897 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 898 | 899 | js-yaml@^3.9.1: 900 | version "3.10.0" 901 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" 902 | dependencies: 903 | argparse "^1.0.7" 904 | esprima "^4.0.0" 905 | 906 | jschardet@^1.4.2: 907 | version "1.5.1" 908 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" 909 | 910 | json-schema-traverse@^0.3.0: 911 | version "0.3.1" 912 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 913 | 914 | json-stable-stringify-without-jsonify@^1.0.1: 915 | version "1.0.1" 916 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 917 | 918 | json-stable-stringify@^1.0.1: 919 | version "1.0.1" 920 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 921 | dependencies: 922 | jsonify "~0.0.0" 923 | 924 | jsonify@~0.0.0: 925 | version "0.0.0" 926 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 927 | 928 | jsx-ast-utils@^1.4.0: 929 | version "1.4.1" 930 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" 931 | 932 | jsx-ast-utils@^2.0.0: 933 | version "2.0.1" 934 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" 935 | dependencies: 936 | array-includes "^3.0.3" 937 | 938 | levn@^0.3.0, levn@~0.3.0: 939 | version "0.3.0" 940 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 941 | dependencies: 942 | prelude-ls "~1.1.2" 943 | type-check "~0.3.2" 944 | 945 | load-json-file@^2.0.0: 946 | version "2.0.0" 947 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 948 | dependencies: 949 | graceful-fs "^4.1.2" 950 | parse-json "^2.2.0" 951 | pify "^2.0.0" 952 | strip-bom "^3.0.0" 953 | 954 | locate-path@^2.0.0: 955 | version "2.0.0" 956 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 957 | dependencies: 958 | p-locate "^2.0.0" 959 | path-exists "^3.0.0" 960 | 961 | lodash.cond@^4.3.0: 962 | version "4.5.2" 963 | resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" 964 | 965 | lodash.merge@^4.6.0: 966 | version "4.6.0" 967 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" 968 | 969 | lodash.unescape@4.0.1: 970 | version "4.0.1" 971 | resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" 972 | 973 | lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: 974 | version "4.17.4" 975 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 976 | 977 | loglevel-colored-level-prefix@^1.0.0: 978 | version "1.0.0" 979 | resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" 980 | dependencies: 981 | chalk "^1.1.3" 982 | loglevel "^1.4.1" 983 | 984 | loglevel@^1.4.1: 985 | version "1.5.1" 986 | resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" 987 | 988 | loose-envify@^1.0.0, loose-envify@^1.3.1: 989 | version "1.3.1" 990 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 991 | dependencies: 992 | js-tokens "^3.0.0" 993 | 994 | lru-cache@^4.0.1: 995 | version "4.1.1" 996 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 997 | dependencies: 998 | pseudomap "^1.0.2" 999 | yallist "^2.1.2" 1000 | 1001 | mimic-fn@^1.0.0: 1002 | version "1.1.0" 1003 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 1004 | 1005 | minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 1006 | version "3.0.4" 1007 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1008 | dependencies: 1009 | brace-expansion "^1.1.7" 1010 | 1011 | minimist@0.0.8: 1012 | version "0.0.8" 1013 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1014 | 1015 | mkdirp@^0.5.1: 1016 | version "0.5.1" 1017 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1018 | dependencies: 1019 | minimist "0.0.8" 1020 | 1021 | ms@2.0.0: 1022 | version "2.0.0" 1023 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1024 | 1025 | mute-stream@0.0.7: 1026 | version "0.0.7" 1027 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1028 | 1029 | natural-compare@^1.4.0: 1030 | version "1.4.0" 1031 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1032 | 1033 | node-fetch@^1.0.1: 1034 | version "1.7.3" 1035 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 1036 | dependencies: 1037 | encoding "^0.1.11" 1038 | is-stream "^1.0.1" 1039 | 1040 | normalize-package-data@^2.3.2: 1041 | version "2.4.0" 1042 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1043 | dependencies: 1044 | hosted-git-info "^2.1.4" 1045 | is-builtin-module "^1.0.0" 1046 | semver "2 || 3 || 4 || 5" 1047 | validate-npm-package-license "^3.0.1" 1048 | 1049 | object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: 1050 | version "4.1.1" 1051 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1052 | 1053 | object-keys@^1.0.8: 1054 | version "1.0.11" 1055 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 1056 | 1057 | once@^1.3.0: 1058 | version "1.4.0" 1059 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1060 | dependencies: 1061 | wrappy "1" 1062 | 1063 | onetime@^2.0.0: 1064 | version "2.0.1" 1065 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1066 | dependencies: 1067 | mimic-fn "^1.0.0" 1068 | 1069 | optionator@^0.8.2: 1070 | version "0.8.2" 1071 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1072 | dependencies: 1073 | deep-is "~0.1.3" 1074 | fast-levenshtein "~2.0.4" 1075 | levn "~0.3.0" 1076 | prelude-ls "~1.1.2" 1077 | type-check "~0.3.2" 1078 | wordwrap "~1.0.0" 1079 | 1080 | os-tmpdir@~1.0.2: 1081 | version "1.0.2" 1082 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1083 | 1084 | p-limit@^1.1.0: 1085 | version "1.1.0" 1086 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 1087 | 1088 | p-locate@^2.0.0: 1089 | version "2.0.0" 1090 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1091 | dependencies: 1092 | p-limit "^1.1.0" 1093 | 1094 | parse-json@^2.2.0: 1095 | version "2.2.0" 1096 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1097 | dependencies: 1098 | error-ex "^1.2.0" 1099 | 1100 | path-exists@^2.0.0: 1101 | version "2.1.0" 1102 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1103 | dependencies: 1104 | pinkie-promise "^2.0.0" 1105 | 1106 | path-exists@^3.0.0: 1107 | version "3.0.0" 1108 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1109 | 1110 | path-is-absolute@^1.0.0: 1111 | version "1.0.1" 1112 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1113 | 1114 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 1115 | version "1.0.2" 1116 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1117 | 1118 | path-parse@^1.0.5: 1119 | version "1.0.5" 1120 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 1121 | 1122 | path-type@^2.0.0: 1123 | version "2.0.0" 1124 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1125 | dependencies: 1126 | pify "^2.0.0" 1127 | 1128 | pify@^2.0.0: 1129 | version "2.3.0" 1130 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1131 | 1132 | pinkie-promise@^2.0.0: 1133 | version "2.0.1" 1134 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1135 | dependencies: 1136 | pinkie "^2.0.0" 1137 | 1138 | pinkie@^2.0.0: 1139 | version "2.0.4" 1140 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1141 | 1142 | pkg-dir@^1.0.0: 1143 | version "1.0.0" 1144 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 1145 | dependencies: 1146 | find-up "^1.0.0" 1147 | 1148 | pluralize@^7.0.0: 1149 | version "7.0.0" 1150 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 1151 | 1152 | prelude-ls@~1.1.2: 1153 | version "1.1.2" 1154 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1155 | 1156 | prettier-eslint@^8.2.1: 1157 | version "8.2.1" 1158 | resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.2.1.tgz#cd66cf8b1a2c2fce2217f1b28474809031b9a77c" 1159 | dependencies: 1160 | common-tags "^1.4.0" 1161 | dlv "^1.1.0" 1162 | eslint "^4.5.0" 1163 | indent-string "^3.2.0" 1164 | lodash.merge "^4.6.0" 1165 | loglevel-colored-level-prefix "^1.0.0" 1166 | prettier "^1.7.1" 1167 | pretty-format "^20.0.3" 1168 | require-relative "^0.8.7" 1169 | typescript "^2.5.1" 1170 | typescript-eslint-parser "^8.0.0" 1171 | 1172 | prettier@^1.12.1: 1173 | version "1.12.1" 1174 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" 1175 | 1176 | prettier@^1.7.1: 1177 | version "1.8.2" 1178 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8" 1179 | 1180 | pretty-format@^20.0.3: 1181 | version "20.0.3" 1182 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" 1183 | dependencies: 1184 | ansi-regex "^2.1.1" 1185 | ansi-styles "^3.0.0" 1186 | 1187 | process-nextick-args@~1.0.6: 1188 | version "1.0.7" 1189 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1190 | 1191 | progress@^2.0.0: 1192 | version "2.0.0" 1193 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 1194 | 1195 | promise@^7.1.1: 1196 | version "7.3.1" 1197 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 1198 | dependencies: 1199 | asap "~2.0.3" 1200 | 1201 | prop-types@^15.5.10: 1202 | version "15.6.0" 1203 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" 1204 | dependencies: 1205 | fbjs "^0.8.16" 1206 | loose-envify "^1.3.1" 1207 | object-assign "^4.1.1" 1208 | 1209 | pseudomap@^1.0.2: 1210 | version "1.0.2" 1211 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1212 | 1213 | read-pkg-up@^2.0.0: 1214 | version "2.0.0" 1215 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1216 | dependencies: 1217 | find-up "^2.0.0" 1218 | read-pkg "^2.0.0" 1219 | 1220 | read-pkg@^2.0.0: 1221 | version "2.0.0" 1222 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1223 | dependencies: 1224 | load-json-file "^2.0.0" 1225 | normalize-package-data "^2.3.2" 1226 | path-type "^2.0.0" 1227 | 1228 | readable-stream@^2.2.2: 1229 | version "2.3.3" 1230 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 1231 | dependencies: 1232 | core-util-is "~1.0.0" 1233 | inherits "~2.0.3" 1234 | isarray "~1.0.0" 1235 | process-nextick-args "~1.0.6" 1236 | safe-buffer "~5.1.1" 1237 | string_decoder "~1.0.3" 1238 | util-deprecate "~1.0.1" 1239 | 1240 | regenerator-runtime@^0.11.0: 1241 | version "0.11.0" 1242 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" 1243 | 1244 | require-relative@^0.8.7: 1245 | version "0.8.7" 1246 | resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" 1247 | 1248 | require-uncached@^1.0.3: 1249 | version "1.0.3" 1250 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 1251 | dependencies: 1252 | caller-path "^0.1.0" 1253 | resolve-from "^1.0.0" 1254 | 1255 | resolve-from@^1.0.0: 1256 | version "1.0.1" 1257 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 1258 | 1259 | resolve@^1.2.0: 1260 | version "1.4.0" 1261 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" 1262 | dependencies: 1263 | path-parse "^1.0.5" 1264 | 1265 | restore-cursor@^2.0.0: 1266 | version "2.0.0" 1267 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1268 | dependencies: 1269 | onetime "^2.0.0" 1270 | signal-exit "^3.0.2" 1271 | 1272 | rimraf@^2.2.8: 1273 | version "2.6.2" 1274 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 1275 | dependencies: 1276 | glob "^7.0.5" 1277 | 1278 | run-async@^2.2.0: 1279 | version "2.3.0" 1280 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1281 | dependencies: 1282 | is-promise "^2.1.0" 1283 | 1284 | rx-lite-aggregates@^4.0.8: 1285 | version "4.0.8" 1286 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 1287 | dependencies: 1288 | rx-lite "*" 1289 | 1290 | rx-lite@*, rx-lite@^4.0.8: 1291 | version "4.0.8" 1292 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 1293 | 1294 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1295 | version "5.1.1" 1296 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1297 | 1298 | "semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.3.0: 1299 | version "5.4.1" 1300 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 1301 | 1302 | setimmediate@^1.0.5: 1303 | version "1.0.5" 1304 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1305 | 1306 | shebang-command@^1.2.0: 1307 | version "1.2.0" 1308 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1309 | dependencies: 1310 | shebang-regex "^1.0.0" 1311 | 1312 | shebang-regex@^1.0.0: 1313 | version "1.0.0" 1314 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1315 | 1316 | signal-exit@^3.0.2: 1317 | version "3.0.2" 1318 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1319 | 1320 | slice-ansi@1.0.0: 1321 | version "1.0.0" 1322 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 1323 | dependencies: 1324 | is-fullwidth-code-point "^2.0.0" 1325 | 1326 | spdx-correct@~1.0.0: 1327 | version "1.0.2" 1328 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 1329 | dependencies: 1330 | spdx-license-ids "^1.0.2" 1331 | 1332 | spdx-expression-parse@~1.0.0: 1333 | version "1.0.4" 1334 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 1335 | 1336 | spdx-license-ids@^1.0.2: 1337 | version "1.2.2" 1338 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 1339 | 1340 | sprintf-js@~1.0.2: 1341 | version "1.0.3" 1342 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1343 | 1344 | string-width@^2.1.0, string-width@^2.1.1: 1345 | version "2.1.1" 1346 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1347 | dependencies: 1348 | is-fullwidth-code-point "^2.0.0" 1349 | strip-ansi "^4.0.0" 1350 | 1351 | string_decoder@~1.0.3: 1352 | version "1.0.3" 1353 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 1354 | dependencies: 1355 | safe-buffer "~5.1.0" 1356 | 1357 | strip-ansi@^3.0.0: 1358 | version "3.0.1" 1359 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1360 | dependencies: 1361 | ansi-regex "^2.0.0" 1362 | 1363 | strip-ansi@^4.0.0: 1364 | version "4.0.0" 1365 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1366 | dependencies: 1367 | ansi-regex "^3.0.0" 1368 | 1369 | strip-bom@^3.0.0: 1370 | version "3.0.0" 1371 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1372 | 1373 | strip-json-comments@~2.0.1: 1374 | version "2.0.1" 1375 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1376 | 1377 | supports-color@^2.0.0: 1378 | version "2.0.0" 1379 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1380 | 1381 | supports-color@^4.0.0: 1382 | version "4.4.0" 1383 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" 1384 | dependencies: 1385 | has-flag "^2.0.0" 1386 | 1387 | table@^4.0.1: 1388 | version "4.0.2" 1389 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" 1390 | dependencies: 1391 | ajv "^5.2.3" 1392 | ajv-keywords "^2.1.0" 1393 | chalk "^2.1.0" 1394 | lodash "^4.17.4" 1395 | slice-ansi "1.0.0" 1396 | string-width "^2.1.1" 1397 | 1398 | text-table@~0.2.0: 1399 | version "0.2.0" 1400 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1401 | 1402 | through@^2.3.6: 1403 | version "2.3.8" 1404 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1405 | 1406 | tmp@^0.0.33: 1407 | version "0.0.33" 1408 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1409 | dependencies: 1410 | os-tmpdir "~1.0.2" 1411 | 1412 | to-fast-properties@^2.0.0: 1413 | version "2.0.0" 1414 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1415 | 1416 | tryit@^1.0.1: 1417 | version "1.0.3" 1418 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 1419 | 1420 | type-check@~0.3.2: 1421 | version "0.3.2" 1422 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1423 | dependencies: 1424 | prelude-ls "~1.1.2" 1425 | 1426 | typedarray@^0.0.6: 1427 | version "0.0.6" 1428 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1429 | 1430 | typescript-eslint-parser@^8.0.0: 1431 | version "8.0.1" 1432 | resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-8.0.1.tgz#e8cac537d996e16c3dbb0d7c4d509799e67afe0c" 1433 | dependencies: 1434 | lodash.unescape "4.0.1" 1435 | semver "5.4.1" 1436 | 1437 | typescript@^2.5.1: 1438 | version "2.6.1" 1439 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" 1440 | 1441 | ua-parser-js@^0.7.9: 1442 | version "0.7.14" 1443 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" 1444 | 1445 | util-deprecate@~1.0.1: 1446 | version "1.0.2" 1447 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1448 | 1449 | validate-npm-package-license@^3.0.1: 1450 | version "3.0.1" 1451 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 1452 | dependencies: 1453 | spdx-correct "~1.0.0" 1454 | spdx-expression-parse "~1.0.0" 1455 | 1456 | whatwg-fetch@>=0.10.0: 1457 | version "2.0.3" 1458 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" 1459 | 1460 | which@^1.2.9: 1461 | version "1.3.0" 1462 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 1463 | dependencies: 1464 | isexe "^2.0.0" 1465 | 1466 | wordwrap@~1.0.0: 1467 | version "1.0.0" 1468 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1469 | 1470 | wrappy@1: 1471 | version "1.0.2" 1472 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1473 | 1474 | write@^0.2.1: 1475 | version "0.2.1" 1476 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1477 | dependencies: 1478 | mkdirp "^0.5.1" 1479 | 1480 | yallist@^2.1.2: 1481 | version "2.1.2" 1482 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1483 | --------------------------------------------------------------------------------