├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── LICENSE.md ├── README.md ├── circle.yml ├── dist ├── browser │ ├── alpine-router.js │ └── alpine-router.js.map ├── es6 │ ├── router.js │ └── router.js.map └── typings │ └── router.d.ts ├── example ├── index.html └── main.js ├── package.json ├── src └── router.ts ├── test ├── helpers │ └── setup-browser-env.js ├── router.spec.ts └── test.ts ├── tsconfig.json ├── tsconfig.prod.json ├── tsconfig.test.json ├── webpack.config.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .ava 3 | npm-debug.log 4 | debug.log -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Launch Chrome against localhost", 6 | "type": "chrome", 7 | "request": "launch", 8 | "url": "http://localhost:8080", 9 | "webRoot": "${workspaceRoot}" 10 | }, 11 | { 12 | "name": "Attach to Chrome", 13 | "type": "chrome", 14 | "request": "attach", 15 | "port": 9222, 16 | "webRoot": "${workspaceRoot}" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "./node_modules/typescript/lib", 3 | "editor.tabSize": 2, 4 | "editor.minimap.enabled": true 5 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "0.1.0", 5 | "command": "tsc", 6 | "isShellCommand": true, 7 | "args": ["-p", "tsconfig.test.json", "-w"], 8 | "showOutput": "silent", 9 | "isWatching": true, 10 | "problemMatcher": "$tsc-watch" 11 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Chris Rabuse 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Alpine Router 2 | [![CircleCI](https://circleci.com/gh/Mandosis/Alpine-Router.svg?style=svg)](https://circleci.com/gh/Mandosis/Alpine-Router) 3 | 4 | A dependency free client-side router featuring child routes. 5 | 6 | [View Demo](http://chrisrabuse.com/Alpine-Router) 7 | 8 | **Planned Features:** 9 | 10 | - Wild Card Routes 11 | - Relative navigation 12 | - Parameters 13 | - Protected Routes (Auth Guard) 14 | - `routerLink` element attribute to navigate to the assigned route on click 15 | 16 | # Instructions 17 | 18 | ## Install 19 | 20 | ``` 21 | npm install --save alpine-router 22 | ``` 23 | 24 | ## Initialize Router 25 | 26 | ### ES2015+ or TypeScript 27 | ```javascript 28 | import Router from 'alpine-router'; 29 | 30 | const router = new Router([ 31 | { 32 | path: '/', 33 | template: `

Hello World!

` 34 | } 35 | ]); 36 | ``` 37 | 38 | ### Browser Ready 39 | 40 | Load the library using. For compatability with Internet Explorer or older browsers polyfills are required for `fetch`, `Promise` and the `Map` global object. 41 | 42 | ```html 43 | 44 | ``` 45 | 46 | Then initilize the router 47 | 48 | ```javascript 49 | var router = new AlpineRouter.default([ 50 | { 51 | path: '/', 52 | template: `

Hello World!

` 53 | } 54 | ]); 55 | ``` 56 | 57 | ## Add Base Tag 58 | 59 | A base tag is required in the head for friendly urls. If you wish to use hash urls or are loading from a file system instead of a server do not add the base tag. 60 | 61 | ```html 62 | 63 | ``` 64 | 65 | ## Add Router Outlet 66 | Add the router outlet to the body to render templates in. 67 | 68 | ``` 69 | 70 | ``` 71 | 72 | ## Navigate 73 | 74 | To change routes use the navigate function 75 | ```javascript 76 | router.navigate('/'); 77 | ``` 78 | 79 | ## Child Routes 80 | 81 | Child routes are nested inside a parent route using the `children` property. For the child route to load a `` tag is required in the parents template. 82 | 83 | ```javascript 84 | const router = new Router([ 85 | { 86 | path: 'parent', 87 | template: `

Parent

`, 88 | children: [ 89 | { 90 | path: 'child', 91 | template: `

Child

` 92 | } 93 | ] 94 | } 95 | ]); 96 | ``` 97 | 98 | ## External Templates 99 | 100 | To retrieve an external template, use `templateUrl` property instead of `template`. 101 | 102 | ```javascript 103 | const router = new Router([ 104 | { 105 | path: 'external', 106 | templateUrl: 'templates/example.html' 107 | } 108 | ]); 109 | ``` 110 | 111 | 112 | # Development 113 | 114 | Clone the repository and run `yarn`. 115 | 116 | **Commands:** 117 | - To build the project run `yarn run build` 118 | - To watch files for changes and build run `yarn run watch` 119 | - To run unit tests run `yarn run test` 120 | - To run tests automatically run `yarn run test-watch` and in a new tab or window `yarn run ava-watch` 121 | 122 | # License 123 | MIT License 124 | 125 | Copyright (c) 2017 Chris Rabuse 126 | 127 | Permission is hereby granted, free of charge, to any person obtaining a copy 128 | of this software and associated documentation files (the "Software"), to deal 129 | in the Software without restriction, including without limitation the rights 130 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 131 | copies of the Software, and to permit persons to whom the Software is 132 | furnished to do so, subject to the following conditions: 133 | 134 | The above copyright notice and this permission notice shall be included in all 135 | copies or substantial portions of the Software. 136 | 137 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 138 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 139 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 140 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 141 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 142 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 143 | SOFTWARE. 144 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | general: 2 | branches: 3 | ignore: 4 | - gh-pages 5 | only: 6 | - master 7 | machine: 8 | node: 9 | version: 6.9.4 10 | environment: 11 | PATH: "${PATH}:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin" 12 | 13 | dependencies: 14 | override: 15 | - yarn 16 | cache_directories: 17 | - ~/.cache/yarn 18 | 19 | test: 20 | override: 21 | - yarn test -------------------------------------------------------------------------------- /dist/browser/alpine-router.js: -------------------------------------------------------------------------------- 1 | var AlpineRouter=function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="D:\\Chris\\Workspace\\alpine\\router",t(t.s=0)}([function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;rExample"}]?');this._getWindowUrlAndNavigate(),window.onhashchange=function(){r._getWindowUrlAndNavigate()}}return o(e,[{key:"getPathTokens",value:function(e){var t=e.split("/");return""===t[0]&&""===t[1]&&(t=[""]),t}},{key:"sanitizePath",value:function(e){return"#"===e.charAt(0)&&(e=e.slice(1,e.length)),"/"===e.charAt(0)&&"/"!==e&&(e=e.slice(1,e.length)),e}},{key:"navigate",value:function(e){e=this.sanitizePath(e);var t=this.getPathTokens(e),r=new Map,n=!0,o=!1,a=void 0;try{for(var i,u=t[Symbol.iterator]();!(n=(i=u.next()).done);n=!0){var l=i.value;r.set(l,!1)}}catch(e){o=!0,a=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw a}}var s=this._getRoutes(this._routes,t,r);return s.length>0?(this._changeBrowserUrl(e),this._addTemplatesToDom(s),!0):(console.error("Router: No route found for path '"+e+"'."),!1)}},{key:"_getRoutes",value:function(e,t,r,n){n=n||[];var o=!0,a=!1,i=void 0;try{for(var u,l=e[Symbol.iterator]();!(o=(u=l.next()).done);o=!0){var s=u.value,c=this.getPathTokens(s.path);r=this._compareTokens(c,t,r);var f=this._countConsecutiveTokens(r),h=f===r.size,v=f0&&(t=t.slice(n,e.length+1));for(var c=0;cExample\"}]?');\n }\n this._getWindowUrlAndNavigate();\n window.onhashchange = function () {\n _this._getWindowUrlAndNavigate();\n };\n }\n\n _createClass(Router, [{\n key: 'getPathTokens',\n value: function getPathTokens(path) {\n var tokens = path.split('/');\n if (tokens[0] === '' && tokens[1] === '') {\n var token = path;\n tokens = [''];\n }\n return tokens;\n }\n }, {\n key: 'sanitizePath',\n value: function sanitizePath(path) {\n if (path.charAt(0) === '#') {\n path = path.slice(1, path.length);\n }\n if (path.charAt(0) === '/' && path !== '/') {\n path = path.slice(1, path.length);\n ;\n }\n return path;\n }\n }, {\n key: 'navigate',\n value: function navigate(url) {\n url = this.sanitizePath(url);\n var urlTokens = this.getPathTokens(url);\n var urlMap = new Map();\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = urlTokens[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var token = _step2.value;\n\n urlMap.set(token, false);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var result = this._getRoutes(this._routes, urlTokens, urlMap);\n if (result.length > 0) {\n this._changeBrowserUrl(url);\n this._addTemplatesToDom(result);\n return true;\n }\n console.error('Router: No route found for path \\'' + url + '\\'.');\n return false;\n }\n }, {\n key: '_getRoutes',\n value: function _getRoutes(routes, urlTokens, urlMap, routeHistory) {\n routeHistory = routeHistory || [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = routes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var route = _step3.value;\n\n var routeTokens = this.getPathTokens(route.path);\n urlMap = this._compareTokens(routeTokens, urlTokens, urlMap);\n var consecutiveCount = this._countConsecutiveTokens(urlMap);\n var isFullPathMatch = consecutiveCount === urlMap.size;\n var isPartialMatch = consecutiveCount < urlMap.size && consecutiveCount !== 0;\n if (isFullPathMatch) {\n routeHistory.push(route);\n return routeHistory;\n }\n if (isPartialMatch && route.children) {\n routeHistory.push(route);\n return this._getRoutes(route.children, urlTokens, urlMap, routeHistory);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return [];\n }\n }, {\n key: '_compareTokens',\n value: function _compareTokens(routeTokens, urlTokens, urlMap) {\n var seen = 0;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = urlTokens[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var token = _step4.value;\n\n if (urlMap.get(token)) {\n seen++;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n if (seen > 0) {\n urlTokens = urlTokens.slice(seen, routeTokens.length + 1);\n }\n for (var it = 0; it < urlTokens.length; it++) {\n var route = routeTokens[it];\n var url = urlTokens[it];\n if (!urlMap.get(url)) {\n if (route === undefined) {\n return urlMap;\n }\n if (route === url) {\n urlMap.set(url, true);\n }\n }\n }\n return urlMap;\n }\n }, {\n key: '_countConsecutiveTokens',\n value: function _countConsecutiveTokens(tokenMap) {\n var count = 0;\n var isLastTokenAMatch = true;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = tokenMap[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var token = _step5.value;\n\n if (token[1] && isLastTokenAMatch) {\n count++;\n } else {\n return count;\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n return count;\n }\n }, {\n key: '_getWindowUrlAndNavigate',\n value: function _getWindowUrlAndNavigate() {\n if (this._baseHrefValue) {\n var location = window.location.pathname;\n location = location.substring(this._baseHrefValue.length, location.length);\n return this.navigate(location);\n }\n this.navigate(window.location.hash);\n }\n }, {\n key: '_changeBrowserUrl',\n value: function _changeBrowserUrl(path) {\n var finalPath = this._getAndAppendBaseHref(path);\n history.pushState('', path, finalPath);\n }\n }, {\n key: '_getAndAppendBaseHref',\n value: function _getAndAppendBaseHref(path) {\n if (path === '/') {\n path = '';\n }\n var baseHref = this._baseHrefValue;\n if (baseHref && baseHref !== '/') {\n return baseHref + path;\n }\n if (baseHref && baseHref === '/') {\n return path;\n }\n return '#/' + path;\n }\n }, {\n key: '_addTemplatesToDom',\n value: function _addTemplatesToDom(routes) {\n var _this2 = this;\n\n var _loop = function _loop(it) {\n var outlets = document.getElementsByTagName('router-outlet');\n if (!outlets[it]) {\n console.error('Router: router-outlet missing.');\n }\n if (routes[it].template) {\n outlets[it].innerHTML = routes[it].template;\n } else {\n _this2._getRemoteTemplate(routes[it].templateUrl).then(function (template) {\n outlets[it].innerHTML = template;\n }).catch(function (err) {\n console.error('Router: Failed to get template.\\n' + err);\n });\n }\n };\n\n for (var it = 0; it < routes.length; it++) {\n _loop(it);\n }\n }\n }, {\n key: '_getRemoteTemplate',\n value: function _getRemoteTemplate(url) {\n return new Promise(function (resolve, reject) {\n fetch(url).then(function (response) {\n return response.text();\n }).then(function (body) {\n return resolve(body);\n }).catch(function (error) {\n return reject(error);\n });\n });\n }\n }, {\n key: 'routes',\n get: function get() {\n return this._routes;\n }\n }, {\n key: '_baseHrefValue',\n get: function get() {\n var baseElement = document.getElementsByTagName('base')[0];\n var baseHref = void 0;\n if (baseElement) {\n return baseElement.attributes.getNamedItem('href').value;\n }\n }\n }]);\n\n return Router;\n}();\n\nexports.default = Router;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// alpine-router.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"D:\\\\Chris\\\\Workspace\\\\alpine\\\\router\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1ffc87250a903becdbd6","/**\r\n * Interface for route data\r\n */\r\nexport interface Route {\r\n path: string;\r\n template?: string;\r\n templateUrl?: string;\r\n children?: Route[];\r\n}\r\n\r\n/**\r\n * Client-side router for single page applications\r\n */\r\nexport default class Router {\r\n private _routes: Route[] = [];\r\n\r\n constructor(routes: Route[]) {\r\n\r\n if (Array.isArray(routes)) {\r\n for (let route of routes) {\r\n this._routes.push(route);\r\n }\r\n } else {\r\n console.error('Router: Failed to create router.\\nDid you enter an array of objects in the following format [{ path: \"example\", template: \"

Example

\"}]?')\r\n }\r\n\r\n this._getWindowUrlAndNavigate();\r\n\r\n window.onhashchange = () => {\r\n this._getWindowUrlAndNavigate();\r\n }\r\n\r\n }\r\n\r\n get routes(): Route[] {\r\n return this._routes;\r\n }\r\n\r\n /**\r\n * Get tokens from a path\r\n * \r\n * @param path Path to get tokens from\r\n * @returns List of tokens from path\r\n */\r\n getPathTokens(path: string): string[] {\r\n let tokens = path.split('/');\r\n\r\n if (tokens[0] === '' && tokens[1] === '') {\r\n let token = path;\r\n tokens = [''];\r\n }\r\n \r\n return tokens;\r\n }\r\n\r\n /**\r\n * Sanitize path and remove # and / from the beginning\r\n * \r\n * @param path Path to sanitize\r\n * @return Sanitized path\r\n */\r\n private sanitizePath(path: string): string {\r\n if (path.charAt(0) === '#') {\r\n path = path.slice(1, path.length);\r\n }\r\n\r\n if (path.charAt(0) === '/' && path !== '/') {\r\n path = path.slice(1, path.length);;\r\n }\r\n\r\n return path;\r\n }\r\n\r\n /**\r\n * Navigate to new path\r\n * \r\n * @param path Path to navigate to.\r\n * @returns Success of navigation.\r\n */\r\n public navigate(url: string): boolean {\r\n\r\n url = this.sanitizePath(url);\r\n\r\n // Get url tokens\r\n let urlTokens = this.getPathTokens(url);\r\n let urlMap = new Map();\r\n \r\n for (let token of urlTokens) {\r\n urlMap.set(token, false);\r\n }\r\n\r\n let result = this._getRoutes(this._routes, urlTokens, urlMap);\r\n\r\n if (result.length > 0) {\r\n this._changeBrowserUrl(url);\r\n this._addTemplatesToDom(result);\r\n return true;\r\n } \r\n\r\n console.error(`Router: No route found for path '${url}'.`)\r\n return false;\r\n }\r\n\r\n /**\r\n * Match and return routes\r\n * \r\n * @param routes Routes to match\r\n * @param urlTokens URL Tokens\r\n * @param urlMap URL Map\r\n * @param routeHistory Route History\r\n */\r\n private _getRoutes(routes: Route[], urlTokens: string[], urlMap: Map, routeHistory?: Route[]): Route[] {\r\n routeHistory = routeHistory || [];\r\n\r\n // iterate through routes\r\n for (let route of routes) {\r\n // get route path tokens\r\n const routeTokens = this.getPathTokens(route.path);\r\n urlMap = this._compareTokens(routeTokens, urlTokens, urlMap);\r\n const consecutiveCount = this._countConsecutiveTokens(urlMap);\r\n const isFullPathMatch = (consecutiveCount === urlMap.size);\r\n const isPartialMatch = (consecutiveCount < urlMap.size && consecutiveCount !== 0);\r\n\r\n if (isFullPathMatch) {\r\n routeHistory.push(route);\r\n return routeHistory;\r\n }\r\n\r\n if (isPartialMatch && route.children) {\r\n routeHistory.push(route);\r\n return this._getRoutes(route.children, urlTokens, urlMap, routeHistory);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private _compareTokens(routeTokens: string[], urlTokens: string[], urlMap: Map) {\r\n // for loop to count number of seen tokens\r\n let seen = 0;\r\n for (let token of urlTokens) {\r\n if (urlMap.get(token)) { seen++;}\r\n }\r\n\r\n if (seen > 0) {\r\n urlTokens = urlTokens.slice(seen, routeTokens.length + 1);\r\n }\r\n\r\n // compare route tokens with url tokens\r\n for (let it = 0; it < urlTokens.length; it++) {\r\n const route = routeTokens[it];\r\n const url = urlTokens[it];\r\n\r\n if (!urlMap.get(url)) {\r\n if (route === undefined) { return urlMap; }\r\n\r\n if (route === url) {\r\n urlMap.set(url, true);\r\n }\r\n }\r\n }\r\n\r\n return urlMap;\r\n }\r\n\r\n\r\n /**\r\n * Gets consecutive token match count\r\n * \r\n * @param tokenMap Map of tokens\r\n * @return Consecutive match count\r\n */\r\n private _countConsecutiveTokens(tokenMap: Map) {\r\n let count = 0;\r\n let isLastTokenAMatch = true;\r\n\r\n for (let token of tokenMap) {\r\n if (token[1] && isLastTokenAMatch) {\r\n count++;\r\n } else {\r\n return count;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n /**\r\n * Gets the current window url and navigate\r\n */\r\n private _getWindowUrlAndNavigate() {\r\n if (this._baseHrefValue) {\r\n let location = window.location.pathname;\r\n\r\n location = location.substring(\r\n this._baseHrefValue.length,\r\n location.length\r\n );\r\n\r\n return this.navigate(location);\r\n }\r\n\r\n this.navigate(window.location.hash);\r\n }\r\n\r\n /**\r\n * Changes url in address bar after the domain name\r\n * \r\n * @param path Path to change url to\r\n */\r\n private _changeBrowserUrl(path: string) {\r\n let finalPath = this._getAndAppendBaseHref(path);\r\n history.pushState('', path, finalPath);\r\n }\r\n\r\n /**\r\n * Gets and appends the base href value if it exists\r\n * \r\n * @param url URL for route\r\n * @return modified url adjusted for base tag if it exists\r\n */\r\n private _getAndAppendBaseHref(path: string) {\r\n if (path === '/') { path = '' }\r\n let baseHref = this._baseHrefValue;\r\n\r\n if (baseHref && baseHref !== '/') {\r\n return baseHref + path;\r\n }\r\n\r\n if (baseHref && baseHref === '/') {\r\n return path;\r\n }\r\n\r\n return '#/' + path;\r\n }\r\n\r\n /**\r\n * Get value of of the href attribute in the base tag if it exists\r\n * \r\n * @returns Value of href attributes\r\n */\r\n private get _baseHrefValue(): string {\r\n let baseElement: HTMLElement = document.getElementsByTagName('base')[0];\r\n let baseHref: string;\r\n\r\n if (baseElement) {\r\n return baseElement\r\n .attributes\r\n .getNamedItem('href')\r\n .value;\r\n }\r\n }\r\n\r\n /**\r\n * Get the matched routes and add the templates to the DOM\r\n * \r\n * @param routes Matched routes\r\n */\r\n private _addTemplatesToDom(routes: Route[]) {\r\n for (let it = 0; it < routes.length; it++) {\r\n const outlets = document.getElementsByTagName('router-outlet');\r\n\r\n if (!outlets[it]) { console.error('Router: router-outlet missing.')}\r\n\r\n if (routes[it].template) {\r\n outlets[it].innerHTML = routes[it].template;\r\n } else {\r\n this._getRemoteTemplate(routes[it].templateUrl)\r\n .then((template: string) => {\r\n outlets[it].innerHTML = template;\r\n })\r\n .catch((err) => {\r\n console.error(`Router: Failed to get template.\\n${err}`);\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Get a remote html file for the template\r\n * @param url Url for resource\r\n */\r\n private _getRemoteTemplate(url: string) {\r\n return new Promise((resolve, reject) => {\r\n fetch(url)\r\n .then((response) => response.text())\r\n .then((body: string) => resolve(body))\r\n .catch((error: string) => reject(error));\r\n });\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/router.ts"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/es6/router.js: -------------------------------------------------------------------------------- 1 | export default class Router { 2 | constructor(routes) { 3 | this._routes = []; 4 | if (Array.isArray(routes)) { 5 | for (let route of routes) { 6 | this._routes.push(route); 7 | } 8 | } 9 | else { 10 | console.error('Router: Failed to create router.\nDid you enter an array of objects in the following format [{ path: "example", template: "

Example

"}]?'); 11 | } 12 | this._getWindowUrlAndNavigate(); 13 | window.onhashchange = () => { 14 | this._getWindowUrlAndNavigate(); 15 | }; 16 | } 17 | get routes() { 18 | return this._routes; 19 | } 20 | getPathTokens(path) { 21 | let tokens = path.split('/'); 22 | if (tokens[0] === '' && tokens[1] === '') { 23 | let token = path; 24 | tokens = ['']; 25 | } 26 | return tokens; 27 | } 28 | sanitizePath(path) { 29 | if (path.charAt(0) === '#') { 30 | path = path.slice(1, path.length); 31 | } 32 | if (path.charAt(0) === '/' && path !== '/') { 33 | path = path.slice(1, path.length); 34 | ; 35 | } 36 | return path; 37 | } 38 | navigate(url) { 39 | url = this.sanitizePath(url); 40 | let urlTokens = this.getPathTokens(url); 41 | let urlMap = new Map(); 42 | for (let token of urlTokens) { 43 | urlMap.set(token, false); 44 | } 45 | let result = this._getRoutes(this._routes, urlTokens, urlMap); 46 | if (result.length > 0) { 47 | this._changeBrowserUrl(url); 48 | this._addTemplatesToDom(result); 49 | return true; 50 | } 51 | console.error(`Router: No route found for path '${url}'.`); 52 | return false; 53 | } 54 | _getRoutes(routes, urlTokens, urlMap, routeHistory) { 55 | routeHistory = routeHistory || []; 56 | for (let route of routes) { 57 | const routeTokens = this.getPathTokens(route.path); 58 | urlMap = this._compareTokens(routeTokens, urlTokens, urlMap); 59 | const consecutiveCount = this._countConsecutiveTokens(urlMap); 60 | const isFullPathMatch = (consecutiveCount === urlMap.size); 61 | const isPartialMatch = (consecutiveCount < urlMap.size && consecutiveCount !== 0); 62 | if (isFullPathMatch) { 63 | routeHistory.push(route); 64 | return routeHistory; 65 | } 66 | if (isPartialMatch && route.children) { 67 | routeHistory.push(route); 68 | return this._getRoutes(route.children, urlTokens, urlMap, routeHistory); 69 | } 70 | } 71 | return []; 72 | } 73 | _compareTokens(routeTokens, urlTokens, urlMap) { 74 | let seen = 0; 75 | for (let token of urlTokens) { 76 | if (urlMap.get(token)) { 77 | seen++; 78 | } 79 | } 80 | if (seen > 0) { 81 | urlTokens = urlTokens.slice(seen, routeTokens.length + 1); 82 | } 83 | for (let it = 0; it < urlTokens.length; it++) { 84 | const route = routeTokens[it]; 85 | const url = urlTokens[it]; 86 | if (!urlMap.get(url)) { 87 | if (route === undefined) { 88 | return urlMap; 89 | } 90 | if (route === url) { 91 | urlMap.set(url, true); 92 | } 93 | } 94 | } 95 | return urlMap; 96 | } 97 | _countConsecutiveTokens(tokenMap) { 98 | let count = 0; 99 | let isLastTokenAMatch = true; 100 | for (let token of tokenMap) { 101 | if (token[1] && isLastTokenAMatch) { 102 | count++; 103 | } 104 | else { 105 | return count; 106 | } 107 | } 108 | return count; 109 | } 110 | _getWindowUrlAndNavigate() { 111 | if (this._baseHrefValue) { 112 | let location = window.location.pathname; 113 | location = location.substring(this._baseHrefValue.length, location.length); 114 | return this.navigate(location); 115 | } 116 | this.navigate(window.location.hash); 117 | } 118 | _changeBrowserUrl(path) { 119 | let finalPath = this._getAndAppendBaseHref(path); 120 | history.pushState('', path, finalPath); 121 | } 122 | _getAndAppendBaseHref(path) { 123 | if (path === '/') { 124 | path = ''; 125 | } 126 | let baseHref = this._baseHrefValue; 127 | if (baseHref && baseHref !== '/') { 128 | return baseHref + path; 129 | } 130 | if (baseHref && baseHref === '/') { 131 | return path; 132 | } 133 | return '#/' + path; 134 | } 135 | get _baseHrefValue() { 136 | let baseElement = document.getElementsByTagName('base')[0]; 137 | let baseHref; 138 | if (baseElement) { 139 | return baseElement 140 | .attributes 141 | .getNamedItem('href') 142 | .value; 143 | } 144 | } 145 | _addTemplatesToDom(routes) { 146 | for (let it = 0; it < routes.length; it++) { 147 | const outlets = document.getElementsByTagName('router-outlet'); 148 | if (!outlets[it]) { 149 | console.error('Router: router-outlet missing.'); 150 | } 151 | if (routes[it].template) { 152 | outlets[it].innerHTML = routes[it].template; 153 | } 154 | else { 155 | this._getRemoteTemplate(routes[it].templateUrl) 156 | .then((template) => { 157 | outlets[it].innerHTML = template; 158 | }) 159 | .catch((err) => { 160 | console.error(`Router: Failed to get template.\n${err}`); 161 | }); 162 | } 163 | } 164 | } 165 | _getRemoteTemplate(url) { 166 | return new Promise((resolve, reject) => { 167 | fetch(url) 168 | .then((response) => response.text()) 169 | .then((body) => resolve(body)) 170 | .catch((error) => reject(error)); 171 | }); 172 | } 173 | } 174 | //# sourceMappingURL=router.js.map -------------------------------------------------------------------------------- /dist/es6/router.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO;IAGZ,YAAY,MAAe;QAFnB,YAAO,GAAY,EAAE,CAAC;QAI5B,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,iJAAiJ,CAAC,CAAA;QAClK,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,MAAM,CAAC,YAAY,GAAG;YACpB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAA;IAEH,CAAC;IAED,IAAI,MAAM;QACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAQD,aAAa,CAAC,IAAY;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAQO,YAAY,CAAC,IAAY;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAAA,CAAC;QACvC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAQK,QAAQ,CAAC,GAAW;QAEzB,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAG7B,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9D,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;QAC1D,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAUO,UAAU,CAAC,MAAe,EAAE,SAAmB,EAAE,MAA4B,EAAE,YAAsB;QAC3G,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAGlC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,eAAe,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,cAAc,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,IAAI,gBAAgB,KAAK,CAAC,CAAC,CAAC;YAElF,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM,CAAC,YAAY,CAAC;YACtB,CAAC;YAED,EAAE,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACrC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,MAAM,CAAC,EAAE,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,WAAqB,EAAE,SAAmB,EAAE,MAA4B;QAE7F,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC;YAC5B,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,EAAE,CAAC;YAAA,CAAC;QACnC,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACb,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAGD,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAE1B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrB,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;oBAAC,MAAM,CAAC,MAAM,CAAC;gBAAC,CAAC;gBAE3C,EAAE,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IASO,uBAAuB,CAAC,QAA8B;QAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAE7B,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;YAC3B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC;gBAClC,KAAK,EAAE,CAAC;YACV,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAKO,wBAAwB;QAC9B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1B,QAAQ,CAAC,MAAM,CAChB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAOO,iBAAiB,CAAC,IAAY;QACpC,IAAI,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAQO,qBAAqB,CAAC,IAAY;QACxC,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YAAC,IAAI,GAAG,EAAE,CAAA;QAAC,CAAC;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAEnC,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAOD,IAAY,cAAc;QACxB,IAAI,WAAW,GAAgB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,QAAgB,CAAC;QAErB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,WAAW;iBACf,UAAU;iBACV,YAAY,CAAC,MAAM,CAAC;iBACpB,KAAK,CAAC;QACX,CAAC;IACH,CAAC;IAOO,kBAAkB,CAAC,MAAe;QACxC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAE/D,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;YAAA,CAAC;YAEpE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;YAC9C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;qBAC5C,IAAI,CAAC,CAAC,QAAgB;oBACrB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC;gBACnC,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG;oBACT,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC;QAEH,CAAC;IACH,CAAC;IAMO,kBAAkB,CAAC,GAAW;QACpC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;YACjC,KAAK,CAAC,GAAG,CAAC;iBACP,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACnC,IAAI,CAAC,CAAC,IAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;iBACrC,KAAK,CAAC,CAAC,KAAa,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;CAEF"} -------------------------------------------------------------------------------- /dist/typings/router.d.ts: -------------------------------------------------------------------------------- 1 | export interface Route { 2 | path: string; 3 | template?: string; 4 | templateUrl?: string; 5 | children?: Route[]; 6 | } 7 | export default class Router { 8 | private _routes; 9 | constructor(routes: Route[]); 10 | readonly routes: Route[]; 11 | getPathTokens(path: string): string[]; 12 | private sanitizePath(path); 13 | navigate(url: string): boolean; 14 | private _getRoutes(routes, urlTokens, urlMap, routeHistory?); 15 | private _compareTokens(routeTokens, urlTokens, urlMap); 16 | private _countConsecutiveTokens(tokenMap); 17 | private _getWindowUrlAndNavigate(); 18 | private _changeBrowserUrl(path); 19 | private _getAndAppendBaseHref(path); 20 | private readonly _baseHrefValue; 21 | private _addTemplatesToDom(routes); 22 | private _getRemoteTemplate(url); 23 | } 24 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Router 5 | 6 | 7 |

Router Test

8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /example/main.js: -------------------------------------------------------------------------------- 1 | console.log('Hello World!'); 2 | 3 | let router = new AlpineRouter.default([ 4 | { 5 | path: '/', 6 | template: '

Hello World!

' 7 | }, 8 | { 9 | path: 'parent', 10 | template: '

Parent Template

', 11 | children: [ 12 | { 13 | path: 'child', 14 | template: '

Child Template

' 15 | } 16 | ] 17 | }, 18 | { 19 | path: 'remote', 20 | templateUrl: 'index.html' 21 | } 22 | ]); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alpine-router", 3 | "version": "0.1.2", 4 | "description": "A dependency free client-side router", 5 | "main": "dist/es6/router.js", 6 | "jsnext:main": "dist/es6/router.js", 7 | "types": "dist/typings/router.d.ts", 8 | "scripts": { 9 | "test": "rimraf .ava/**/* && tsc -p tsconfig.test.json && ava", 10 | "clean": "rimraf .ava/**/*", 11 | "ava": "ava", 12 | "ava-watch": "cls && ava -w", 13 | "test-watch": "tsc -p tsconfig.test.json -w", 14 | "build": "webpack -p && tsc -p tsconfig.prod.json", 15 | "watch": "webpack -w", 16 | "prepublish": "npm run build" 17 | }, 18 | "ava": { 19 | "files": [ 20 | ".ava/test/**/*.spec.js" 21 | ], 22 | "source": [ 23 | ".ava/src/**/*.js" 24 | ], 25 | "require": [ 26 | "./test/helpers/setup-browser-env.js" 27 | ] 28 | }, 29 | "repository": { 30 | "type": "git", 31 | "url": "git+https://github.com/Mandosis/Alpine-Router.git" 32 | }, 33 | "author": "Chris Rabuse ", 34 | "license": "MIT", 35 | "bugs": { 36 | "url": "https://github.com/Mandosis/Alpine-Router/issues" 37 | }, 38 | "homepage": "https://chrisrabuse.com/Alpine-Router", 39 | "devDependencies": { 40 | "@types/whatwg-fetch": "^0.0.33", 41 | "ava": "^0.17.0", 42 | "babel-core": "^6.23.1", 43 | "babel-loader": "^6.3.2", 44 | "babel-preset-env": "^1.1.10", 45 | "browser-env": "^2.0.19", 46 | "rimraf": "^2.5.4", 47 | "ts-loader": "^2.0.1", 48 | "typescript": "^2.1.5", 49 | "webpack": "^2.2.1" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/router.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface for route data 3 | */ 4 | export interface Route { 5 | path: string; 6 | template?: string; 7 | templateUrl?: string; 8 | children?: Route[]; 9 | } 10 | 11 | /** 12 | * Client-side router for single page applications 13 | */ 14 | export default class Router { 15 | private _routes: Route[] = []; 16 | 17 | constructor(routes: Route[]) { 18 | 19 | if (Array.isArray(routes)) { 20 | for (let route of routes) { 21 | this._routes.push(route); 22 | } 23 | } else { 24 | console.error('Router: Failed to create router.\nDid you enter an array of objects in the following format [{ path: "example", template: "

Example

"}]?') 25 | } 26 | 27 | this._getWindowUrlAndNavigate(); 28 | 29 | window.onhashchange = () => { 30 | this._getWindowUrlAndNavigate(); 31 | } 32 | 33 | } 34 | 35 | get routes(): Route[] { 36 | return this._routes; 37 | } 38 | 39 | /** 40 | * Get tokens from a path 41 | * 42 | * @param path Path to get tokens from 43 | * @returns List of tokens from path 44 | */ 45 | getPathTokens(path: string): string[] { 46 | let tokens = path.split('/'); 47 | 48 | if (tokens[0] === '' && tokens[1] === '') { 49 | let token = path; 50 | tokens = ['']; 51 | } 52 | 53 | return tokens; 54 | } 55 | 56 | /** 57 | * Sanitize path and remove # and / from the beginning 58 | * 59 | * @param path Path to sanitize 60 | * @return Sanitized path 61 | */ 62 | private sanitizePath(path: string): string { 63 | if (path.charAt(0) === '#') { 64 | path = path.slice(1, path.length); 65 | } 66 | 67 | if (path.charAt(0) === '/' && path !== '/') { 68 | path = path.slice(1, path.length);; 69 | } 70 | 71 | return path; 72 | } 73 | 74 | /** 75 | * Navigate to new path 76 | * 77 | * @param path Path to navigate to. 78 | * @returns Success of navigation. 79 | */ 80 | public navigate(url: string): boolean { 81 | 82 | url = this.sanitizePath(url); 83 | 84 | // Get url tokens 85 | let urlTokens = this.getPathTokens(url); 86 | let urlMap = new Map(); 87 | 88 | for (let token of urlTokens) { 89 | urlMap.set(token, false); 90 | } 91 | 92 | let result = this._getRoutes(this._routes, urlTokens, urlMap); 93 | 94 | if (result.length > 0) { 95 | this._changeBrowserUrl(url); 96 | this._addTemplatesToDom(result); 97 | return true; 98 | } 99 | 100 | console.error(`Router: No route found for path '${url}'.`) 101 | return false; 102 | } 103 | 104 | /** 105 | * Match and return routes 106 | * 107 | * @param routes Routes to match 108 | * @param urlTokens URL Tokens 109 | * @param urlMap URL Map 110 | * @param routeHistory Route History 111 | */ 112 | private _getRoutes(routes: Route[], urlTokens: string[], urlMap: Map, routeHistory?: Route[]): Route[] { 113 | routeHistory = routeHistory || []; 114 | 115 | // iterate through routes 116 | for (let route of routes) { 117 | // get route path tokens 118 | const routeTokens = this.getPathTokens(route.path); 119 | urlMap = this._compareTokens(routeTokens, urlTokens, urlMap); 120 | const consecutiveCount = this._countConsecutiveTokens(urlMap); 121 | const isFullPathMatch = (consecutiveCount === urlMap.size); 122 | const isPartialMatch = (consecutiveCount < urlMap.size && consecutiveCount !== 0); 123 | 124 | if (isFullPathMatch) { 125 | routeHistory.push(route); 126 | return routeHistory; 127 | } 128 | 129 | if (isPartialMatch && route.children) { 130 | routeHistory.push(route); 131 | return this._getRoutes(route.children, urlTokens, urlMap, routeHistory); 132 | } 133 | } 134 | 135 | return []; 136 | } 137 | 138 | private _compareTokens(routeTokens: string[], urlTokens: string[], urlMap: Map) { 139 | // for loop to count number of seen tokens 140 | let seen = 0; 141 | for (let token of urlTokens) { 142 | if (urlMap.get(token)) { seen++;} 143 | } 144 | 145 | if (seen > 0) { 146 | urlTokens = urlTokens.slice(seen, routeTokens.length + 1); 147 | } 148 | 149 | // compare route tokens with url tokens 150 | for (let it = 0; it < urlTokens.length; it++) { 151 | const route = routeTokens[it]; 152 | const url = urlTokens[it]; 153 | 154 | if (!urlMap.get(url)) { 155 | if (route === undefined) { return urlMap; } 156 | 157 | if (route === url) { 158 | urlMap.set(url, true); 159 | } 160 | } 161 | } 162 | 163 | return urlMap; 164 | } 165 | 166 | 167 | /** 168 | * Gets consecutive token match count 169 | * 170 | * @param tokenMap Map of tokens 171 | * @return Consecutive match count 172 | */ 173 | private _countConsecutiveTokens(tokenMap: Map) { 174 | let count = 0; 175 | let isLastTokenAMatch = true; 176 | 177 | for (let token of tokenMap) { 178 | if (token[1] && isLastTokenAMatch) { 179 | count++; 180 | } else { 181 | return count; 182 | } 183 | } 184 | 185 | return count; 186 | } 187 | 188 | /** 189 | * Gets the current window url and navigate 190 | */ 191 | private _getWindowUrlAndNavigate() { 192 | if (this._baseHrefValue) { 193 | let location = window.location.pathname; 194 | 195 | location = location.substring( 196 | this._baseHrefValue.length, 197 | location.length 198 | ); 199 | 200 | return this.navigate(location); 201 | } 202 | 203 | this.navigate(window.location.hash); 204 | } 205 | 206 | /** 207 | * Changes url in address bar after the domain name 208 | * 209 | * @param path Path to change url to 210 | */ 211 | private _changeBrowserUrl(path: string) { 212 | let finalPath = this._getAndAppendBaseHref(path); 213 | history.pushState('', path, finalPath); 214 | } 215 | 216 | /** 217 | * Gets and appends the base href value if it exists 218 | * 219 | * @param url URL for route 220 | * @return modified url adjusted for base tag if it exists 221 | */ 222 | private _getAndAppendBaseHref(path: string) { 223 | if (path === '/') { path = '' } 224 | let baseHref = this._baseHrefValue; 225 | 226 | if (baseHref && baseHref !== '/') { 227 | return baseHref + path; 228 | } 229 | 230 | if (baseHref && baseHref === '/') { 231 | return path; 232 | } 233 | 234 | return '#/' + path; 235 | } 236 | 237 | /** 238 | * Get value of of the href attribute in the base tag if it exists 239 | * 240 | * @returns Value of href attributes 241 | */ 242 | private get _baseHrefValue(): string { 243 | let baseElement: HTMLElement = document.getElementsByTagName('base')[0]; 244 | let baseHref: string; 245 | 246 | if (baseElement) { 247 | return baseElement 248 | .attributes 249 | .getNamedItem('href') 250 | .value; 251 | } 252 | } 253 | 254 | /** 255 | * Get the matched routes and add the templates to the DOM 256 | * 257 | * @param routes Matched routes 258 | */ 259 | private _addTemplatesToDom(routes: Route[]) { 260 | for (let it = 0; it < routes.length; it++) { 261 | const outlets = document.getElementsByTagName('router-outlet'); 262 | 263 | if (!outlets[it]) { console.error('Router: router-outlet missing.')} 264 | 265 | if (routes[it].template) { 266 | outlets[it].innerHTML = routes[it].template; 267 | } else { 268 | this._getRemoteTemplate(routes[it].templateUrl) 269 | .then((template: string) => { 270 | outlets[it].innerHTML = template; 271 | }) 272 | .catch((err) => { 273 | console.error(`Router: Failed to get template.\n${err}`); 274 | }); 275 | } 276 | 277 | } 278 | } 279 | 280 | /** 281 | * Get a remote html file for the template 282 | * @param url Url for resource 283 | */ 284 | private _getRemoteTemplate(url: string) { 285 | return new Promise((resolve, reject) => { 286 | fetch(url) 287 | .then((response) => response.text()) 288 | .then((body: string) => resolve(body)) 289 | .catch((error: string) => reject(error)); 290 | }); 291 | } 292 | 293 | } -------------------------------------------------------------------------------- /test/helpers/setup-browser-env.js: -------------------------------------------------------------------------------- 1 | // import browserEnv from 'browser-env'; 2 | const browserEnv = require('browser-env'); 3 | 4 | browserEnv(); -------------------------------------------------------------------------------- /test/router.spec.ts: -------------------------------------------------------------------------------- 1 | import test from 'ava'; 2 | import {default as Router, Route} from '../src/router'; 3 | 4 | let router: Router; 5 | let routes: Route[] = [ 6 | { 7 | path: '/', 8 | template: `

Hello World!

` 9 | }, 10 | { 11 | path: 'home', 12 | template: `

Home

` 13 | }, 14 | { 15 | path: 'foo/bar', 16 | template: `

Foo Bar

` 17 | }, 18 | { 19 | path: 'parent', 20 | template: '

Parent Route

', 21 | children: [ 22 | { 23 | path: 'child', 24 | template: '

Child Route

' 25 | } 26 | ] 27 | }, 28 | { 29 | path: '*', 30 | template: '

404

' 31 | } 32 | ]; 33 | 34 | test.before(t => { 35 | document.body.innerHTML = '' 36 | router = new Router(routes) 37 | }); 38 | 39 | test('create and set routes', t => { 40 | if (router) { 41 | return t.deepEqual(router.routes, routes, 'Routes not set properly'); 42 | } 43 | 44 | t.fail('Router creation failed'); 45 | }); 46 | 47 | test('get route path with empty string', (t) => { 48 | let path = ''; 49 | let expected = ['']; 50 | let result = router.getPathTokens(path); 51 | 52 | t.deepEqual(result, expected, 'Tokens do not match expectations'); 53 | }); 54 | 55 | test('get route path containing only /', (t) => { 56 | let path = router.routes[0].path; 57 | let expected = ['']; 58 | let result = router.getPathTokens(path); 59 | 60 | t.deepEqual(result, expected, 'Tokens do not match expectations'); 61 | }); 62 | 63 | test('get route path with a single token', (t) => { 64 | let path = router.routes[1].path; 65 | let expected = ['home']; 66 | let result = router.getPathTokens(path); 67 | 68 | t.deepEqual(result, expected, 'Tokens do not match expectations'); 69 | }); 70 | 71 | test('get tokens from path with multiple slugs', (t) => { 72 | let path = router.routes[2].path; 73 | let expected = ['foo', 'bar']; 74 | let result = router.getPathTokens(path); 75 | 76 | t.deepEqual(result, expected, 'Tokens do not match expectations'); 77 | }); 78 | 79 | test('match route containing only /', (t) => { 80 | t.true(router.navigate(router.routes[0].path), 'Path containing only / not matched'); 81 | }); 82 | 83 | test('match route containing only one slug', (t) => { 84 | t.true(router.navigate(router.routes[1].path), 'Path not matched'); 85 | }); 86 | 87 | test('match route containing multiple slugs', (t) => { 88 | t.true(router.navigate(router.routes[2].path), 'Path with multiple slugs not matched'); 89 | }); 90 | 91 | test('match child route', (t) => { 92 | t.true(router.navigate(router.routes[3].path + '/' + router.routes[3].children[0].path)) 93 | }) 94 | 95 | test.skip('match wild card', (t) => { 96 | t.true(router.navigate('thatsNoMoon')); 97 | }); 98 | 99 | test('update url without base href', (t) => { 100 | let path = router.routes[1].path; 101 | let expectedPath = '#/' + path; 102 | router.navigate(router.routes[1].path); 103 | 104 | t.deepEqual(location.hash, expectedPath, 'Url not updated properly without base href'); 105 | }); -------------------------------------------------------------------------------- /test/test.ts: -------------------------------------------------------------------------------- 1 | import test from 'ava' 2 | 3 | async function fn() { 4 | return Promise.resolve('foo') 5 | } 6 | 7 | test(async (t) => { 8 | t.is(await fn(), 'foo'); 9 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "target": "es2015", 5 | "sourceMap": true, 6 | "moduleResolution": "node", 7 | "experimentalDecorators": true, 8 | "emitDecoratorMetadata": true, 9 | "removeComments": true, 10 | "noImplicitAny": true, 11 | "outDir": "dist/es6", 12 | "lib": [ 13 | "dom", 14 | "es2015", 15 | "es2016", 16 | "es2017" 17 | ] 18 | }, 19 | "include": [ 20 | "src/**/*.ts" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ], 25 | "compileOnSave": false, 26 | "buildOnSave": false, 27 | "atom": { 28 | "rewriteTsconfig": false 29 | } 30 | } -------------------------------------------------------------------------------- /tsconfig.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "target": "es2015", 5 | "sourceMap": true, 6 | "moduleResolution": "node", 7 | "experimentalDecorators": true, 8 | "emitDecoratorMetadata": true, 9 | "removeComments": true, 10 | "noImplicitAny": true, 11 | "declaration": true, 12 | "declarationDir": "dist/typings", 13 | "outDir": "dist/es6", 14 | "lib": [ 15 | "dom", 16 | "es2015", 17 | "es2016", 18 | "es2017" 19 | ] 20 | }, 21 | "include": [ 22 | "src/**/*.ts" 23 | ], 24 | "exclude": [ 25 | "node_modules" 26 | ], 27 | "compileOnSave": false, 28 | "buildOnSave": false, 29 | "atom": { 30 | "rewriteTsconfig": false 31 | } 32 | } -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es2015", 5 | "inlineSourceMap": true, 6 | "moduleResolution": "node", 7 | "experimentalDecorators": true, 8 | "emitDecoratorMetadata": true, 9 | "removeComments": true, 10 | "noImplicitAny": true, 11 | "outDir": ".ava" 12 | }, 13 | "include": [ 14 | "test/**/*", 15 | "src/**/*" 16 | ], 17 | "exclude": [ 18 | "node_modules", 19 | "src" 20 | ], 21 | "compileOnSave": false, 22 | "buildOnSave": false, 23 | "atom": { 24 | "rewriteTsconfig": false 25 | } 26 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin') 2 | const path = require('path') 3 | 4 | function root (args) { 5 | args = Array.prototype.slice.call(arguments, 0) 6 | return path.join.apply(path, [__dirname].concat(args)) 7 | } 8 | 9 | module.exports = [ 10 | // Minified Browser 11 | { 12 | context: __dirname, 13 | target: 'web', 14 | devtool: 'source-map', 15 | resolve: { 16 | extensions: ['.ts'] 17 | }, 18 | module: { 19 | loaders: [ 20 | { test: /\.ts$/, exclude: /node_modules/, loaders: ['babel-loader?presets[]=env', 'ts-loader'] } 21 | ] 22 | }, 23 | entry: { 24 | router: root('src/router.ts') 25 | }, 26 | output: { 27 | publicPath: path.resolve(__dirname), 28 | filename: 'alpine-router.js', 29 | sourceMapFilename: 'alpine-router.js.map', 30 | path: root('dist/browser'), 31 | library: 'AlpineRouter' 32 | }, 33 | plugins: [ 34 | new UglifyJsPlugin({ 35 | beautify: false, 36 | mangle: { 37 | screw_ie8: true, 38 | keep_fnames: true 39 | }, 40 | compress: { 41 | screw_ie8: true, 42 | warnings: false 43 | }, 44 | comments: false, 45 | sourceMap: true 46 | }) 47 | ], 48 | node: { 49 | global: true, 50 | __dirname: true, 51 | __filename: true, 52 | process: true, 53 | Buffer: false 54 | } 55 | 56 | }] -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/whatwg-fetch@^0.0.33": 6 | version "0.0.33" 7 | resolved "https://registry.yarnpkg.com/@types/whatwg-fetch/-/whatwg-fetch-0.0.33.tgz#19c0d2863c8cb2380f21a1c736b79cbf7895bb13" 8 | dependencies: 9 | "@types/whatwg-streams" "*" 10 | 11 | "@types/whatwg-streams@*": 12 | version "0.0.2" 13 | resolved "https://registry.yarnpkg.com/@types/whatwg-streams/-/whatwg-streams-0.0.2.tgz#58eb11cf9ab33a2b55878d568ad7e9b933e67f7d" 14 | 15 | abab@^1.0.0: 16 | version "1.0.3" 17 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" 18 | 19 | abbrev@1: 20 | version "1.0.9" 21 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 22 | 23 | acorn-dynamic-import@^2.0.0: 24 | version "2.0.1" 25 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz#23f671eb6e650dab277fef477c321b1178a8cca2" 26 | dependencies: 27 | acorn "^4.0.3" 28 | 29 | acorn-globals@^1.0.4: 30 | version "1.0.9" 31 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" 32 | dependencies: 33 | acorn "^2.1.0" 34 | 35 | acorn@^2.1.0, acorn@^2.4.0: 36 | version "2.7.0" 37 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" 38 | 39 | acorn@^4.0.3, acorn@^4.0.4: 40 | version "4.0.4" 41 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" 42 | 43 | ajv-keywords@^1.1.1: 44 | version "1.5.0" 45 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c" 46 | 47 | ajv@^4.7.0: 48 | version "4.11.2" 49 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.2.tgz#f166c3c11cbc6cb9dcc102a5bcfe5b72c95287e6" 50 | dependencies: 51 | co "^4.6.0" 52 | json-stable-stringify "^1.0.1" 53 | 54 | align-text@^0.1.1, align-text@^0.1.3: 55 | version "0.1.4" 56 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 57 | dependencies: 58 | kind-of "^3.0.2" 59 | longest "^1.0.1" 60 | repeat-string "^1.5.2" 61 | 62 | amdefine@>=0.0.4: 63 | version "1.0.1" 64 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 65 | 66 | ansi-align@^1.1.0: 67 | version "1.1.0" 68 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" 69 | dependencies: 70 | string-width "^1.0.1" 71 | 72 | ansi-regex@^2.0.0: 73 | version "2.1.1" 74 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 75 | 76 | ansi-styles@^2.2.1: 77 | version "2.2.1" 78 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 79 | 80 | ansi-styles@~1.0.0: 81 | version "1.0.0" 82 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" 83 | 84 | anymatch@^1.3.0: 85 | version "1.3.0" 86 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 87 | dependencies: 88 | arrify "^1.0.0" 89 | micromatch "^2.1.5" 90 | 91 | aproba@^1.0.3: 92 | version "1.0.4" 93 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" 94 | 95 | are-we-there-yet@~1.1.2: 96 | version "1.1.2" 97 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 98 | dependencies: 99 | delegates "^1.0.0" 100 | readable-stream "^2.0.0 || ^1.1.13" 101 | 102 | arr-diff@^2.0.0: 103 | version "2.0.0" 104 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 105 | dependencies: 106 | arr-flatten "^1.0.1" 107 | 108 | arr-exclude@^1.0.0: 109 | version "1.0.0" 110 | resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" 111 | 112 | arr-flatten@^1.0.1: 113 | version "1.0.1" 114 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 115 | 116 | array-differ@^1.0.0: 117 | version "1.0.0" 118 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 119 | 120 | array-equal@^1.0.0: 121 | version "1.0.0" 122 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" 123 | 124 | array-find-index@^1.0.1: 125 | version "1.0.2" 126 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 127 | 128 | array-union@^1.0.1: 129 | version "1.0.2" 130 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 131 | dependencies: 132 | array-uniq "^1.0.1" 133 | 134 | array-uniq@^1.0.1, array-uniq@^1.0.2: 135 | version "1.0.3" 136 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 137 | 138 | array-unique@^0.2.1: 139 | version "0.2.1" 140 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 141 | 142 | arrify@^1.0.0: 143 | version "1.0.1" 144 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 145 | 146 | asn1.js@^4.0.0: 147 | version "4.9.1" 148 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" 149 | dependencies: 150 | bn.js "^4.0.0" 151 | inherits "^2.0.1" 152 | minimalistic-assert "^1.0.0" 153 | 154 | asn1@~0.2.3: 155 | version "0.2.3" 156 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 157 | 158 | assert-plus@^0.2.0: 159 | version "0.2.0" 160 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 161 | 162 | assert-plus@^1.0.0: 163 | version "1.0.0" 164 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 165 | 166 | assert@^1.1.1: 167 | version "1.4.1" 168 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 169 | dependencies: 170 | util "0.10.3" 171 | 172 | async-each@^1.0.0: 173 | version "1.0.1" 174 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 175 | 176 | async@^2.1.2: 177 | version "2.1.4" 178 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" 179 | dependencies: 180 | lodash "^4.14.0" 181 | 182 | async@~0.2.6: 183 | version "0.2.10" 184 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" 185 | 186 | asynckit@^0.4.0: 187 | version "0.4.0" 188 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 189 | 190 | auto-bind@^0.1.0: 191 | version "0.1.0" 192 | resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-0.1.0.tgz#7a29efc8c2388d3d578e02fc2df531c81ffc1ee1" 193 | 194 | ava-files@^0.2.0: 195 | version "0.2.0" 196 | resolved "https://registry.yarnpkg.com/ava-files/-/ava-files-0.2.0.tgz#c7b8b6e2e0cea63b57a6e27e0db145c7c19cfe20" 197 | dependencies: 198 | auto-bind "^0.1.0" 199 | bluebird "^3.4.1" 200 | globby "^6.0.0" 201 | ignore-by-default "^1.0.1" 202 | lodash.flatten "^4.2.0" 203 | multimatch "^2.1.0" 204 | slash "^1.0.0" 205 | 206 | ava-init@^0.1.0: 207 | version "0.1.6" 208 | resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.1.6.tgz#ef19ed0b24b6bf359dad6fbadf1a05d836395c91" 209 | dependencies: 210 | arr-exclude "^1.0.0" 211 | cross-spawn "^4.0.0" 212 | pinkie-promise "^2.0.0" 213 | read-pkg-up "^1.0.1" 214 | the-argv "^1.0.0" 215 | write-pkg "^1.0.0" 216 | 217 | ava@^0.17.0: 218 | version "0.17.0" 219 | resolved "https://registry.yarnpkg.com/ava/-/ava-0.17.0.tgz#359e2a89616801ef03929c3cf10a9d4f8e451d02" 220 | dependencies: 221 | arr-flatten "^1.0.1" 222 | array-union "^1.0.1" 223 | array-uniq "^1.0.2" 224 | arrify "^1.0.0" 225 | auto-bind "^0.1.0" 226 | ava-files "^0.2.0" 227 | ava-init "^0.1.0" 228 | babel-code-frame "^6.16.0" 229 | babel-core "^6.17.0" 230 | babel-plugin-ava-throws-helper "^0.1.0" 231 | babel-plugin-detective "^2.0.0" 232 | babel-plugin-espower "^2.3.1" 233 | babel-plugin-transform-runtime "^6.15.0" 234 | babel-preset-es2015 "^6.16.0" 235 | babel-preset-es2015-node4 "^2.1.0" 236 | babel-preset-stage-2 "^6.17.0" 237 | babel-runtime "^6.11.6" 238 | bluebird "^3.0.0" 239 | caching-transform "^1.0.0" 240 | chalk "^1.0.0" 241 | chokidar "^1.4.2" 242 | clean-yaml-object "^0.1.0" 243 | cli-cursor "^1.0.2" 244 | cli-spinners "^0.1.2" 245 | cli-truncate "^0.2.0" 246 | co-with-promise "^4.6.0" 247 | common-path-prefix "^1.0.0" 248 | convert-source-map "^1.2.0" 249 | core-assert "^0.2.0" 250 | currently-unhandled "^0.4.1" 251 | debug "^2.2.0" 252 | empower-core "^0.6.1" 253 | figures "^1.4.0" 254 | find-cache-dir "^0.1.1" 255 | fn-name "^2.0.0" 256 | get-port "^2.1.0" 257 | has-flag "^2.0.0" 258 | ignore-by-default "^1.0.0" 259 | is-ci "^1.0.7" 260 | is-generator-fn "^1.0.0" 261 | is-obj "^1.0.0" 262 | is-observable "^0.2.0" 263 | is-promise "^2.1.0" 264 | last-line-stream "^1.0.0" 265 | lodash.debounce "^4.0.3" 266 | lodash.difference "^4.3.0" 267 | lodash.isequal "^4.4.0" 268 | loud-rejection "^1.2.0" 269 | matcher "^0.1.1" 270 | max-timeout "^1.0.0" 271 | md5-hex "^1.2.0" 272 | meow "^3.7.0" 273 | ms "^0.7.1" 274 | object-assign "^4.0.1" 275 | observable-to-promise "^0.4.0" 276 | option-chain "^0.1.0" 277 | package-hash "^1.1.0" 278 | pkg-conf "^1.0.1" 279 | plur "^2.0.0" 280 | power-assert-context-formatter "^1.0.4" 281 | power-assert-renderer-assertion "^1.0.1" 282 | power-assert-renderer-succinct "^1.0.1" 283 | pretty-ms "^2.0.0" 284 | repeating "^2.0.0" 285 | require-precompiled "^0.1.0" 286 | resolve-cwd "^1.0.0" 287 | semver "^5.3.0" 288 | set-immediate-shim "^1.0.1" 289 | source-map-support "^0.4.0" 290 | stack-utils "^0.4.0" 291 | strip-ansi "^3.0.1" 292 | strip-bom "^2.0.0" 293 | time-require "^0.1.2" 294 | unique-temp-dir "^1.0.0" 295 | update-notifier "^1.0.0" 296 | 297 | aws-sign2@~0.6.0: 298 | version "0.6.0" 299 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 300 | 301 | aws4@^1.2.1: 302 | version "1.5.0" 303 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" 304 | 305 | babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: 306 | version "6.22.0" 307 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 308 | dependencies: 309 | chalk "^1.1.0" 310 | esutils "^2.0.2" 311 | js-tokens "^3.0.0" 312 | 313 | babel-core@^6.17.0, babel-core@^6.23.0, babel-core@^6.23.1: 314 | version "6.23.1" 315 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" 316 | dependencies: 317 | babel-code-frame "^6.22.0" 318 | babel-generator "^6.23.0" 319 | babel-helpers "^6.23.0" 320 | babel-messages "^6.23.0" 321 | babel-register "^6.23.0" 322 | babel-runtime "^6.22.0" 323 | babel-template "^6.23.0" 324 | babel-traverse "^6.23.1" 325 | babel-types "^6.23.0" 326 | babylon "^6.11.0" 327 | convert-source-map "^1.1.0" 328 | debug "^2.1.1" 329 | json5 "^0.5.0" 330 | lodash "^4.2.0" 331 | minimatch "^3.0.2" 332 | path-is-absolute "^1.0.0" 333 | private "^0.1.6" 334 | slash "^1.0.0" 335 | source-map "^0.5.0" 336 | 337 | babel-generator@^6.1.0, babel-generator@^6.23.0: 338 | version "6.23.0" 339 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" 340 | dependencies: 341 | babel-messages "^6.23.0" 342 | babel-runtime "^6.22.0" 343 | babel-types "^6.23.0" 344 | detect-indent "^4.0.0" 345 | jsesc "^1.3.0" 346 | lodash "^4.2.0" 347 | source-map "^0.5.0" 348 | trim-right "^1.0.1" 349 | 350 | babel-helper-bindify-decorators@^6.22.0: 351 | version "6.22.0" 352 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.22.0.tgz#d7f5bc261275941ac62acfc4e20dacfb8a3fe952" 353 | dependencies: 354 | babel-runtime "^6.22.0" 355 | babel-traverse "^6.22.0" 356 | babel-types "^6.22.0" 357 | 358 | babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: 359 | version "6.22.0" 360 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" 361 | dependencies: 362 | babel-helper-explode-assignable-expression "^6.22.0" 363 | babel-runtime "^6.22.0" 364 | babel-types "^6.22.0" 365 | 366 | babel-helper-call-delegate@^6.22.0: 367 | version "6.22.0" 368 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" 369 | dependencies: 370 | babel-helper-hoist-variables "^6.22.0" 371 | babel-runtime "^6.22.0" 372 | babel-traverse "^6.22.0" 373 | babel-types "^6.22.0" 374 | 375 | babel-helper-define-map@^6.22.0: 376 | version "6.22.0" 377 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.22.0.tgz#9544e9502b2d6dfe7d00ff60e82bd5a7a89e95b7" 378 | dependencies: 379 | babel-helper-function-name "^6.22.0" 380 | babel-runtime "^6.22.0" 381 | babel-types "^6.22.0" 382 | lodash "^4.2.0" 383 | 384 | babel-helper-explode-assignable-expression@^6.22.0: 385 | version "6.22.0" 386 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" 387 | dependencies: 388 | babel-runtime "^6.22.0" 389 | babel-traverse "^6.22.0" 390 | babel-types "^6.22.0" 391 | 392 | babel-helper-explode-class@^6.22.0: 393 | version "6.22.0" 394 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.22.0.tgz#646304924aa6388a516843ba7f1855ef8dfeb69b" 395 | dependencies: 396 | babel-helper-bindify-decorators "^6.22.0" 397 | babel-runtime "^6.22.0" 398 | babel-traverse "^6.22.0" 399 | babel-types "^6.22.0" 400 | 401 | babel-helper-function-name@^6.22.0: 402 | version "6.22.0" 403 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc" 404 | dependencies: 405 | babel-helper-get-function-arity "^6.22.0" 406 | babel-runtime "^6.22.0" 407 | babel-template "^6.22.0" 408 | babel-traverse "^6.22.0" 409 | babel-types "^6.22.0" 410 | 411 | babel-helper-get-function-arity@^6.22.0: 412 | version "6.22.0" 413 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" 414 | dependencies: 415 | babel-runtime "^6.22.0" 416 | babel-types "^6.22.0" 417 | 418 | babel-helper-hoist-variables@^6.22.0: 419 | version "6.22.0" 420 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" 421 | dependencies: 422 | babel-runtime "^6.22.0" 423 | babel-types "^6.22.0" 424 | 425 | babel-helper-optimise-call-expression@^6.22.0: 426 | version "6.22.0" 427 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.22.0.tgz#f8d5d4b40a6e2605a6a7f9d537b581bea3756d15" 428 | dependencies: 429 | babel-runtime "^6.22.0" 430 | babel-types "^6.22.0" 431 | 432 | babel-helper-regex@^6.22.0: 433 | version "6.22.0" 434 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" 435 | dependencies: 436 | babel-runtime "^6.22.0" 437 | babel-types "^6.22.0" 438 | lodash "^4.2.0" 439 | 440 | babel-helper-remap-async-to-generator@^6.22.0: 441 | version "6.22.0" 442 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" 443 | dependencies: 444 | babel-helper-function-name "^6.22.0" 445 | babel-runtime "^6.22.0" 446 | babel-template "^6.22.0" 447 | babel-traverse "^6.22.0" 448 | babel-types "^6.22.0" 449 | 450 | babel-helper-replace-supers@^6.22.0: 451 | version "6.22.0" 452 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42" 453 | dependencies: 454 | babel-helper-optimise-call-expression "^6.22.0" 455 | babel-messages "^6.22.0" 456 | babel-runtime "^6.22.0" 457 | babel-template "^6.22.0" 458 | babel-traverse "^6.22.0" 459 | babel-types "^6.22.0" 460 | 461 | babel-helpers@^6.23.0: 462 | version "6.23.0" 463 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.23.0.tgz#4f8f2e092d0b6a8808a4bde79c27f1e2ecf0d992" 464 | dependencies: 465 | babel-runtime "^6.22.0" 466 | babel-template "^6.23.0" 467 | 468 | babel-loader@^6.3.2: 469 | version "6.3.2" 470 | resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.3.2.tgz#18de4566385578c1b4f8ffe6cbc668f5e2a5ef03" 471 | dependencies: 472 | find-cache-dir "^0.1.1" 473 | loader-utils "^0.2.16" 474 | mkdirp "^0.5.1" 475 | object-assign "^4.0.1" 476 | 477 | babel-messages@^6.22.0, babel-messages@^6.23.0: 478 | version "6.23.0" 479 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 480 | dependencies: 481 | babel-runtime "^6.22.0" 482 | 483 | babel-plugin-ava-throws-helper@^0.1.0: 484 | version "0.1.0" 485 | resolved "https://registry.yarnpkg.com/babel-plugin-ava-throws-helper/-/babel-plugin-ava-throws-helper-0.1.0.tgz#951107708a12208026bf8ca4cef18a87bc9b0cfe" 486 | dependencies: 487 | babel-template "^6.7.0" 488 | babel-types "^6.7.2" 489 | 490 | babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.3.13: 491 | version "6.22.0" 492 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 493 | dependencies: 494 | babel-runtime "^6.22.0" 495 | 496 | babel-plugin-detective@^2.0.0: 497 | version "2.0.0" 498 | resolved "https://registry.yarnpkg.com/babel-plugin-detective/-/babel-plugin-detective-2.0.0.tgz#6e642e83c22a335279754ebe2d754d2635f49f13" 499 | 500 | babel-plugin-espower@^2.3.1: 501 | version "2.3.2" 502 | resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e" 503 | dependencies: 504 | babel-generator "^6.1.0" 505 | babylon "^6.1.0" 506 | call-matcher "^1.0.0" 507 | core-js "^2.0.0" 508 | espower-location-detector "^1.0.0" 509 | espurify "^1.6.0" 510 | estraverse "^4.1.1" 511 | 512 | babel-plugin-syntax-async-functions@^6.8.0: 513 | version "6.13.0" 514 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 515 | 516 | babel-plugin-syntax-async-generators@^6.5.0: 517 | version "6.13.0" 518 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 519 | 520 | babel-plugin-syntax-class-properties@^6.8.0: 521 | version "6.13.0" 522 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 523 | 524 | babel-plugin-syntax-decorators@^6.13.0: 525 | version "6.13.0" 526 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 527 | 528 | babel-plugin-syntax-dynamic-import@^6.18.0: 529 | version "6.18.0" 530 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 531 | 532 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 533 | version "6.13.0" 534 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 535 | 536 | babel-plugin-syntax-object-rest-spread@^6.8.0: 537 | version "6.13.0" 538 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 539 | 540 | babel-plugin-syntax-trailing-function-commas@^6.13.0, babel-plugin-syntax-trailing-function-commas@^6.22.0: 541 | version "6.22.0" 542 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 543 | 544 | babel-plugin-transform-async-generator-functions@^6.22.0: 545 | version "6.22.0" 546 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.22.0.tgz#a720a98153a7596f204099cd5409f4b3c05bab46" 547 | dependencies: 548 | babel-helper-remap-async-to-generator "^6.22.0" 549 | babel-plugin-syntax-async-generators "^6.5.0" 550 | babel-runtime "^6.22.0" 551 | 552 | babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.8.0: 553 | version "6.22.0" 554 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e" 555 | dependencies: 556 | babel-helper-remap-async-to-generator "^6.22.0" 557 | babel-plugin-syntax-async-functions "^6.8.0" 558 | babel-runtime "^6.22.0" 559 | 560 | babel-plugin-transform-class-properties@^6.22.0: 561 | version "6.22.0" 562 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.22.0.tgz#aa78f8134495c7de06c097118ba061844e1dc1d8" 563 | dependencies: 564 | babel-helper-function-name "^6.22.0" 565 | babel-plugin-syntax-class-properties "^6.8.0" 566 | babel-runtime "^6.22.0" 567 | babel-template "^6.22.0" 568 | 569 | babel-plugin-transform-decorators@^6.22.0: 570 | version "6.22.0" 571 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.22.0.tgz#c03635b27a23b23b7224f49232c237a73988d27c" 572 | dependencies: 573 | babel-helper-explode-class "^6.22.0" 574 | babel-plugin-syntax-decorators "^6.13.0" 575 | babel-runtime "^6.22.0" 576 | babel-template "^6.22.0" 577 | babel-types "^6.22.0" 578 | 579 | babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13: 580 | version "6.22.0" 581 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 582 | dependencies: 583 | babel-runtime "^6.22.0" 584 | 585 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: 586 | version "6.22.0" 587 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 588 | dependencies: 589 | babel-runtime "^6.22.0" 590 | 591 | babel-plugin-transform-es2015-block-scoping@^6.22.0, babel-plugin-transform-es2015-block-scoping@^6.6.0: 592 | version "6.22.0" 593 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e" 594 | dependencies: 595 | babel-runtime "^6.22.0" 596 | babel-template "^6.22.0" 597 | babel-traverse "^6.22.0" 598 | babel-types "^6.22.0" 599 | lodash "^4.2.0" 600 | 601 | babel-plugin-transform-es2015-classes@^6.22.0, babel-plugin-transform-es2015-classes@^6.6.0: 602 | version "6.22.0" 603 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14" 604 | dependencies: 605 | babel-helper-define-map "^6.22.0" 606 | babel-helper-function-name "^6.22.0" 607 | babel-helper-optimise-call-expression "^6.22.0" 608 | babel-helper-replace-supers "^6.22.0" 609 | babel-messages "^6.22.0" 610 | babel-runtime "^6.22.0" 611 | babel-template "^6.22.0" 612 | babel-traverse "^6.22.0" 613 | babel-types "^6.22.0" 614 | 615 | babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.3.13: 616 | version "6.22.0" 617 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7" 618 | dependencies: 619 | babel-runtime "^6.22.0" 620 | babel-template "^6.22.0" 621 | 622 | babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.6.0, babel-plugin-transform-es2015-destructuring@^6.6.5: 623 | version "6.22.0" 624 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6" 625 | dependencies: 626 | babel-runtime "^6.22.0" 627 | 628 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.6.0: 629 | version "6.22.0" 630 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b" 631 | dependencies: 632 | babel-runtime "^6.22.0" 633 | babel-types "^6.22.0" 634 | 635 | babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0: 636 | version "6.22.0" 637 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.22.0.tgz#180467ad63aeea592a1caeee4bf1c8b3e2616265" 638 | dependencies: 639 | babel-runtime "^6.22.0" 640 | 641 | babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.3.13, babel-plugin-transform-es2015-function-name@^6.5.0: 642 | version "6.22.0" 643 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" 644 | dependencies: 645 | babel-helper-function-name "^6.22.0" 646 | babel-runtime "^6.22.0" 647 | babel-types "^6.22.0" 648 | 649 | babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13: 650 | version "6.22.0" 651 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 652 | dependencies: 653 | babel-runtime "^6.22.0" 654 | 655 | babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.8.0: 656 | version "6.22.0" 657 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21" 658 | dependencies: 659 | babel-plugin-transform-es2015-modules-commonjs "^6.22.0" 660 | babel-runtime "^6.22.0" 661 | babel-template "^6.22.0" 662 | 663 | babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.4: 664 | version "6.22.0" 665 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145" 666 | dependencies: 667 | babel-plugin-transform-strict-mode "^6.22.0" 668 | babel-runtime "^6.22.0" 669 | babel-template "^6.22.0" 670 | babel-types "^6.22.0" 671 | 672 | babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.22.0: 673 | version "6.22.0" 674 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad" 675 | dependencies: 676 | babel-helper-hoist-variables "^6.22.0" 677 | babel-runtime "^6.22.0" 678 | babel-template "^6.22.0" 679 | 680 | babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.22.0: 681 | version "6.22.0" 682 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.22.0.tgz#60d0ba3bd23258719c64391d9bf492d648dc0fae" 683 | dependencies: 684 | babel-plugin-transform-es2015-modules-amd "^6.22.0" 685 | babel-runtime "^6.22.0" 686 | babel-template "^6.22.0" 687 | 688 | babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.3.13: 689 | version "6.22.0" 690 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc" 691 | dependencies: 692 | babel-helper-replace-supers "^6.22.0" 693 | babel-runtime "^6.22.0" 694 | 695 | babel-plugin-transform-es2015-parameters@^6.22.0, babel-plugin-transform-es2015-parameters@^6.6.0, babel-plugin-transform-es2015-parameters@^6.7.0: 696 | version "6.22.0" 697 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb" 698 | dependencies: 699 | babel-helper-call-delegate "^6.22.0" 700 | babel-helper-get-function-arity "^6.22.0" 701 | babel-runtime "^6.22.0" 702 | babel-template "^6.22.0" 703 | babel-traverse "^6.22.0" 704 | babel-types "^6.22.0" 705 | 706 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.3.13, babel-plugin-transform-es2015-shorthand-properties@^6.5.0: 707 | version "6.22.0" 708 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723" 709 | dependencies: 710 | babel-runtime "^6.22.0" 711 | babel-types "^6.22.0" 712 | 713 | babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.13, babel-plugin-transform-es2015-spread@^6.6.5: 714 | version "6.22.0" 715 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 716 | dependencies: 717 | babel-runtime "^6.22.0" 718 | 719 | babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.3.13, babel-plugin-transform-es2015-sticky-regex@^6.5.0: 720 | version "6.22.0" 721 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" 722 | dependencies: 723 | babel-helper-regex "^6.22.0" 724 | babel-runtime "^6.22.0" 725 | babel-types "^6.22.0" 726 | 727 | babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.6.0: 728 | version "6.22.0" 729 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 730 | dependencies: 731 | babel-runtime "^6.22.0" 732 | 733 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0: 734 | version "6.22.0" 735 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.22.0.tgz#87faf2336d3b6a97f68c4d906b0cd0edeae676e1" 736 | dependencies: 737 | babel-runtime "^6.22.0" 738 | 739 | babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.3.13, babel-plugin-transform-es2015-unicode-regex@^6.5.0: 740 | version "6.22.0" 741 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" 742 | dependencies: 743 | babel-helper-regex "^6.22.0" 744 | babel-runtime "^6.22.0" 745 | regexpu-core "^2.0.0" 746 | 747 | babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.8.0: 748 | version "6.22.0" 749 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" 750 | dependencies: 751 | babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" 752 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 753 | babel-runtime "^6.22.0" 754 | 755 | babel-plugin-transform-object-rest-spread@^6.22.0: 756 | version "6.22.0" 757 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.22.0.tgz#1d419b55e68d2e4f64a5ff3373bd67d73c8e83bc" 758 | dependencies: 759 | babel-plugin-syntax-object-rest-spread "^6.8.0" 760 | babel-runtime "^6.22.0" 761 | 762 | babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.6.0: 763 | version "6.22.0" 764 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" 765 | dependencies: 766 | regenerator-transform "0.9.8" 767 | 768 | babel-plugin-transform-runtime@^6.15.0: 769 | version "6.22.0" 770 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.22.0.tgz#10968d760bbf6517243081eec778e10fa828551c" 771 | dependencies: 772 | babel-runtime "^6.22.0" 773 | 774 | babel-plugin-transform-strict-mode@^6.22.0: 775 | version "6.22.0" 776 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c" 777 | dependencies: 778 | babel-runtime "^6.22.0" 779 | babel-types "^6.22.0" 780 | 781 | babel-preset-env@^1.1.10: 782 | version "1.1.10" 783 | resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.1.10.tgz#c1055b69d25c3cf5383a925ee5c553c323558368" 784 | dependencies: 785 | babel-plugin-check-es2015-constants "^6.3.13" 786 | babel-plugin-syntax-trailing-function-commas "^6.13.0" 787 | babel-plugin-transform-async-to-generator "^6.8.0" 788 | babel-plugin-transform-es2015-arrow-functions "^6.3.13" 789 | babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" 790 | babel-plugin-transform-es2015-block-scoping "^6.6.0" 791 | babel-plugin-transform-es2015-classes "^6.6.0" 792 | babel-plugin-transform-es2015-computed-properties "^6.3.13" 793 | babel-plugin-transform-es2015-destructuring "^6.6.0" 794 | babel-plugin-transform-es2015-duplicate-keys "^6.6.0" 795 | babel-plugin-transform-es2015-for-of "^6.6.0" 796 | babel-plugin-transform-es2015-function-name "^6.3.13" 797 | babel-plugin-transform-es2015-literals "^6.3.13" 798 | babel-plugin-transform-es2015-modules-amd "^6.8.0" 799 | babel-plugin-transform-es2015-modules-commonjs "^6.6.0" 800 | babel-plugin-transform-es2015-modules-systemjs "^6.12.0" 801 | babel-plugin-transform-es2015-modules-umd "^6.12.0" 802 | babel-plugin-transform-es2015-object-super "^6.3.13" 803 | babel-plugin-transform-es2015-parameters "^6.6.0" 804 | babel-plugin-transform-es2015-shorthand-properties "^6.3.13" 805 | babel-plugin-transform-es2015-spread "^6.3.13" 806 | babel-plugin-transform-es2015-sticky-regex "^6.3.13" 807 | babel-plugin-transform-es2015-template-literals "^6.6.0" 808 | babel-plugin-transform-es2015-typeof-symbol "^6.6.0" 809 | babel-plugin-transform-es2015-unicode-regex "^6.3.13" 810 | babel-plugin-transform-exponentiation-operator "^6.8.0" 811 | babel-plugin-transform-regenerator "^6.6.0" 812 | browserslist "^1.4.0" 813 | electron-to-chromium "^1.1.0" 814 | invariant "^2.2.2" 815 | 816 | babel-preset-es2015-node4@^2.1.0: 817 | version "2.1.1" 818 | resolved "https://registry.yarnpkg.com/babel-preset-es2015-node4/-/babel-preset-es2015-node4-2.1.1.tgz#e31f290859b58619c8cfa241d1b0bc900f941cdb" 819 | dependencies: 820 | babel-plugin-transform-es2015-destructuring "^6.6.5" 821 | babel-plugin-transform-es2015-function-name "^6.5.0" 822 | babel-plugin-transform-es2015-modules-commonjs "^6.7.4" 823 | babel-plugin-transform-es2015-parameters "^6.7.0" 824 | babel-plugin-transform-es2015-shorthand-properties "^6.5.0" 825 | babel-plugin-transform-es2015-spread "^6.6.5" 826 | babel-plugin-transform-es2015-sticky-regex "^6.5.0" 827 | babel-plugin-transform-es2015-unicode-regex "^6.5.0" 828 | 829 | babel-preset-es2015@^6.16.0: 830 | version "6.22.0" 831 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835" 832 | dependencies: 833 | babel-plugin-check-es2015-constants "^6.22.0" 834 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 835 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 836 | babel-plugin-transform-es2015-block-scoping "^6.22.0" 837 | babel-plugin-transform-es2015-classes "^6.22.0" 838 | babel-plugin-transform-es2015-computed-properties "^6.22.0" 839 | babel-plugin-transform-es2015-destructuring "^6.22.0" 840 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0" 841 | babel-plugin-transform-es2015-for-of "^6.22.0" 842 | babel-plugin-transform-es2015-function-name "^6.22.0" 843 | babel-plugin-transform-es2015-literals "^6.22.0" 844 | babel-plugin-transform-es2015-modules-amd "^6.22.0" 845 | babel-plugin-transform-es2015-modules-commonjs "^6.22.0" 846 | babel-plugin-transform-es2015-modules-systemjs "^6.22.0" 847 | babel-plugin-transform-es2015-modules-umd "^6.22.0" 848 | babel-plugin-transform-es2015-object-super "^6.22.0" 849 | babel-plugin-transform-es2015-parameters "^6.22.0" 850 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0" 851 | babel-plugin-transform-es2015-spread "^6.22.0" 852 | babel-plugin-transform-es2015-sticky-regex "^6.22.0" 853 | babel-plugin-transform-es2015-template-literals "^6.22.0" 854 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0" 855 | babel-plugin-transform-es2015-unicode-regex "^6.22.0" 856 | babel-plugin-transform-regenerator "^6.22.0" 857 | 858 | babel-preset-stage-2@^6.17.0: 859 | version "6.22.0" 860 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.22.0.tgz#ccd565f19c245cade394b21216df704a73b27c07" 861 | dependencies: 862 | babel-plugin-syntax-dynamic-import "^6.18.0" 863 | babel-plugin-transform-class-properties "^6.22.0" 864 | babel-plugin-transform-decorators "^6.22.0" 865 | babel-preset-stage-3 "^6.22.0" 866 | 867 | babel-preset-stage-3@^6.22.0: 868 | version "6.22.0" 869 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.22.0.tgz#a4e92bbace7456fafdf651d7a7657ee0bbca9c2e" 870 | dependencies: 871 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 872 | babel-plugin-transform-async-generator-functions "^6.22.0" 873 | babel-plugin-transform-async-to-generator "^6.22.0" 874 | babel-plugin-transform-exponentiation-operator "^6.22.0" 875 | babel-plugin-transform-object-rest-spread "^6.22.0" 876 | 877 | babel-register@^6.23.0: 878 | version "6.23.0" 879 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3" 880 | dependencies: 881 | babel-core "^6.23.0" 882 | babel-runtime "^6.22.0" 883 | core-js "^2.4.0" 884 | home-or-tmp "^2.0.0" 885 | lodash "^4.2.0" 886 | mkdirp "^0.5.1" 887 | source-map-support "^0.4.2" 888 | 889 | babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0: 890 | version "6.22.0" 891 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" 892 | dependencies: 893 | core-js "^2.4.0" 894 | regenerator-runtime "^0.10.0" 895 | 896 | babel-template@^6.22.0, babel-template@^6.23.0, babel-template@^6.7.0: 897 | version "6.23.0" 898 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" 899 | dependencies: 900 | babel-runtime "^6.22.0" 901 | babel-traverse "^6.23.0" 902 | babel-types "^6.23.0" 903 | babylon "^6.11.0" 904 | lodash "^4.2.0" 905 | 906 | babel-traverse@^6.22.0, babel-traverse@^6.23.0, babel-traverse@^6.23.1: 907 | version "6.23.1" 908 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" 909 | dependencies: 910 | babel-code-frame "^6.22.0" 911 | babel-messages "^6.23.0" 912 | babel-runtime "^6.22.0" 913 | babel-types "^6.23.0" 914 | babylon "^6.15.0" 915 | debug "^2.2.0" 916 | globals "^9.0.0" 917 | invariant "^2.2.0" 918 | lodash "^4.2.0" 919 | 920 | babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23.0, babel-types@^6.7.2: 921 | version "6.23.0" 922 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" 923 | dependencies: 924 | babel-runtime "^6.22.0" 925 | esutils "^2.0.2" 926 | lodash "^4.2.0" 927 | to-fast-properties "^1.0.1" 928 | 929 | babylon@^6.1.0, babylon@^6.11.0, babylon@^6.15.0: 930 | version "6.15.0" 931 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" 932 | 933 | balanced-match@^0.4.1: 934 | version "0.4.2" 935 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 936 | 937 | base64-js@^1.0.2: 938 | version "1.2.0" 939 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" 940 | 941 | bcrypt-pbkdf@^1.0.0: 942 | version "1.0.0" 943 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" 944 | dependencies: 945 | tweetnacl "^0.14.3" 946 | 947 | big.js@^3.1.3: 948 | version "3.1.3" 949 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" 950 | 951 | binary-extensions@^1.0.0: 952 | version "1.8.0" 953 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 954 | 955 | block-stream@*: 956 | version "0.0.9" 957 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 958 | dependencies: 959 | inherits "~2.0.0" 960 | 961 | bluebird@^3.0.0, bluebird@^3.4.1: 962 | version "3.4.7" 963 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 964 | 965 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 966 | version "4.11.6" 967 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" 968 | 969 | boom@2.x.x: 970 | version "2.10.1" 971 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 972 | dependencies: 973 | hoek "2.x.x" 974 | 975 | boxen@^0.6.0: 976 | version "0.6.0" 977 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" 978 | dependencies: 979 | ansi-align "^1.1.0" 980 | camelcase "^2.1.0" 981 | chalk "^1.1.1" 982 | cli-boxes "^1.0.0" 983 | filled-array "^1.0.0" 984 | object-assign "^4.0.1" 985 | repeating "^2.0.0" 986 | string-width "^1.0.1" 987 | widest-line "^1.0.0" 988 | 989 | brace-expansion@^1.0.0: 990 | version "1.1.6" 991 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 992 | dependencies: 993 | balanced-match "^0.4.1" 994 | concat-map "0.0.1" 995 | 996 | braces@^1.8.2: 997 | version "1.8.5" 998 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 999 | dependencies: 1000 | expand-range "^1.8.1" 1001 | preserve "^0.2.0" 1002 | repeat-element "^1.1.2" 1003 | 1004 | brorand@^1.0.1: 1005 | version "1.0.6" 1006 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5" 1007 | 1008 | browser-env@^2.0.19: 1009 | version "2.0.19" 1010 | resolved "https://registry.yarnpkg.com/browser-env/-/browser-env-2.0.19.tgz#39d2885228b3e17d19089ba6a550e63b0d75d6d2" 1011 | dependencies: 1012 | clone "2.1.0" 1013 | jsdom "9.9.1" 1014 | 1015 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 1016 | version "1.0.6" 1017 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" 1018 | dependencies: 1019 | buffer-xor "^1.0.2" 1020 | cipher-base "^1.0.0" 1021 | create-hash "^1.1.0" 1022 | evp_bytestokey "^1.0.0" 1023 | inherits "^2.0.1" 1024 | 1025 | browserify-cipher@^1.0.0: 1026 | version "1.0.0" 1027 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 1028 | dependencies: 1029 | browserify-aes "^1.0.4" 1030 | browserify-des "^1.0.0" 1031 | evp_bytestokey "^1.0.0" 1032 | 1033 | browserify-des@^1.0.0: 1034 | version "1.0.0" 1035 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 1036 | dependencies: 1037 | cipher-base "^1.0.1" 1038 | des.js "^1.0.0" 1039 | inherits "^2.0.1" 1040 | 1041 | browserify-rsa@^4.0.0: 1042 | version "4.0.1" 1043 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 1044 | dependencies: 1045 | bn.js "^4.1.0" 1046 | randombytes "^2.0.1" 1047 | 1048 | browserify-sign@^4.0.0: 1049 | version "4.0.0" 1050 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f" 1051 | dependencies: 1052 | bn.js "^4.1.1" 1053 | browserify-rsa "^4.0.0" 1054 | create-hash "^1.1.0" 1055 | create-hmac "^1.1.2" 1056 | elliptic "^6.0.0" 1057 | inherits "^2.0.1" 1058 | parse-asn1 "^5.0.0" 1059 | 1060 | browserify-zlib@^0.1.4: 1061 | version "0.1.4" 1062 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" 1063 | dependencies: 1064 | pako "~0.2.0" 1065 | 1066 | browserslist@^1.4.0: 1067 | version "1.7.5" 1068 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b" 1069 | dependencies: 1070 | caniuse-db "^1.0.30000624" 1071 | electron-to-chromium "^1.2.3" 1072 | 1073 | buf-compare@^1.0.0: 1074 | version "1.0.1" 1075 | resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" 1076 | 1077 | buffer-shims@^1.0.0: 1078 | version "1.0.0" 1079 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 1080 | 1081 | buffer-xor@^1.0.2: 1082 | version "1.0.3" 1083 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 1084 | 1085 | buffer@^4.3.0: 1086 | version "4.9.1" 1087 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 1088 | dependencies: 1089 | base64-js "^1.0.2" 1090 | ieee754 "^1.1.4" 1091 | isarray "^1.0.0" 1092 | 1093 | builtin-modules@^1.0.0: 1094 | version "1.1.1" 1095 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 1096 | 1097 | builtin-status-codes@^3.0.0: 1098 | version "3.0.0" 1099 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 1100 | 1101 | caching-transform@^1.0.0: 1102 | version "1.0.1" 1103 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" 1104 | dependencies: 1105 | md5-hex "^1.2.0" 1106 | mkdirp "^0.5.1" 1107 | write-file-atomic "^1.1.4" 1108 | 1109 | call-matcher@^1.0.0: 1110 | version "1.0.1" 1111 | resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.1.tgz#5134d077984f712a54dad3cbf62de28dce416ca8" 1112 | dependencies: 1113 | core-js "^2.0.0" 1114 | deep-equal "^1.0.0" 1115 | espurify "^1.6.0" 1116 | estraverse "^4.0.0" 1117 | 1118 | call-signature@0.0.2: 1119 | version "0.0.2" 1120 | resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" 1121 | 1122 | camelcase-keys@^2.0.0: 1123 | version "2.1.0" 1124 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 1125 | dependencies: 1126 | camelcase "^2.0.0" 1127 | map-obj "^1.0.0" 1128 | 1129 | camelcase@^1.0.2: 1130 | version "1.2.1" 1131 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 1132 | 1133 | camelcase@^2.0.0, camelcase@^2.1.0: 1134 | version "2.1.1" 1135 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 1136 | 1137 | camelcase@^3.0.0: 1138 | version "3.0.0" 1139 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 1140 | 1141 | caniuse-db@^1.0.30000624: 1142 | version "1.0.30000628" 1143 | resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000628.tgz#3d010e2a8e2537a8d135792e90e4f2ce0eb838cc" 1144 | 1145 | capture-stack-trace@^1.0.0: 1146 | version "1.0.0" 1147 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 1148 | 1149 | caseless@~0.11.0: 1150 | version "0.11.0" 1151 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 1152 | 1153 | center-align@^0.1.1: 1154 | version "0.1.3" 1155 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 1156 | dependencies: 1157 | align-text "^0.1.3" 1158 | lazy-cache "^1.0.3" 1159 | 1160 | chalk@^0.4.0: 1161 | version "0.4.0" 1162 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" 1163 | dependencies: 1164 | ansi-styles "~1.0.0" 1165 | has-color "~0.1.0" 1166 | strip-ansi "~0.1.0" 1167 | 1168 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: 1169 | version "1.1.3" 1170 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 1171 | dependencies: 1172 | ansi-styles "^2.2.1" 1173 | escape-string-regexp "^1.0.2" 1174 | has-ansi "^2.0.0" 1175 | strip-ansi "^3.0.0" 1176 | supports-color "^2.0.0" 1177 | 1178 | chokidar@^1.4.2, chokidar@^1.4.3: 1179 | version "1.6.1" 1180 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 1181 | dependencies: 1182 | anymatch "^1.3.0" 1183 | async-each "^1.0.0" 1184 | glob-parent "^2.0.0" 1185 | inherits "^2.0.1" 1186 | is-binary-path "^1.0.0" 1187 | is-glob "^2.0.0" 1188 | path-is-absolute "^1.0.0" 1189 | readdirp "^2.0.0" 1190 | optionalDependencies: 1191 | fsevents "^1.0.0" 1192 | 1193 | ci-info@^1.0.0: 1194 | version "1.0.0" 1195 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" 1196 | 1197 | cipher-base@^1.0.0, cipher-base@^1.0.1: 1198 | version "1.0.3" 1199 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" 1200 | dependencies: 1201 | inherits "^2.0.1" 1202 | 1203 | clean-yaml-object@^0.1.0: 1204 | version "0.1.0" 1205 | resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" 1206 | 1207 | cli-boxes@^1.0.0: 1208 | version "1.0.0" 1209 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 1210 | 1211 | cli-cursor@^1.0.2: 1212 | version "1.0.2" 1213 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 1214 | dependencies: 1215 | restore-cursor "^1.0.1" 1216 | 1217 | cli-spinners@^0.1.2: 1218 | version "0.1.2" 1219 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" 1220 | 1221 | cli-truncate@^0.2.0: 1222 | version "0.2.1" 1223 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" 1224 | dependencies: 1225 | slice-ansi "0.0.4" 1226 | string-width "^1.0.1" 1227 | 1228 | cliui@^2.1.0: 1229 | version "2.1.0" 1230 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 1231 | dependencies: 1232 | center-align "^0.1.1" 1233 | right-align "^0.1.1" 1234 | wordwrap "0.0.2" 1235 | 1236 | cliui@^3.2.0: 1237 | version "3.2.0" 1238 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 1239 | dependencies: 1240 | string-width "^1.0.1" 1241 | strip-ansi "^3.0.1" 1242 | wrap-ansi "^2.0.0" 1243 | 1244 | clone@2.1.0: 1245 | version "2.1.0" 1246 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.0.tgz#9c715bfbd39aa197c8ee0f8e65c3912ba34f8cd6" 1247 | 1248 | co-with-promise@^4.6.0: 1249 | version "4.6.0" 1250 | resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" 1251 | dependencies: 1252 | pinkie-promise "^1.0.0" 1253 | 1254 | co@^4.6.0: 1255 | version "4.6.0" 1256 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1257 | 1258 | code-point-at@^1.0.0: 1259 | version "1.1.0" 1260 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 1261 | 1262 | colors@^1.0.3: 1263 | version "1.1.2" 1264 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 1265 | 1266 | combined-stream@^1.0.5, combined-stream@~1.0.5: 1267 | version "1.0.5" 1268 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 1269 | dependencies: 1270 | delayed-stream "~1.0.0" 1271 | 1272 | commander@^2.9.0: 1273 | version "2.9.0" 1274 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 1275 | dependencies: 1276 | graceful-readlink ">= 1.0.0" 1277 | 1278 | common-path-prefix@^1.0.0: 1279 | version "1.0.0" 1280 | resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" 1281 | 1282 | commondir@^1.0.1: 1283 | version "1.0.1" 1284 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 1285 | 1286 | concat-map@0.0.1: 1287 | version "0.0.1" 1288 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1289 | 1290 | configstore@^2.0.0: 1291 | version "2.1.0" 1292 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" 1293 | dependencies: 1294 | dot-prop "^3.0.0" 1295 | graceful-fs "^4.1.2" 1296 | mkdirp "^0.5.0" 1297 | object-assign "^4.0.1" 1298 | os-tmpdir "^1.0.0" 1299 | osenv "^0.1.0" 1300 | uuid "^2.0.1" 1301 | write-file-atomic "^1.1.2" 1302 | xdg-basedir "^2.0.0" 1303 | 1304 | console-browserify@^1.1.0: 1305 | version "1.1.0" 1306 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 1307 | dependencies: 1308 | date-now "^0.1.4" 1309 | 1310 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 1311 | version "1.1.0" 1312 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 1313 | 1314 | constants-browserify@^1.0.0: 1315 | version "1.0.0" 1316 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 1317 | 1318 | content-type-parser@^1.0.1: 1319 | version "1.0.1" 1320 | resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" 1321 | 1322 | convert-source-map@^1.1.0, convert-source-map@^1.2.0: 1323 | version "1.3.0" 1324 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" 1325 | 1326 | core-assert@^0.2.0: 1327 | version "0.2.1" 1328 | resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" 1329 | dependencies: 1330 | buf-compare "^1.0.0" 1331 | is-error "^2.2.0" 1332 | 1333 | core-js@^2.0.0, core-js@^2.4.0: 1334 | version "2.4.1" 1335 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 1336 | 1337 | core-util-is@~1.0.0: 1338 | version "1.0.2" 1339 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 1340 | 1341 | create-ecdh@^4.0.0: 1342 | version "4.0.0" 1343 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 1344 | dependencies: 1345 | bn.js "^4.1.0" 1346 | elliptic "^6.0.0" 1347 | 1348 | create-error-class@^3.0.1: 1349 | version "3.0.2" 1350 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 1351 | dependencies: 1352 | capture-stack-trace "^1.0.0" 1353 | 1354 | create-hash@^1.1.0, create-hash@^1.1.1: 1355 | version "1.1.2" 1356 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" 1357 | dependencies: 1358 | cipher-base "^1.0.1" 1359 | inherits "^2.0.1" 1360 | ripemd160 "^1.0.0" 1361 | sha.js "^2.3.6" 1362 | 1363 | create-hmac@^1.1.0, create-hmac@^1.1.2: 1364 | version "1.1.4" 1365 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" 1366 | dependencies: 1367 | create-hash "^1.1.0" 1368 | inherits "^2.0.1" 1369 | 1370 | cross-spawn@^4.0.0: 1371 | version "4.0.2" 1372 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 1373 | dependencies: 1374 | lru-cache "^4.0.1" 1375 | which "^1.2.9" 1376 | 1377 | cryptiles@2.x.x: 1378 | version "2.0.5" 1379 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 1380 | dependencies: 1381 | boom "2.x.x" 1382 | 1383 | crypto-browserify@^3.11.0: 1384 | version "3.11.0" 1385 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" 1386 | dependencies: 1387 | browserify-cipher "^1.0.0" 1388 | browserify-sign "^4.0.0" 1389 | create-ecdh "^4.0.0" 1390 | create-hash "^1.1.0" 1391 | create-hmac "^1.1.0" 1392 | diffie-hellman "^5.0.0" 1393 | inherits "^2.0.1" 1394 | pbkdf2 "^3.0.3" 1395 | public-encrypt "^4.0.0" 1396 | randombytes "^2.0.0" 1397 | 1398 | cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": 1399 | version "0.3.2" 1400 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" 1401 | 1402 | "cssstyle@>= 0.2.36 < 0.3.0": 1403 | version "0.2.37" 1404 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" 1405 | dependencies: 1406 | cssom "0.3.x" 1407 | 1408 | currently-unhandled@^0.4.1: 1409 | version "0.4.1" 1410 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 1411 | dependencies: 1412 | array-find-index "^1.0.1" 1413 | 1414 | dashdash@^1.12.0: 1415 | version "1.14.1" 1416 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 1417 | dependencies: 1418 | assert-plus "^1.0.0" 1419 | 1420 | date-now@^0.1.4: 1421 | version "0.1.4" 1422 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 1423 | 1424 | date-time@^0.1.1: 1425 | version "0.1.1" 1426 | resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" 1427 | 1428 | debug@^2.1.1, debug@^2.2.0: 1429 | version "2.6.0" 1430 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" 1431 | dependencies: 1432 | ms "0.7.2" 1433 | 1434 | debug@~2.2.0: 1435 | version "2.2.0" 1436 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 1437 | dependencies: 1438 | ms "0.7.1" 1439 | 1440 | decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: 1441 | version "1.2.0" 1442 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1443 | 1444 | deep-equal@^1.0.0: 1445 | version "1.0.1" 1446 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 1447 | 1448 | deep-extend@~0.4.0: 1449 | version "0.4.1" 1450 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 1451 | 1452 | deep-is@~0.1.3: 1453 | version "0.1.3" 1454 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1455 | 1456 | delayed-stream@~1.0.0: 1457 | version "1.0.0" 1458 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1459 | 1460 | delegates@^1.0.0: 1461 | version "1.0.0" 1462 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1463 | 1464 | des.js@^1.0.0: 1465 | version "1.0.0" 1466 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 1467 | dependencies: 1468 | inherits "^2.0.1" 1469 | minimalistic-assert "^1.0.0" 1470 | 1471 | detect-indent@^4.0.0: 1472 | version "4.0.0" 1473 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1474 | dependencies: 1475 | repeating "^2.0.0" 1476 | 1477 | diffie-hellman@^5.0.0: 1478 | version "5.0.2" 1479 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 1480 | dependencies: 1481 | bn.js "^4.1.0" 1482 | miller-rabin "^4.0.0" 1483 | randombytes "^2.0.0" 1484 | 1485 | domain-browser@^1.1.1: 1486 | version "1.1.7" 1487 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 1488 | 1489 | dot-prop@^3.0.0: 1490 | version "3.0.0" 1491 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" 1492 | dependencies: 1493 | is-obj "^1.0.0" 1494 | 1495 | duplexer2@^0.1.4: 1496 | version "0.1.4" 1497 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 1498 | dependencies: 1499 | readable-stream "^2.0.2" 1500 | 1501 | eastasianwidth@^0.1.1: 1502 | version "0.1.1" 1503 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c" 1504 | 1505 | ecc-jsbn@~0.1.1: 1506 | version "0.1.1" 1507 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 1508 | dependencies: 1509 | jsbn "~0.1.0" 1510 | 1511 | electron-to-chromium@^1.1.0, electron-to-chromium@^1.2.3: 1512 | version "1.2.4" 1513 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.4.tgz#9751cbea89fa120bf88c226ba41eb8d0b6f1b597" 1514 | 1515 | elliptic@^6.0.0: 1516 | version "6.3.2" 1517 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48" 1518 | dependencies: 1519 | bn.js "^4.4.0" 1520 | brorand "^1.0.1" 1521 | hash.js "^1.0.0" 1522 | inherits "^2.0.1" 1523 | 1524 | emojis-list@^2.0.0: 1525 | version "2.1.0" 1526 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 1527 | 1528 | empower-core@^0.6.1: 1529 | version "0.6.1" 1530 | resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.1.tgz#6c187f502fcef7554d57933396aac655483772b1" 1531 | dependencies: 1532 | call-signature "0.0.2" 1533 | core-js "^2.0.0" 1534 | 1535 | enhanced-resolve@^3.0.0: 1536 | version "3.0.3" 1537 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.0.3.tgz#df14c06b5fc5eecade1094c9c5a12b4b3edc0b62" 1538 | dependencies: 1539 | graceful-fs "^4.1.2" 1540 | memory-fs "^0.4.0" 1541 | object-assign "^4.0.1" 1542 | tapable "^0.2.5" 1543 | 1544 | errno@^0.1.3: 1545 | version "0.1.4" 1546 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" 1547 | dependencies: 1548 | prr "~0.0.0" 1549 | 1550 | error-ex@^1.2.0: 1551 | version "1.3.0" 1552 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" 1553 | dependencies: 1554 | is-arrayish "^0.2.1" 1555 | 1556 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: 1557 | version "1.0.5" 1558 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1559 | 1560 | escodegen@^1.6.1: 1561 | version "1.8.1" 1562 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 1563 | dependencies: 1564 | esprima "^2.7.1" 1565 | estraverse "^1.9.1" 1566 | esutils "^2.0.2" 1567 | optionator "^0.8.1" 1568 | optionalDependencies: 1569 | source-map "~0.2.0" 1570 | 1571 | espower-location-detector@^1.0.0: 1572 | version "1.0.0" 1573 | resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" 1574 | dependencies: 1575 | is-url "^1.2.1" 1576 | path-is-absolute "^1.0.0" 1577 | source-map "^0.5.0" 1578 | xtend "^4.0.0" 1579 | 1580 | esprima@^2.7.1: 1581 | version "2.7.3" 1582 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 1583 | 1584 | espurify@^1.6.0: 1585 | version "1.6.0" 1586 | resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.6.0.tgz#6cb993582d9422bd6f2d4b258aadb14833f394f0" 1587 | dependencies: 1588 | core-js "^2.0.0" 1589 | 1590 | estraverse@^1.9.1: 1591 | version "1.9.3" 1592 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 1593 | 1594 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 1595 | version "4.2.0" 1596 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1597 | 1598 | esutils@^2.0.2: 1599 | version "2.0.2" 1600 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1601 | 1602 | events@^1.0.0: 1603 | version "1.1.1" 1604 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 1605 | 1606 | evp_bytestokey@^1.0.0: 1607 | version "1.0.0" 1608 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" 1609 | dependencies: 1610 | create-hash "^1.1.1" 1611 | 1612 | exit-hook@^1.0.0: 1613 | version "1.1.1" 1614 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 1615 | 1616 | expand-brackets@^0.1.4: 1617 | version "0.1.5" 1618 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1619 | dependencies: 1620 | is-posix-bracket "^0.1.0" 1621 | 1622 | expand-range@^1.8.1: 1623 | version "1.8.2" 1624 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1625 | dependencies: 1626 | fill-range "^2.1.0" 1627 | 1628 | extend@~3.0.0: 1629 | version "3.0.0" 1630 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 1631 | 1632 | extglob@^0.3.1: 1633 | version "0.3.2" 1634 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1635 | dependencies: 1636 | is-extglob "^1.0.0" 1637 | 1638 | extsprintf@1.0.2: 1639 | version "1.0.2" 1640 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 1641 | 1642 | fast-levenshtein@~2.0.4: 1643 | version "2.0.6" 1644 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1645 | 1646 | figures@^1.4.0: 1647 | version "1.7.0" 1648 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 1649 | dependencies: 1650 | escape-string-regexp "^1.0.5" 1651 | object-assign "^4.1.0" 1652 | 1653 | filename-regex@^2.0.0: 1654 | version "2.0.0" 1655 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 1656 | 1657 | fill-range@^2.1.0: 1658 | version "2.2.3" 1659 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 1660 | dependencies: 1661 | is-number "^2.1.0" 1662 | isobject "^2.0.0" 1663 | randomatic "^1.1.3" 1664 | repeat-element "^1.1.2" 1665 | repeat-string "^1.5.2" 1666 | 1667 | filled-array@^1.0.0: 1668 | version "1.1.0" 1669 | resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" 1670 | 1671 | find-cache-dir@^0.1.1: 1672 | version "0.1.1" 1673 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" 1674 | dependencies: 1675 | commondir "^1.0.1" 1676 | mkdirp "^0.5.1" 1677 | pkg-dir "^1.0.0" 1678 | 1679 | find-up@^1.0.0: 1680 | version "1.1.2" 1681 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1682 | dependencies: 1683 | path-exists "^2.0.0" 1684 | pinkie-promise "^2.0.0" 1685 | 1686 | fn-name@^2.0.0: 1687 | version "2.0.1" 1688 | resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" 1689 | 1690 | for-in@^0.1.5: 1691 | version "0.1.6" 1692 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" 1693 | 1694 | for-own@^0.1.4: 1695 | version "0.1.4" 1696 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" 1697 | dependencies: 1698 | for-in "^0.1.5" 1699 | 1700 | forever-agent@~0.6.1: 1701 | version "0.6.1" 1702 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1703 | 1704 | form-data@~2.1.1: 1705 | version "2.1.2" 1706 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 1707 | dependencies: 1708 | asynckit "^0.4.0" 1709 | combined-stream "^1.0.5" 1710 | mime-types "^2.1.12" 1711 | 1712 | fs.realpath@^1.0.0: 1713 | version "1.0.0" 1714 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1715 | 1716 | fsevents@^1.0.0: 1717 | version "1.0.17" 1718 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" 1719 | dependencies: 1720 | nan "^2.3.0" 1721 | node-pre-gyp "^0.6.29" 1722 | 1723 | fstream-ignore@~1.0.5: 1724 | version "1.0.5" 1725 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1726 | dependencies: 1727 | fstream "^1.0.0" 1728 | inherits "2" 1729 | minimatch "^3.0.0" 1730 | 1731 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: 1732 | version "1.0.10" 1733 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" 1734 | dependencies: 1735 | graceful-fs "^4.1.2" 1736 | inherits "~2.0.0" 1737 | mkdirp ">=0.5 0" 1738 | rimraf "2" 1739 | 1740 | gauge@~2.7.1: 1741 | version "2.7.2" 1742 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" 1743 | dependencies: 1744 | aproba "^1.0.3" 1745 | console-control-strings "^1.0.0" 1746 | has-unicode "^2.0.0" 1747 | object-assign "^4.1.0" 1748 | signal-exit "^3.0.0" 1749 | string-width "^1.0.1" 1750 | strip-ansi "^3.0.1" 1751 | supports-color "^0.2.0" 1752 | wide-align "^1.1.0" 1753 | 1754 | generate-function@^2.0.0: 1755 | version "2.0.0" 1756 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1757 | 1758 | generate-object-property@^1.1.0: 1759 | version "1.2.0" 1760 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1761 | dependencies: 1762 | is-property "^1.0.0" 1763 | 1764 | get-caller-file@^1.0.1: 1765 | version "1.0.2" 1766 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1767 | 1768 | get-port@^2.1.0: 1769 | version "2.1.0" 1770 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-2.1.0.tgz#8783f9dcebd1eea495a334e1a6a251e78887ab1a" 1771 | dependencies: 1772 | pinkie-promise "^2.0.0" 1773 | 1774 | get-stdin@^4.0.1: 1775 | version "4.0.1" 1776 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 1777 | 1778 | getpass@^0.1.1: 1779 | version "0.1.6" 1780 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 1781 | dependencies: 1782 | assert-plus "^1.0.0" 1783 | 1784 | glob-base@^0.3.0: 1785 | version "0.3.0" 1786 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1787 | dependencies: 1788 | glob-parent "^2.0.0" 1789 | is-glob "^2.0.0" 1790 | 1791 | glob-parent@^2.0.0: 1792 | version "2.0.0" 1793 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1794 | dependencies: 1795 | is-glob "^2.0.0" 1796 | 1797 | glob@^7.0.3, glob@^7.0.5: 1798 | version "7.1.1" 1799 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1800 | dependencies: 1801 | fs.realpath "^1.0.0" 1802 | inflight "^1.0.4" 1803 | inherits "2" 1804 | minimatch "^3.0.2" 1805 | once "^1.3.0" 1806 | path-is-absolute "^1.0.0" 1807 | 1808 | globals@^9.0.0: 1809 | version "9.14.0" 1810 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" 1811 | 1812 | globby@^6.0.0: 1813 | version "6.1.0" 1814 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 1815 | dependencies: 1816 | array-union "^1.0.1" 1817 | glob "^7.0.3" 1818 | object-assign "^4.0.1" 1819 | pify "^2.0.0" 1820 | pinkie-promise "^2.0.0" 1821 | 1822 | got@^5.0.0: 1823 | version "5.7.1" 1824 | resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" 1825 | dependencies: 1826 | create-error-class "^3.0.1" 1827 | duplexer2 "^0.1.4" 1828 | is-redirect "^1.0.0" 1829 | is-retry-allowed "^1.0.0" 1830 | is-stream "^1.0.0" 1831 | lowercase-keys "^1.0.0" 1832 | node-status-codes "^1.0.0" 1833 | object-assign "^4.0.1" 1834 | parse-json "^2.1.0" 1835 | pinkie-promise "^2.0.0" 1836 | read-all-stream "^3.0.0" 1837 | readable-stream "^2.0.5" 1838 | timed-out "^3.0.0" 1839 | unzip-response "^1.0.2" 1840 | url-parse-lax "^1.0.0" 1841 | 1842 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1843 | version "4.1.11" 1844 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1845 | 1846 | "graceful-readlink@>= 1.0.0": 1847 | version "1.0.1" 1848 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1849 | 1850 | har-validator@~2.0.6: 1851 | version "2.0.6" 1852 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 1853 | dependencies: 1854 | chalk "^1.1.1" 1855 | commander "^2.9.0" 1856 | is-my-json-valid "^2.12.4" 1857 | pinkie-promise "^2.0.0" 1858 | 1859 | has-ansi@^2.0.0: 1860 | version "2.0.0" 1861 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1862 | dependencies: 1863 | ansi-regex "^2.0.0" 1864 | 1865 | has-color@~0.1.0: 1866 | version "0.1.7" 1867 | resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" 1868 | 1869 | has-flag@^1.0.0: 1870 | version "1.0.0" 1871 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1872 | 1873 | has-flag@^2.0.0: 1874 | version "2.0.0" 1875 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 1876 | 1877 | has-unicode@^2.0.0: 1878 | version "2.0.1" 1879 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1880 | 1881 | hash.js@^1.0.0: 1882 | version "1.0.3" 1883 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" 1884 | dependencies: 1885 | inherits "^2.0.1" 1886 | 1887 | hawk@~3.1.3: 1888 | version "3.1.3" 1889 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1890 | dependencies: 1891 | boom "2.x.x" 1892 | cryptiles "2.x.x" 1893 | hoek "2.x.x" 1894 | sntp "1.x.x" 1895 | 1896 | hoek@2.x.x: 1897 | version "2.16.3" 1898 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1899 | 1900 | home-or-tmp@^2.0.0: 1901 | version "2.0.0" 1902 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1903 | dependencies: 1904 | os-homedir "^1.0.0" 1905 | os-tmpdir "^1.0.1" 1906 | 1907 | hosted-git-info@^2.1.4: 1908 | version "2.1.5" 1909 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" 1910 | 1911 | html-encoding-sniffer@^1.0.1: 1912 | version "1.0.1" 1913 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" 1914 | dependencies: 1915 | whatwg-encoding "^1.0.1" 1916 | 1917 | http-signature@~1.1.0: 1918 | version "1.1.1" 1919 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1920 | dependencies: 1921 | assert-plus "^0.2.0" 1922 | jsprim "^1.2.2" 1923 | sshpk "^1.7.0" 1924 | 1925 | https-browserify@0.0.1: 1926 | version "0.0.1" 1927 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 1928 | 1929 | iconv-lite@0.4.13: 1930 | version "0.4.13" 1931 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" 1932 | 1933 | iconv-lite@^0.4.13: 1934 | version "0.4.15" 1935 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" 1936 | 1937 | ieee754@^1.1.4: 1938 | version "1.1.8" 1939 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1940 | 1941 | ignore-by-default@^1.0.0, ignore-by-default@^1.0.1: 1942 | version "1.0.1" 1943 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1944 | 1945 | imurmurhash@^0.1.4: 1946 | version "0.1.4" 1947 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1948 | 1949 | indent-string@^2.1.0: 1950 | version "2.1.0" 1951 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1952 | dependencies: 1953 | repeating "^2.0.0" 1954 | 1955 | indexof@0.0.1: 1956 | version "0.0.1" 1957 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1958 | 1959 | inflight@^1.0.4: 1960 | version "1.0.6" 1961 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1962 | dependencies: 1963 | once "^1.3.0" 1964 | wrappy "1" 1965 | 1966 | inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: 1967 | version "2.0.3" 1968 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1969 | 1970 | inherits@2.0.1: 1971 | version "2.0.1" 1972 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1973 | 1974 | ini@~1.3.0: 1975 | version "1.3.4" 1976 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1977 | 1978 | interpret@^1.0.0: 1979 | version "1.0.1" 1980 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" 1981 | 1982 | invariant@^2.2.0, invariant@^2.2.2: 1983 | version "2.2.2" 1984 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1985 | dependencies: 1986 | loose-envify "^1.0.0" 1987 | 1988 | invert-kv@^1.0.0: 1989 | version "1.0.0" 1990 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1991 | 1992 | irregular-plurals@^1.0.0: 1993 | version "1.2.0" 1994 | resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac" 1995 | 1996 | is-arrayish@^0.2.1: 1997 | version "0.2.1" 1998 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1999 | 2000 | is-binary-path@^1.0.0: 2001 | version "1.0.1" 2002 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 2003 | dependencies: 2004 | binary-extensions "^1.0.0" 2005 | 2006 | is-buffer@^1.0.2: 2007 | version "1.1.4" 2008 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 2009 | 2010 | is-builtin-module@^1.0.0: 2011 | version "1.0.0" 2012 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 2013 | dependencies: 2014 | builtin-modules "^1.0.0" 2015 | 2016 | is-ci@^1.0.7: 2017 | version "1.0.10" 2018 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" 2019 | dependencies: 2020 | ci-info "^1.0.0" 2021 | 2022 | is-dotfile@^1.0.0: 2023 | version "1.0.2" 2024 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 2025 | 2026 | is-equal-shallow@^0.1.3: 2027 | version "0.1.3" 2028 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 2029 | dependencies: 2030 | is-primitive "^2.0.0" 2031 | 2032 | is-error@^2.2.0: 2033 | version "2.2.1" 2034 | resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" 2035 | 2036 | is-extendable@^0.1.1: 2037 | version "0.1.1" 2038 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 2039 | 2040 | is-extglob@^1.0.0: 2041 | version "1.0.0" 2042 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 2043 | 2044 | is-finite@^1.0.0, is-finite@^1.0.1: 2045 | version "1.0.2" 2046 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 2047 | dependencies: 2048 | number-is-nan "^1.0.0" 2049 | 2050 | is-fullwidth-code-point@^1.0.0: 2051 | version "1.0.0" 2052 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 2053 | dependencies: 2054 | number-is-nan "^1.0.0" 2055 | 2056 | is-generator-fn@^1.0.0: 2057 | version "1.0.0" 2058 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" 2059 | 2060 | is-glob@^2.0.0, is-glob@^2.0.1: 2061 | version "2.0.1" 2062 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 2063 | dependencies: 2064 | is-extglob "^1.0.0" 2065 | 2066 | is-my-json-valid@^2.12.4: 2067 | version "2.15.0" 2068 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" 2069 | dependencies: 2070 | generate-function "^2.0.0" 2071 | generate-object-property "^1.1.0" 2072 | jsonpointer "^4.0.0" 2073 | xtend "^4.0.0" 2074 | 2075 | is-npm@^1.0.0: 2076 | version "1.0.0" 2077 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 2078 | 2079 | is-number@^2.0.2, is-number@^2.1.0: 2080 | version "2.1.0" 2081 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 2082 | dependencies: 2083 | kind-of "^3.0.2" 2084 | 2085 | is-obj@^1.0.0: 2086 | version "1.0.1" 2087 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 2088 | 2089 | is-observable@^0.2.0: 2090 | version "0.2.0" 2091 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" 2092 | dependencies: 2093 | symbol-observable "^0.2.2" 2094 | 2095 | is-plain-obj@^1.0.0: 2096 | version "1.1.0" 2097 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 2098 | 2099 | is-posix-bracket@^0.1.0: 2100 | version "0.1.1" 2101 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 2102 | 2103 | is-primitive@^2.0.0: 2104 | version "2.0.0" 2105 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 2106 | 2107 | is-promise@^2.1.0: 2108 | version "2.1.0" 2109 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 2110 | 2111 | is-property@^1.0.0: 2112 | version "1.0.2" 2113 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 2114 | 2115 | is-redirect@^1.0.0: 2116 | version "1.0.0" 2117 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 2118 | 2119 | is-retry-allowed@^1.0.0: 2120 | version "1.1.0" 2121 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 2122 | 2123 | is-stream@^1.0.0: 2124 | version "1.1.0" 2125 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 2126 | 2127 | is-typedarray@~1.0.0: 2128 | version "1.0.0" 2129 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2130 | 2131 | is-url@^1.2.1: 2132 | version "1.2.2" 2133 | resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" 2134 | 2135 | is-utf8@^0.2.0: 2136 | version "0.2.1" 2137 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 2138 | 2139 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 2140 | version "1.0.0" 2141 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 2142 | 2143 | isexe@^1.1.1: 2144 | version "1.1.2" 2145 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" 2146 | 2147 | isobject@^2.0.0: 2148 | version "2.1.0" 2149 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 2150 | dependencies: 2151 | isarray "1.0.0" 2152 | 2153 | isstream@~0.1.2: 2154 | version "0.1.2" 2155 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 2156 | 2157 | jodid25519@^1.0.0: 2158 | version "1.0.2" 2159 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 2160 | dependencies: 2161 | jsbn "~0.1.0" 2162 | 2163 | js-tokens@^3.0.0: 2164 | version "3.0.0" 2165 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.0.tgz#a2f2a969caae142fb3cd56228358c89366957bd1" 2166 | 2167 | jsbn@~0.1.0: 2168 | version "0.1.0" 2169 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" 2170 | 2171 | jsdom@9.9.1: 2172 | version "9.9.1" 2173 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.9.1.tgz#84f3972ad394ab963233af8725211bce4d01bfd5" 2174 | dependencies: 2175 | abab "^1.0.0" 2176 | acorn "^2.4.0" 2177 | acorn-globals "^1.0.4" 2178 | array-equal "^1.0.0" 2179 | content-type-parser "^1.0.1" 2180 | cssom ">= 0.3.0 < 0.4.0" 2181 | cssstyle ">= 0.2.36 < 0.3.0" 2182 | escodegen "^1.6.1" 2183 | html-encoding-sniffer "^1.0.1" 2184 | iconv-lite "^0.4.13" 2185 | nwmatcher ">= 1.3.9 < 2.0.0" 2186 | parse5 "^1.5.1" 2187 | request "^2.55.0" 2188 | sax "^1.1.4" 2189 | symbol-tree ">= 3.1.0 < 4.0.0" 2190 | tough-cookie "^2.3.1" 2191 | webidl-conversions "^3.0.1" 2192 | whatwg-encoding "^1.0.1" 2193 | whatwg-url "^4.1.0" 2194 | xml-name-validator ">= 2.0.1 < 3.0.0" 2195 | 2196 | jsesc@^1.3.0: 2197 | version "1.3.0" 2198 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 2199 | 2200 | jsesc@~0.5.0: 2201 | version "0.5.0" 2202 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 2203 | 2204 | json-loader@^0.5.4: 2205 | version "0.5.4" 2206 | resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" 2207 | 2208 | json-schema@0.2.3: 2209 | version "0.2.3" 2210 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2211 | 2212 | json-stable-stringify@^1.0.1: 2213 | version "1.0.1" 2214 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 2215 | dependencies: 2216 | jsonify "~0.0.0" 2217 | 2218 | json-stringify-safe@~5.0.1: 2219 | version "5.0.1" 2220 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2221 | 2222 | json5@^0.5.0: 2223 | version "0.5.1" 2224 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 2225 | 2226 | jsonify@~0.0.0: 2227 | version "0.0.0" 2228 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 2229 | 2230 | jsonpointer@^4.0.0: 2231 | version "4.0.1" 2232 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 2233 | 2234 | jsprim@^1.2.2: 2235 | version "1.3.1" 2236 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" 2237 | dependencies: 2238 | extsprintf "1.0.2" 2239 | json-schema "0.2.3" 2240 | verror "1.3.6" 2241 | 2242 | kind-of@^3.0.2: 2243 | version "3.1.0" 2244 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 2245 | dependencies: 2246 | is-buffer "^1.0.2" 2247 | 2248 | last-line-stream@^1.0.0: 2249 | version "1.0.0" 2250 | resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" 2251 | dependencies: 2252 | through2 "^2.0.0" 2253 | 2254 | latest-version@^2.0.0: 2255 | version "2.0.0" 2256 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" 2257 | dependencies: 2258 | package-json "^2.0.0" 2259 | 2260 | lazy-cache@^1.0.3: 2261 | version "1.0.4" 2262 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 2263 | 2264 | lazy-req@^1.1.0: 2265 | version "1.1.0" 2266 | resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" 2267 | 2268 | lcid@^1.0.0: 2269 | version "1.0.0" 2270 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 2271 | dependencies: 2272 | invert-kv "^1.0.0" 2273 | 2274 | levn@~0.3.0: 2275 | version "0.3.0" 2276 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2277 | dependencies: 2278 | prelude-ls "~1.1.2" 2279 | type-check "~0.3.2" 2280 | 2281 | load-json-file@^1.0.0, load-json-file@^1.1.0: 2282 | version "1.1.0" 2283 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 2284 | dependencies: 2285 | graceful-fs "^4.1.2" 2286 | parse-json "^2.2.0" 2287 | pify "^2.0.0" 2288 | pinkie-promise "^2.0.0" 2289 | strip-bom "^2.0.0" 2290 | 2291 | loader-runner@^2.3.0: 2292 | version "2.3.0" 2293 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" 2294 | 2295 | loader-utils@^0.2.16: 2296 | version "0.2.16" 2297 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" 2298 | dependencies: 2299 | big.js "^3.1.3" 2300 | emojis-list "^2.0.0" 2301 | json5 "^0.5.0" 2302 | object-assign "^4.0.1" 2303 | 2304 | loader-utils@^1.0.2: 2305 | version "1.0.2" 2306 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830" 2307 | dependencies: 2308 | big.js "^3.1.3" 2309 | emojis-list "^2.0.0" 2310 | json5 "^0.5.0" 2311 | 2312 | lodash.debounce@^4.0.3: 2313 | version "4.0.8" 2314 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 2315 | 2316 | lodash.difference@^4.3.0: 2317 | version "4.5.0" 2318 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 2319 | 2320 | lodash.flatten@^4.2.0: 2321 | version "4.4.0" 2322 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 2323 | 2324 | lodash.isequal@^4.4.0: 2325 | version "4.5.0" 2326 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 2327 | 2328 | lodash@^4.14.0, lodash@^4.2.0: 2329 | version "4.17.4" 2330 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 2331 | 2332 | longest@^1.0.1: 2333 | version "1.0.1" 2334 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 2335 | 2336 | loose-envify@^1.0.0: 2337 | version "1.3.1" 2338 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 2339 | dependencies: 2340 | js-tokens "^3.0.0" 2341 | 2342 | loud-rejection@^1.0.0, loud-rejection@^1.2.0: 2343 | version "1.6.0" 2344 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 2345 | dependencies: 2346 | currently-unhandled "^0.4.1" 2347 | signal-exit "^3.0.0" 2348 | 2349 | lowercase-keys@^1.0.0: 2350 | version "1.0.0" 2351 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 2352 | 2353 | lru-cache@^4.0.1: 2354 | version "4.0.2" 2355 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" 2356 | dependencies: 2357 | pseudomap "^1.0.1" 2358 | yallist "^2.0.0" 2359 | 2360 | map-obj@^1.0.0, map-obj@^1.0.1: 2361 | version "1.0.1" 2362 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 2363 | 2364 | matcher@^0.1.1: 2365 | version "0.1.2" 2366 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101" 2367 | dependencies: 2368 | escape-string-regexp "^1.0.4" 2369 | 2370 | max-timeout@^1.0.0: 2371 | version "1.0.0" 2372 | resolved "https://registry.yarnpkg.com/max-timeout/-/max-timeout-1.0.0.tgz#b68f69a2f99e0b476fd4cb23e2059ca750715e1f" 2373 | 2374 | md5-hex@^1.2.0, md5-hex@^1.3.0: 2375 | version "1.3.0" 2376 | resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" 2377 | dependencies: 2378 | md5-o-matic "^0.1.1" 2379 | 2380 | md5-o-matic@^0.1.1: 2381 | version "0.1.1" 2382 | resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" 2383 | 2384 | memory-fs@^0.4.0, memory-fs@~0.4.1: 2385 | version "0.4.1" 2386 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 2387 | dependencies: 2388 | errno "^0.1.3" 2389 | readable-stream "^2.0.1" 2390 | 2391 | meow@^3.7.0: 2392 | version "3.7.0" 2393 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 2394 | dependencies: 2395 | camelcase-keys "^2.0.0" 2396 | decamelize "^1.1.2" 2397 | loud-rejection "^1.0.0" 2398 | map-obj "^1.0.1" 2399 | minimist "^1.1.3" 2400 | normalize-package-data "^2.3.4" 2401 | object-assign "^4.0.1" 2402 | read-pkg-up "^1.0.1" 2403 | redent "^1.0.0" 2404 | trim-newlines "^1.0.0" 2405 | 2406 | micromatch@^2.1.5: 2407 | version "2.3.11" 2408 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2409 | dependencies: 2410 | arr-diff "^2.0.0" 2411 | array-unique "^0.2.1" 2412 | braces "^1.8.2" 2413 | expand-brackets "^0.1.4" 2414 | extglob "^0.3.1" 2415 | filename-regex "^2.0.0" 2416 | is-extglob "^1.0.0" 2417 | is-glob "^2.0.1" 2418 | kind-of "^3.0.2" 2419 | normalize-path "^2.0.1" 2420 | object.omit "^2.0.0" 2421 | parse-glob "^3.0.4" 2422 | regex-cache "^0.4.2" 2423 | 2424 | miller-rabin@^4.0.0: 2425 | version "4.0.0" 2426 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" 2427 | dependencies: 2428 | bn.js "^4.0.0" 2429 | brorand "^1.0.1" 2430 | 2431 | mime-db@~1.26.0: 2432 | version "1.26.0" 2433 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" 2434 | 2435 | mime-types@^2.1.12, mime-types@~2.1.7: 2436 | version "2.1.14" 2437 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" 2438 | dependencies: 2439 | mime-db "~1.26.0" 2440 | 2441 | minimalistic-assert@^1.0.0: 2442 | version "1.0.0" 2443 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 2444 | 2445 | minimatch@^3.0.0, minimatch@^3.0.2: 2446 | version "3.0.3" 2447 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 2448 | dependencies: 2449 | brace-expansion "^1.0.0" 2450 | 2451 | minimist@0.0.8: 2452 | version "0.0.8" 2453 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2454 | 2455 | minimist@^1.1.3, minimist@^1.2.0: 2456 | version "1.2.0" 2457 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2458 | 2459 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: 2460 | version "0.5.1" 2461 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2462 | dependencies: 2463 | minimist "0.0.8" 2464 | 2465 | ms@0.7.1: 2466 | version "0.7.1" 2467 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 2468 | 2469 | ms@0.7.2, ms@^0.7.1: 2470 | version "0.7.2" 2471 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 2472 | 2473 | multimatch@^2.1.0: 2474 | version "2.1.0" 2475 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" 2476 | dependencies: 2477 | array-differ "^1.0.0" 2478 | array-union "^1.0.1" 2479 | arrify "^1.0.0" 2480 | minimatch "^3.0.0" 2481 | 2482 | nan@^2.3.0: 2483 | version "2.5.0" 2484 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8" 2485 | 2486 | node-libs-browser@^2.0.0: 2487 | version "2.0.0" 2488 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" 2489 | dependencies: 2490 | assert "^1.1.1" 2491 | browserify-zlib "^0.1.4" 2492 | buffer "^4.3.0" 2493 | console-browserify "^1.1.0" 2494 | constants-browserify "^1.0.0" 2495 | crypto-browserify "^3.11.0" 2496 | domain-browser "^1.1.1" 2497 | events "^1.0.0" 2498 | https-browserify "0.0.1" 2499 | os-browserify "^0.2.0" 2500 | path-browserify "0.0.0" 2501 | process "^0.11.0" 2502 | punycode "^1.2.4" 2503 | querystring-es3 "^0.2.0" 2504 | readable-stream "^2.0.5" 2505 | stream-browserify "^2.0.1" 2506 | stream-http "^2.3.1" 2507 | string_decoder "^0.10.25" 2508 | timers-browserify "^2.0.2" 2509 | tty-browserify "0.0.0" 2510 | url "^0.11.0" 2511 | util "^0.10.3" 2512 | vm-browserify "0.0.4" 2513 | 2514 | node-pre-gyp@^0.6.29: 2515 | version "0.6.32" 2516 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" 2517 | dependencies: 2518 | mkdirp "~0.5.1" 2519 | nopt "~3.0.6" 2520 | npmlog "^4.0.1" 2521 | rc "~1.1.6" 2522 | request "^2.79.0" 2523 | rimraf "~2.5.4" 2524 | semver "~5.3.0" 2525 | tar "~2.2.1" 2526 | tar-pack "~3.3.0" 2527 | 2528 | node-status-codes@^1.0.0: 2529 | version "1.0.0" 2530 | resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" 2531 | 2532 | nopt@~3.0.6: 2533 | version "3.0.6" 2534 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 2535 | dependencies: 2536 | abbrev "1" 2537 | 2538 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 2539 | version "2.3.5" 2540 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" 2541 | dependencies: 2542 | hosted-git-info "^2.1.4" 2543 | is-builtin-module "^1.0.0" 2544 | semver "2 || 3 || 4 || 5" 2545 | validate-npm-package-license "^3.0.1" 2546 | 2547 | normalize-path@^2.0.1: 2548 | version "2.0.1" 2549 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 2550 | 2551 | npmlog@^4.0.1: 2552 | version "4.0.2" 2553 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 2554 | dependencies: 2555 | are-we-there-yet "~1.1.2" 2556 | console-control-strings "~1.1.0" 2557 | gauge "~2.7.1" 2558 | set-blocking "~2.0.0" 2559 | 2560 | number-is-nan@^1.0.0: 2561 | version "1.0.1" 2562 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2563 | 2564 | "nwmatcher@>= 1.3.9 < 2.0.0": 2565 | version "1.3.9" 2566 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" 2567 | 2568 | oauth-sign@~0.8.1: 2569 | version "0.8.2" 2570 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 2571 | 2572 | object-assign@^4.0.1, object-assign@^4.1.0: 2573 | version "4.1.1" 2574 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2575 | 2576 | object.omit@^2.0.0: 2577 | version "2.0.1" 2578 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2579 | dependencies: 2580 | for-own "^0.1.4" 2581 | is-extendable "^0.1.1" 2582 | 2583 | observable-to-promise@^0.4.0: 2584 | version "0.4.0" 2585 | resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.4.0.tgz#28afe71645308f2d41d71f47ad3fece1a377e52b" 2586 | dependencies: 2587 | is-observable "^0.2.0" 2588 | symbol-observable "^0.2.2" 2589 | 2590 | once@^1.3.0: 2591 | version "1.4.0" 2592 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2593 | dependencies: 2594 | wrappy "1" 2595 | 2596 | once@~1.3.3: 2597 | version "1.3.3" 2598 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 2599 | dependencies: 2600 | wrappy "1" 2601 | 2602 | onetime@^1.0.0: 2603 | version "1.1.0" 2604 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 2605 | 2606 | option-chain@^0.1.0: 2607 | version "0.1.1" 2608 | resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-0.1.1.tgz#e9b811e006f1c0f54802f28295bfc8970f8dcfbd" 2609 | dependencies: 2610 | object-assign "^4.0.1" 2611 | 2612 | optionator@^0.8.1: 2613 | version "0.8.2" 2614 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2615 | dependencies: 2616 | deep-is "~0.1.3" 2617 | fast-levenshtein "~2.0.4" 2618 | levn "~0.3.0" 2619 | prelude-ls "~1.1.2" 2620 | type-check "~0.3.2" 2621 | wordwrap "~1.0.0" 2622 | 2623 | os-browserify@^0.2.0: 2624 | version "0.2.1" 2625 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" 2626 | 2627 | os-homedir@^1.0.0: 2628 | version "1.0.2" 2629 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2630 | 2631 | os-locale@^1.4.0: 2632 | version "1.4.0" 2633 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 2634 | dependencies: 2635 | lcid "^1.0.0" 2636 | 2637 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 2638 | version "1.0.2" 2639 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2640 | 2641 | osenv@^0.1.0: 2642 | version "0.1.4" 2643 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 2644 | dependencies: 2645 | os-homedir "^1.0.0" 2646 | os-tmpdir "^1.0.0" 2647 | 2648 | package-hash@^1.1.0: 2649 | version "1.2.0" 2650 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" 2651 | dependencies: 2652 | md5-hex "^1.3.0" 2653 | 2654 | package-json@^2.0.0: 2655 | version "2.4.0" 2656 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" 2657 | dependencies: 2658 | got "^5.0.0" 2659 | registry-auth-token "^3.0.1" 2660 | registry-url "^3.0.3" 2661 | semver "^5.1.0" 2662 | 2663 | pako@~0.2.0: 2664 | version "0.2.9" 2665 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" 2666 | 2667 | parse-asn1@^5.0.0: 2668 | version "5.0.0" 2669 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" 2670 | dependencies: 2671 | asn1.js "^4.0.0" 2672 | browserify-aes "^1.0.0" 2673 | create-hash "^1.1.0" 2674 | evp_bytestokey "^1.0.0" 2675 | pbkdf2 "^3.0.3" 2676 | 2677 | parse-glob@^3.0.4: 2678 | version "3.0.4" 2679 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2680 | dependencies: 2681 | glob-base "^0.3.0" 2682 | is-dotfile "^1.0.0" 2683 | is-extglob "^1.0.0" 2684 | is-glob "^2.0.0" 2685 | 2686 | parse-json@^2.1.0, parse-json@^2.2.0: 2687 | version "2.2.0" 2688 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2689 | dependencies: 2690 | error-ex "^1.2.0" 2691 | 2692 | parse-ms@^0.1.0: 2693 | version "0.1.2" 2694 | resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" 2695 | 2696 | parse-ms@^1.0.0: 2697 | version "1.0.1" 2698 | resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" 2699 | 2700 | parse5@^1.5.1: 2701 | version "1.5.1" 2702 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" 2703 | 2704 | path-browserify@0.0.0: 2705 | version "0.0.0" 2706 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 2707 | 2708 | path-exists@^2.0.0: 2709 | version "2.1.0" 2710 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2711 | dependencies: 2712 | pinkie-promise "^2.0.0" 2713 | 2714 | path-is-absolute@^1.0.0: 2715 | version "1.0.1" 2716 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2717 | 2718 | path-type@^1.0.0: 2719 | version "1.1.0" 2720 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2721 | dependencies: 2722 | graceful-fs "^4.1.2" 2723 | pify "^2.0.0" 2724 | pinkie-promise "^2.0.0" 2725 | 2726 | pbkdf2@^3.0.3: 2727 | version "3.0.9" 2728 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" 2729 | dependencies: 2730 | create-hmac "^1.1.2" 2731 | 2732 | pify@^2.0.0: 2733 | version "2.3.0" 2734 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2735 | 2736 | pinkie-promise@^1.0.0: 2737 | version "1.0.0" 2738 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" 2739 | dependencies: 2740 | pinkie "^1.0.0" 2741 | 2742 | pinkie-promise@^2.0.0: 2743 | version "2.0.1" 2744 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2745 | dependencies: 2746 | pinkie "^2.0.0" 2747 | 2748 | pinkie@^1.0.0: 2749 | version "1.0.0" 2750 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" 2751 | 2752 | pinkie@^2.0.0: 2753 | version "2.0.4" 2754 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2755 | 2756 | pkg-conf@^1.0.1: 2757 | version "1.1.3" 2758 | resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-1.1.3.tgz#378e56d6fd13e88bfb6f4a25df7a83faabddba5b" 2759 | dependencies: 2760 | find-up "^1.0.0" 2761 | load-json-file "^1.1.0" 2762 | object-assign "^4.0.1" 2763 | symbol "^0.2.1" 2764 | 2765 | pkg-dir@^1.0.0: 2766 | version "1.0.0" 2767 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 2768 | dependencies: 2769 | find-up "^1.0.0" 2770 | 2771 | plur@^1.0.0: 2772 | version "1.0.0" 2773 | resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" 2774 | 2775 | plur@^2.0.0: 2776 | version "2.1.2" 2777 | resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" 2778 | dependencies: 2779 | irregular-plurals "^1.0.0" 2780 | 2781 | power-assert-context-formatter@^1.0.4: 2782 | version "1.1.1" 2783 | resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.1.1.tgz#edba352d3ed8a603114d667265acce60d689ccdf" 2784 | dependencies: 2785 | core-js "^2.0.0" 2786 | power-assert-context-traversal "^1.1.1" 2787 | 2788 | power-assert-context-traversal@^1.1.1: 2789 | version "1.1.1" 2790 | resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.1.1.tgz#88cabca0d13b6359f07d3d3e8afa699264577ed9" 2791 | dependencies: 2792 | core-js "^2.0.0" 2793 | estraverse "^4.1.0" 2794 | 2795 | power-assert-renderer-assertion@^1.0.1: 2796 | version "1.1.1" 2797 | resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.1.1.tgz#cbfc0e77e0086a8f96af3f1d8e67b9ee7e28ce98" 2798 | dependencies: 2799 | power-assert-renderer-base "^1.1.1" 2800 | power-assert-util-string-width "^1.1.1" 2801 | 2802 | power-assert-renderer-base@^1.1.1: 2803 | version "1.1.1" 2804 | resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb" 2805 | 2806 | power-assert-renderer-diagram@^1.1.1: 2807 | version "1.1.1" 2808 | resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.1.1.tgz#7e0c82cc08a84b155e51b5ae94f59709778a65fb" 2809 | dependencies: 2810 | core-js "^2.0.0" 2811 | power-assert-renderer-base "^1.1.1" 2812 | power-assert-util-string-width "^1.1.1" 2813 | stringifier "^1.3.0" 2814 | 2815 | power-assert-renderer-succinct@^1.0.1: 2816 | version "1.1.1" 2817 | resolved "https://registry.yarnpkg.com/power-assert-renderer-succinct/-/power-assert-renderer-succinct-1.1.1.tgz#c2a468b23822abd6f80e2aba5322347b09df476e" 2818 | dependencies: 2819 | core-js "^2.0.0" 2820 | power-assert-renderer-diagram "^1.1.1" 2821 | 2822 | power-assert-util-string-width@^1.1.1: 2823 | version "1.1.1" 2824 | resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.1.1.tgz#be659eb7937fdd2e6c9a77268daaf64bd5b7c592" 2825 | dependencies: 2826 | eastasianwidth "^0.1.1" 2827 | 2828 | prelude-ls@~1.1.2: 2829 | version "1.1.2" 2830 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2831 | 2832 | prepend-http@^1.0.1: 2833 | version "1.0.4" 2834 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 2835 | 2836 | preserve@^0.2.0: 2837 | version "0.2.0" 2838 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2839 | 2840 | pretty-ms@^0.2.1: 2841 | version "0.2.2" 2842 | resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" 2843 | dependencies: 2844 | parse-ms "^0.1.0" 2845 | 2846 | pretty-ms@^2.0.0: 2847 | version "2.1.0" 2848 | resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" 2849 | dependencies: 2850 | is-finite "^1.0.1" 2851 | parse-ms "^1.0.0" 2852 | plur "^1.0.0" 2853 | 2854 | private@^0.1.6: 2855 | version "0.1.6" 2856 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" 2857 | 2858 | process-nextick-args@~1.0.6: 2859 | version "1.0.7" 2860 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2861 | 2862 | process@^0.11.0: 2863 | version "0.11.9" 2864 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" 2865 | 2866 | prr@~0.0.0: 2867 | version "0.0.0" 2868 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" 2869 | 2870 | pseudomap@^1.0.1: 2871 | version "1.0.2" 2872 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2873 | 2874 | public-encrypt@^4.0.0: 2875 | version "4.0.0" 2876 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 2877 | dependencies: 2878 | bn.js "^4.1.0" 2879 | browserify-rsa "^4.0.0" 2880 | create-hash "^1.1.0" 2881 | parse-asn1 "^5.0.0" 2882 | randombytes "^2.0.1" 2883 | 2884 | punycode@1.3.2: 2885 | version "1.3.2" 2886 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 2887 | 2888 | punycode@^1.2.4, punycode@^1.4.1: 2889 | version "1.4.1" 2890 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2891 | 2892 | qs@~6.3.0: 2893 | version "6.3.0" 2894 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" 2895 | 2896 | querystring-es3@^0.2.0: 2897 | version "0.2.1" 2898 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 2899 | 2900 | querystring@0.2.0: 2901 | version "0.2.0" 2902 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 2903 | 2904 | randomatic@^1.1.3: 2905 | version "1.1.6" 2906 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 2907 | dependencies: 2908 | is-number "^2.0.2" 2909 | kind-of "^3.0.2" 2910 | 2911 | randombytes@^2.0.0, randombytes@^2.0.1: 2912 | version "2.0.3" 2913 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" 2914 | 2915 | rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: 2916 | version "1.1.6" 2917 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" 2918 | dependencies: 2919 | deep-extend "~0.4.0" 2920 | ini "~1.3.0" 2921 | minimist "^1.2.0" 2922 | strip-json-comments "~1.0.4" 2923 | 2924 | read-all-stream@^3.0.0: 2925 | version "3.1.0" 2926 | resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" 2927 | dependencies: 2928 | pinkie-promise "^2.0.0" 2929 | readable-stream "^2.0.0" 2930 | 2931 | read-pkg-up@^1.0.1: 2932 | version "1.0.1" 2933 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2934 | dependencies: 2935 | find-up "^1.0.0" 2936 | read-pkg "^1.0.0" 2937 | 2938 | read-pkg@^1.0.0: 2939 | version "1.1.0" 2940 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2941 | dependencies: 2942 | load-json-file "^1.0.0" 2943 | normalize-package-data "^2.3.2" 2944 | path-type "^1.0.0" 2945 | 2946 | readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5: 2947 | version "2.2.2" 2948 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" 2949 | dependencies: 2950 | buffer-shims "^1.0.0" 2951 | core-util-is "~1.0.0" 2952 | inherits "~2.0.1" 2953 | isarray "~1.0.0" 2954 | process-nextick-args "~1.0.6" 2955 | string_decoder "~0.10.x" 2956 | util-deprecate "~1.0.1" 2957 | 2958 | readable-stream@~2.1.4: 2959 | version "2.1.5" 2960 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 2961 | dependencies: 2962 | buffer-shims "^1.0.0" 2963 | core-util-is "~1.0.0" 2964 | inherits "~2.0.1" 2965 | isarray "~1.0.0" 2966 | process-nextick-args "~1.0.6" 2967 | string_decoder "~0.10.x" 2968 | util-deprecate "~1.0.1" 2969 | 2970 | readdirp@^2.0.0: 2971 | version "2.1.0" 2972 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2973 | dependencies: 2974 | graceful-fs "^4.1.2" 2975 | minimatch "^3.0.2" 2976 | readable-stream "^2.0.2" 2977 | set-immediate-shim "^1.0.1" 2978 | 2979 | redent@^1.0.0: 2980 | version "1.0.0" 2981 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 2982 | dependencies: 2983 | indent-string "^2.1.0" 2984 | strip-indent "^1.0.1" 2985 | 2986 | regenerate@^1.2.1: 2987 | version "1.3.2" 2988 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" 2989 | 2990 | regenerator-runtime@^0.10.0: 2991 | version "0.10.1" 2992 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" 2993 | 2994 | regenerator-transform@0.9.8: 2995 | version "0.9.8" 2996 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" 2997 | dependencies: 2998 | babel-runtime "^6.18.0" 2999 | babel-types "^6.19.0" 3000 | private "^0.1.6" 3001 | 3002 | regex-cache@^0.4.2: 3003 | version "0.4.3" 3004 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 3005 | dependencies: 3006 | is-equal-shallow "^0.1.3" 3007 | is-primitive "^2.0.0" 3008 | 3009 | regexpu-core@^2.0.0: 3010 | version "2.0.0" 3011 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 3012 | dependencies: 3013 | regenerate "^1.2.1" 3014 | regjsgen "^0.2.0" 3015 | regjsparser "^0.1.4" 3016 | 3017 | registry-auth-token@^3.0.1: 3018 | version "3.1.0" 3019 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" 3020 | dependencies: 3021 | rc "^1.1.6" 3022 | 3023 | registry-url@^3.0.3: 3024 | version "3.1.0" 3025 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 3026 | dependencies: 3027 | rc "^1.0.1" 3028 | 3029 | regjsgen@^0.2.0: 3030 | version "0.2.0" 3031 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 3032 | 3033 | regjsparser@^0.1.4: 3034 | version "0.1.5" 3035 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 3036 | dependencies: 3037 | jsesc "~0.5.0" 3038 | 3039 | repeat-element@^1.1.2: 3040 | version "1.1.2" 3041 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 3042 | 3043 | repeat-string@^1.5.2: 3044 | version "1.6.1" 3045 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 3046 | 3047 | repeating@^2.0.0: 3048 | version "2.0.1" 3049 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 3050 | dependencies: 3051 | is-finite "^1.0.0" 3052 | 3053 | request@^2.55.0, request@^2.79.0: 3054 | version "2.79.0" 3055 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 3056 | dependencies: 3057 | aws-sign2 "~0.6.0" 3058 | aws4 "^1.2.1" 3059 | caseless "~0.11.0" 3060 | combined-stream "~1.0.5" 3061 | extend "~3.0.0" 3062 | forever-agent "~0.6.1" 3063 | form-data "~2.1.1" 3064 | har-validator "~2.0.6" 3065 | hawk "~3.1.3" 3066 | http-signature "~1.1.0" 3067 | is-typedarray "~1.0.0" 3068 | isstream "~0.1.2" 3069 | json-stringify-safe "~5.0.1" 3070 | mime-types "~2.1.7" 3071 | oauth-sign "~0.8.1" 3072 | qs "~6.3.0" 3073 | stringstream "~0.0.4" 3074 | tough-cookie "~2.3.0" 3075 | tunnel-agent "~0.4.1" 3076 | uuid "^3.0.0" 3077 | 3078 | require-directory@^2.1.1: 3079 | version "2.1.1" 3080 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3081 | 3082 | require-main-filename@^1.0.1: 3083 | version "1.0.1" 3084 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 3085 | 3086 | require-precompiled@^0.1.0: 3087 | version "0.1.0" 3088 | resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" 3089 | 3090 | resolve-cwd@^1.0.0: 3091 | version "1.0.0" 3092 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-1.0.0.tgz#4eaeea41ed040d1702457df64a42b2b07d246f9f" 3093 | dependencies: 3094 | resolve-from "^2.0.0" 3095 | 3096 | resolve-from@^2.0.0: 3097 | version "2.0.0" 3098 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 3099 | 3100 | restore-cursor@^1.0.1: 3101 | version "1.0.1" 3102 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 3103 | dependencies: 3104 | exit-hook "^1.0.0" 3105 | onetime "^1.0.0" 3106 | 3107 | right-align@^0.1.1: 3108 | version "0.1.3" 3109 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 3110 | dependencies: 3111 | align-text "^0.1.1" 3112 | 3113 | rimraf@2, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4: 3114 | version "2.5.4" 3115 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 3116 | dependencies: 3117 | glob "^7.0.5" 3118 | 3119 | ripemd160@^1.0.0: 3120 | version "1.0.1" 3121 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" 3122 | 3123 | sax@^1.1.4: 3124 | version "1.2.1" 3125 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 3126 | 3127 | semver-diff@^2.0.0: 3128 | version "2.1.0" 3129 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 3130 | dependencies: 3131 | semver "^5.0.3" 3132 | 3133 | "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: 3134 | version "5.3.0" 3135 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 3136 | 3137 | set-blocking@^2.0.0, set-blocking@~2.0.0: 3138 | version "2.0.0" 3139 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3140 | 3141 | set-immediate-shim@^1.0.1: 3142 | version "1.0.1" 3143 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 3144 | 3145 | setimmediate@^1.0.4: 3146 | version "1.0.5" 3147 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 3148 | 3149 | sha.js@^2.3.6: 3150 | version "2.4.8" 3151 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" 3152 | dependencies: 3153 | inherits "^2.0.1" 3154 | 3155 | signal-exit@^3.0.0: 3156 | version "3.0.2" 3157 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 3158 | 3159 | slash@^1.0.0: 3160 | version "1.0.0" 3161 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 3162 | 3163 | slice-ansi@0.0.4: 3164 | version "0.0.4" 3165 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 3166 | 3167 | slide@^1.1.5: 3168 | version "1.1.6" 3169 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 3170 | 3171 | sntp@1.x.x: 3172 | version "1.0.9" 3173 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 3174 | dependencies: 3175 | hoek "2.x.x" 3176 | 3177 | sort-keys@^1.1.1: 3178 | version "1.1.2" 3179 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" 3180 | dependencies: 3181 | is-plain-obj "^1.0.0" 3182 | 3183 | source-list-map@~0.1.7: 3184 | version "0.1.8" 3185 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" 3186 | 3187 | source-map-support@^0.4.0, source-map-support@^0.4.2: 3188 | version "0.4.10" 3189 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.10.tgz#d7b19038040a14c0837a18e630a196453952b378" 3190 | dependencies: 3191 | source-map "^0.5.3" 3192 | 3193 | source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: 3194 | version "0.5.6" 3195 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 3196 | 3197 | source-map@~0.2.0: 3198 | version "0.2.0" 3199 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 3200 | dependencies: 3201 | amdefine ">=0.0.4" 3202 | 3203 | spdx-correct@~1.0.0: 3204 | version "1.0.2" 3205 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 3206 | dependencies: 3207 | spdx-license-ids "^1.0.2" 3208 | 3209 | spdx-expression-parse@~1.0.0: 3210 | version "1.0.4" 3211 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 3212 | 3213 | spdx-license-ids@^1.0.2: 3214 | version "1.2.2" 3215 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 3216 | 3217 | sshpk@^1.7.0: 3218 | version "1.10.2" 3219 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" 3220 | dependencies: 3221 | asn1 "~0.2.3" 3222 | assert-plus "^1.0.0" 3223 | dashdash "^1.12.0" 3224 | getpass "^0.1.1" 3225 | optionalDependencies: 3226 | bcrypt-pbkdf "^1.0.0" 3227 | ecc-jsbn "~0.1.1" 3228 | jodid25519 "^1.0.0" 3229 | jsbn "~0.1.0" 3230 | tweetnacl "~0.14.0" 3231 | 3232 | stack-utils@^0.4.0: 3233 | version "0.4.0" 3234 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1" 3235 | 3236 | stream-browserify@^2.0.1: 3237 | version "2.0.1" 3238 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 3239 | dependencies: 3240 | inherits "~2.0.1" 3241 | readable-stream "^2.0.2" 3242 | 3243 | stream-http@^2.3.1: 3244 | version "2.6.3" 3245 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3" 3246 | dependencies: 3247 | builtin-status-codes "^3.0.0" 3248 | inherits "^2.0.1" 3249 | readable-stream "^2.1.0" 3250 | to-arraybuffer "^1.0.0" 3251 | xtend "^4.0.0" 3252 | 3253 | string-width@^1.0.1, string-width@^1.0.2: 3254 | version "1.0.2" 3255 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 3256 | dependencies: 3257 | code-point-at "^1.0.0" 3258 | is-fullwidth-code-point "^1.0.0" 3259 | strip-ansi "^3.0.0" 3260 | 3261 | string_decoder@^0.10.25, string_decoder@~0.10.x: 3262 | version "0.10.31" 3263 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 3264 | 3265 | stringifier@^1.3.0: 3266 | version "1.3.0" 3267 | resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959" 3268 | dependencies: 3269 | core-js "^2.0.0" 3270 | traverse "^0.6.6" 3271 | type-name "^2.0.1" 3272 | 3273 | stringstream@~0.0.4: 3274 | version "0.0.5" 3275 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 3276 | 3277 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3278 | version "3.0.1" 3279 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 3280 | dependencies: 3281 | ansi-regex "^2.0.0" 3282 | 3283 | strip-ansi@~0.1.0: 3284 | version "0.1.1" 3285 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" 3286 | 3287 | strip-bom@^2.0.0: 3288 | version "2.0.0" 3289 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 3290 | dependencies: 3291 | is-utf8 "^0.2.0" 3292 | 3293 | strip-indent@^1.0.1: 3294 | version "1.0.1" 3295 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 3296 | dependencies: 3297 | get-stdin "^4.0.1" 3298 | 3299 | strip-json-comments@~1.0.4: 3300 | version "1.0.4" 3301 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 3302 | 3303 | supports-color@^0.2.0: 3304 | version "0.2.0" 3305 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" 3306 | 3307 | supports-color@^2.0.0: 3308 | version "2.0.0" 3309 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3310 | 3311 | supports-color@^3.1.0: 3312 | version "3.2.3" 3313 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 3314 | dependencies: 3315 | has-flag "^1.0.0" 3316 | 3317 | symbol-observable@^0.2.2: 3318 | version "0.2.4" 3319 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" 3320 | 3321 | "symbol-tree@>= 3.1.0 < 4.0.0": 3322 | version "3.2.1" 3323 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb" 3324 | 3325 | symbol@^0.2.1: 3326 | version "0.2.3" 3327 | resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7" 3328 | 3329 | tapable@^0.2.5, tapable@~0.2.5: 3330 | version "0.2.6" 3331 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" 3332 | 3333 | tar-pack@~3.3.0: 3334 | version "3.3.0" 3335 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" 3336 | dependencies: 3337 | debug "~2.2.0" 3338 | fstream "~1.0.10" 3339 | fstream-ignore "~1.0.5" 3340 | once "~1.3.3" 3341 | readable-stream "~2.1.4" 3342 | rimraf "~2.5.1" 3343 | tar "~2.2.1" 3344 | uid-number "~0.0.6" 3345 | 3346 | tar@~2.2.1: 3347 | version "2.2.1" 3348 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 3349 | dependencies: 3350 | block-stream "*" 3351 | fstream "^1.0.2" 3352 | inherits "2" 3353 | 3354 | text-table@^0.2.0: 3355 | version "0.2.0" 3356 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 3357 | 3358 | the-argv@^1.0.0: 3359 | version "1.0.0" 3360 | resolved "https://registry.yarnpkg.com/the-argv/-/the-argv-1.0.0.tgz#0084705005730dd84db755253c931ae398db9522" 3361 | 3362 | through2@^2.0.0: 3363 | version "2.0.3" 3364 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 3365 | dependencies: 3366 | readable-stream "^2.1.5" 3367 | xtend "~4.0.1" 3368 | 3369 | time-require@^0.1.2: 3370 | version "0.1.2" 3371 | resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" 3372 | dependencies: 3373 | chalk "^0.4.0" 3374 | date-time "^0.1.1" 3375 | pretty-ms "^0.2.1" 3376 | text-table "^0.2.0" 3377 | 3378 | timed-out@^3.0.0: 3379 | version "3.1.3" 3380 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" 3381 | 3382 | timers-browserify@^2.0.2: 3383 | version "2.0.2" 3384 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" 3385 | dependencies: 3386 | setimmediate "^1.0.4" 3387 | 3388 | to-arraybuffer@^1.0.0: 3389 | version "1.0.1" 3390 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 3391 | 3392 | to-fast-properties@^1.0.1: 3393 | version "1.0.2" 3394 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" 3395 | 3396 | tough-cookie@^2.3.1, tough-cookie@~2.3.0: 3397 | version "2.3.2" 3398 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 3399 | dependencies: 3400 | punycode "^1.4.1" 3401 | 3402 | tr46@~0.0.3: 3403 | version "0.0.3" 3404 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 3405 | 3406 | traverse@^0.6.6: 3407 | version "0.6.6" 3408 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" 3409 | 3410 | trim-newlines@^1.0.0: 3411 | version "1.0.0" 3412 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 3413 | 3414 | trim-right@^1.0.1: 3415 | version "1.0.1" 3416 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3417 | 3418 | ts-loader@^2.0.1: 3419 | version "2.0.1" 3420 | resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-2.0.1.tgz#2ec8fa5e20ef01062a4a2c28c9d6ac828c32e75d" 3421 | dependencies: 3422 | colors "^1.0.3" 3423 | enhanced-resolve "^3.0.0" 3424 | loader-utils "^1.0.2" 3425 | semver "^5.0.1" 3426 | 3427 | tty-browserify@0.0.0: 3428 | version "0.0.0" 3429 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 3430 | 3431 | tunnel-agent@~0.4.1: 3432 | version "0.4.3" 3433 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 3434 | 3435 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 3436 | version "0.14.5" 3437 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 3438 | 3439 | type-check@~0.3.2: 3440 | version "0.3.2" 3441 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 3442 | dependencies: 3443 | prelude-ls "~1.1.2" 3444 | 3445 | type-name@^2.0.1: 3446 | version "2.0.2" 3447 | resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" 3448 | 3449 | typescript@^2.1.5: 3450 | version "2.1.5" 3451 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.5.tgz#6fe9479e00e01855247cea216e7561bafcdbcd4a" 3452 | 3453 | uglify-js@^2.7.5: 3454 | version "2.7.5" 3455 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" 3456 | dependencies: 3457 | async "~0.2.6" 3458 | source-map "~0.5.1" 3459 | uglify-to-browserify "~1.0.0" 3460 | yargs "~3.10.0" 3461 | 3462 | uglify-to-browserify@~1.0.0: 3463 | version "1.0.2" 3464 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 3465 | 3466 | uid-number@~0.0.6: 3467 | version "0.0.6" 3468 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 3469 | 3470 | uid2@0.0.3: 3471 | version "0.0.3" 3472 | resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" 3473 | 3474 | unique-temp-dir@^1.0.0: 3475 | version "1.0.0" 3476 | resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" 3477 | dependencies: 3478 | mkdirp "^0.5.1" 3479 | os-tmpdir "^1.0.1" 3480 | uid2 "0.0.3" 3481 | 3482 | unzip-response@^1.0.2: 3483 | version "1.0.2" 3484 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" 3485 | 3486 | update-notifier@^1.0.0: 3487 | version "1.0.3" 3488 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" 3489 | dependencies: 3490 | boxen "^0.6.0" 3491 | chalk "^1.0.0" 3492 | configstore "^2.0.0" 3493 | is-npm "^1.0.0" 3494 | latest-version "^2.0.0" 3495 | lazy-req "^1.1.0" 3496 | semver-diff "^2.0.0" 3497 | xdg-basedir "^2.0.0" 3498 | 3499 | url-parse-lax@^1.0.0: 3500 | version "1.0.0" 3501 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 3502 | dependencies: 3503 | prepend-http "^1.0.1" 3504 | 3505 | url@^0.11.0: 3506 | version "0.11.0" 3507 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 3508 | dependencies: 3509 | punycode "1.3.2" 3510 | querystring "0.2.0" 3511 | 3512 | util-deprecate@~1.0.1: 3513 | version "1.0.2" 3514 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3515 | 3516 | util@0.10.3, util@^0.10.3: 3517 | version "0.10.3" 3518 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 3519 | dependencies: 3520 | inherits "2.0.1" 3521 | 3522 | uuid@^2.0.1: 3523 | version "2.0.3" 3524 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" 3525 | 3526 | uuid@^3.0.0: 3527 | version "3.0.1" 3528 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 3529 | 3530 | validate-npm-package-license@^3.0.1: 3531 | version "3.0.1" 3532 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 3533 | dependencies: 3534 | spdx-correct "~1.0.0" 3535 | spdx-expression-parse "~1.0.0" 3536 | 3537 | verror@1.3.6: 3538 | version "1.3.6" 3539 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 3540 | dependencies: 3541 | extsprintf "1.0.2" 3542 | 3543 | vm-browserify@0.0.4: 3544 | version "0.0.4" 3545 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 3546 | dependencies: 3547 | indexof "0.0.1" 3548 | 3549 | watchpack@^1.2.0: 3550 | version "1.2.0" 3551 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.0.tgz#15d4620f1e7471f13fcb551d5c030d2c3eb42dbb" 3552 | dependencies: 3553 | async "^2.1.2" 3554 | chokidar "^1.4.3" 3555 | graceful-fs "^4.1.2" 3556 | 3557 | webidl-conversions@^3.0.0, webidl-conversions@^3.0.1: 3558 | version "3.0.1" 3559 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 3560 | 3561 | webpack-sources@^0.1.4: 3562 | version "0.1.4" 3563 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" 3564 | dependencies: 3565 | source-list-map "~0.1.7" 3566 | source-map "~0.5.3" 3567 | 3568 | webpack@^2.2.1: 3569 | version "2.2.1" 3570 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" 3571 | dependencies: 3572 | acorn "^4.0.4" 3573 | acorn-dynamic-import "^2.0.0" 3574 | ajv "^4.7.0" 3575 | ajv-keywords "^1.1.1" 3576 | async "^2.1.2" 3577 | enhanced-resolve "^3.0.0" 3578 | interpret "^1.0.0" 3579 | json-loader "^0.5.4" 3580 | loader-runner "^2.3.0" 3581 | loader-utils "^0.2.16" 3582 | memory-fs "~0.4.1" 3583 | mkdirp "~0.5.0" 3584 | node-libs-browser "^2.0.0" 3585 | source-map "^0.5.3" 3586 | supports-color "^3.1.0" 3587 | tapable "~0.2.5" 3588 | uglify-js "^2.7.5" 3589 | watchpack "^1.2.0" 3590 | webpack-sources "^0.1.4" 3591 | yargs "^6.0.0" 3592 | 3593 | whatwg-encoding@^1.0.1: 3594 | version "1.0.1" 3595 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" 3596 | dependencies: 3597 | iconv-lite "0.4.13" 3598 | 3599 | whatwg-url@^4.1.0: 3600 | version "4.3.0" 3601 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.3.0.tgz#92aaee21f4f2a642074357d70ef8500a7cbb171a" 3602 | dependencies: 3603 | tr46 "~0.0.3" 3604 | webidl-conversions "^3.0.0" 3605 | 3606 | which-module@^1.0.0: 3607 | version "1.0.0" 3608 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 3609 | 3610 | which@^1.2.9: 3611 | version "1.2.12" 3612 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" 3613 | dependencies: 3614 | isexe "^1.1.1" 3615 | 3616 | wide-align@^1.1.0: 3617 | version "1.1.0" 3618 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 3619 | dependencies: 3620 | string-width "^1.0.1" 3621 | 3622 | widest-line@^1.0.0: 3623 | version "1.0.0" 3624 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" 3625 | dependencies: 3626 | string-width "^1.0.1" 3627 | 3628 | window-size@0.1.0: 3629 | version "0.1.0" 3630 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 3631 | 3632 | wordwrap@0.0.2: 3633 | version "0.0.2" 3634 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 3635 | 3636 | wordwrap@~1.0.0: 3637 | version "1.0.0" 3638 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3639 | 3640 | wrap-ansi@^2.0.0: 3641 | version "2.1.0" 3642 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3643 | dependencies: 3644 | string-width "^1.0.1" 3645 | strip-ansi "^3.0.1" 3646 | 3647 | wrappy@1: 3648 | version "1.0.2" 3649 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3650 | 3651 | write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: 3652 | version "1.3.1" 3653 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" 3654 | dependencies: 3655 | graceful-fs "^4.1.11" 3656 | imurmurhash "^0.1.4" 3657 | slide "^1.1.5" 3658 | 3659 | write-json-file@^1.1.0: 3660 | version "1.2.0" 3661 | resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-1.2.0.tgz#2d5dfe96abc3c889057c93971aa4005efb548134" 3662 | dependencies: 3663 | graceful-fs "^4.1.2" 3664 | mkdirp "^0.5.1" 3665 | object-assign "^4.0.1" 3666 | pify "^2.0.0" 3667 | pinkie-promise "^2.0.0" 3668 | sort-keys "^1.1.1" 3669 | write-file-atomic "^1.1.2" 3670 | 3671 | write-pkg@^1.0.0: 3672 | version "1.0.0" 3673 | resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-1.0.0.tgz#aeb8aa9d4d788e1d893dfb0854968b543a919f57" 3674 | dependencies: 3675 | write-json-file "^1.1.0" 3676 | 3677 | xdg-basedir@^2.0.0: 3678 | version "2.0.0" 3679 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" 3680 | dependencies: 3681 | os-homedir "^1.0.0" 3682 | 3683 | "xml-name-validator@>= 2.0.1 < 3.0.0": 3684 | version "2.0.1" 3685 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" 3686 | 3687 | xtend@^4.0.0, xtend@~4.0.1: 3688 | version "4.0.1" 3689 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3690 | 3691 | y18n@^3.2.1: 3692 | version "3.2.1" 3693 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3694 | 3695 | yallist@^2.0.0: 3696 | version "2.0.0" 3697 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" 3698 | 3699 | yargs-parser@^4.2.0: 3700 | version "4.2.1" 3701 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" 3702 | dependencies: 3703 | camelcase "^3.0.0" 3704 | 3705 | yargs@^6.0.0: 3706 | version "6.6.0" 3707 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" 3708 | dependencies: 3709 | camelcase "^3.0.0" 3710 | cliui "^3.2.0" 3711 | decamelize "^1.1.1" 3712 | get-caller-file "^1.0.1" 3713 | os-locale "^1.4.0" 3714 | read-pkg-up "^1.0.1" 3715 | require-directory "^2.1.1" 3716 | require-main-filename "^1.0.1" 3717 | set-blocking "^2.0.0" 3718 | string-width "^1.0.2" 3719 | which-module "^1.0.0" 3720 | y18n "^3.2.1" 3721 | yargs-parser "^4.2.0" 3722 | 3723 | yargs@~3.10.0: 3724 | version "3.10.0" 3725 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 3726 | dependencies: 3727 | camelcase "^1.0.2" 3728 | cliui "^2.1.0" 3729 | decamelize "^1.0.0" 3730 | window-size "0.1.0" 3731 | --------------------------------------------------------------------------------