├── .babelrc ├── .gitignore ├── README.md ├── build ├── really-smooth-scroll.js └── really-smooth-scroll.map ├── demo └── index.html ├── package.json ├── src ├── SmoothScroll.js ├── mapToZero.js ├── presets.js ├── really-smooth-scroll.js ├── shouldStopAnimation.js ├── spring.js ├── stepper.js └── stripStyle.js ├── webpack.prod.config.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-0"] 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # really-smooth-scroll 2 | 3 | [Demo](http://chuson1996.github.io/really-smooth-scroll) 4 | [Live Demo](https://youtu.be/aiG4rMLHjUc?t=2m54s) 5 | 6 | This is it. I have been looking for libraries, shims and tricks for smooth scrolling for way too long on the Internet. And none actually provides the smoothness that I want. THIS ENDS NOW. **(However, this shim only takes effect in desktop browsers, not yet supported for mobile browsers. But soon it will. )** 7 | 8 | This shim overrides browser's `window.scrollTo` function. Instead of jumping immediately, it smoothly scrolls to the scroll position (Check demo). If you want the use the old behavior, use `window.oldScrollTo`. 9 | 10 | The magic algorithm is based on the spring animation in react-motion. [Wanna see why it's awesome?](https://youtu.be/1tavDv5hXpo?t=12m25s) 11 | 12 | ### Install 13 | 14 | ```bash 15 | npm install --save really-smooth-scroll 16 | # or if you use yarn 17 | yarn add really-smooth-scroll 18 | ``` 19 | 20 | ### Usage 21 | ```js 22 | const ReallySmoothScroll = require('really-smooth-scroll'); 23 | // or 24 | // import ReallySmoothScroll from 'really-smooth-scroll'; 25 | 26 | ReallySmoothScroll.shim(); 27 | // Done. Coundn't be easier. 28 | 29 | // If you want to adjust the scrolling sensitivity (Optional) 30 | ReallySmoothScroll.config({ 31 | mousewheelSensitivity: 6, // Default 32 | keydownSensitivity: 6 // Default (When you press arrow down/up key) 33 | }); 34 | ``` 35 | 36 | If you don't use webpack or babel, embed one of these 2 scripts to your html 37 | 38 | ```html 39 | 40 | 41 | 42 | 43 | 44 | ``` 45 | -------------------------------------------------------------------------------- /build/really-smooth-scroll.js: -------------------------------------------------------------------------------- 1 | (function webpackUniversalModuleDefinition(root, factory) { 2 | if(typeof exports === 'object' && typeof module === 'object') 3 | module.exports = factory(); 4 | else if(typeof define === 'function' && define.amd) 5 | define("ReallySmoothScroll", [], factory); 6 | else if(typeof exports === 'object') 7 | exports["ReallySmoothScroll"] = factory(); 8 | else 9 | root["ReallySmoothScroll"] = factory(); 10 | })(this, function() { 11 | return /******/ (function(modules) { // webpackBootstrap 12 | /******/ // The module cache 13 | /******/ var installedModules = {}; 14 | /******/ 15 | /******/ // The require function 16 | /******/ function __webpack_require__(moduleId) { 17 | /******/ 18 | /******/ // Check if module is in cache 19 | /******/ if(installedModules[moduleId]) 20 | /******/ return installedModules[moduleId].exports; 21 | /******/ 22 | /******/ // Create a new module (and put it into the cache) 23 | /******/ var module = installedModules[moduleId] = { 24 | /******/ exports: {}, 25 | /******/ id: moduleId, 26 | /******/ loaded: false 27 | /******/ }; 28 | /******/ 29 | /******/ // Execute the module function 30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 31 | /******/ 32 | /******/ // Flag the module as loaded 33 | /******/ module.loaded = true; 34 | /******/ 35 | /******/ // Return the exports of the module 36 | /******/ return module.exports; 37 | /******/ } 38 | /******/ 39 | /******/ 40 | /******/ // expose the modules object (__webpack_modules__) 41 | /******/ __webpack_require__.m = modules; 42 | /******/ 43 | /******/ // expose the module cache 44 | /******/ __webpack_require__.c = installedModules; 45 | /******/ 46 | /******/ // __webpack_public_path__ 47 | /******/ __webpack_require__.p = "build/"; 48 | /******/ 49 | /******/ // Load entry module and return exports 50 | /******/ return __webpack_require__(0); 51 | /******/ }) 52 | /************************************************************************/ 53 | /******/ ([ 54 | /* 0 */ 55 | /***/ (function(module, exports, __webpack_require__) { 56 | 57 | 'use strict'; 58 | 59 | var SmoothScroll = __webpack_require__(1); 60 | var spring = __webpack_require__(9); 61 | 62 | var mousewheelSensitivity = 6; 63 | var keydownSensitivity = 6; 64 | var forceStop = false; 65 | 66 | function getSpringVal(val) { 67 | if (typeof val === 'number') return val; 68 | return val.val; 69 | } 70 | 71 | function stayInRange(min, max, value) { 72 | return Math.min(max, Math.max(min, value)); 73 | } 74 | 75 | function difference(a, b) { 76 | return Math.abs(a - b); 77 | } 78 | 79 | var moving = false; 80 | var scrollY = spring(0); 81 | 82 | var smoothScroll = new SmoothScroll({ 83 | style: { scrollY: 0 }, 84 | defaultStyle: { scrollY: 0 }, 85 | onRest: function onRest() { 86 | moving = false; 87 | } 88 | }); 89 | 90 | function move(deltaY) { 91 | if (!moving) { 92 | if (difference(getSpringVal(scrollY), Math.round(window.scrollY)) > 4) { 93 | scrollY = window.scrollY; 94 | smoothScroll.componentWillReceiveProps({ 95 | style: { scrollY: scrollY } 96 | }); 97 | } 98 | moving = true; 99 | } 100 | 101 | if (document.querySelector('html').style.overflowY === 'hidden') { 102 | return; 103 | } 104 | 105 | scrollY = stayInRange(0, document.querySelector('html').offsetHeight - window.innerHeight, 106 | // getSpringVal(scrollY) + deltaY 107 | window.scrollY + deltaY * mousewheelSensitivity); 108 | window.scrollTo(window.scrollX, scrollY); 109 | } 110 | 111 | function onkeydown(e) { 112 | if (e.target === document.body && e.key === 'ArrowDown') { 113 | e.preventDefault(); 114 | move(keydownSensitivity * 3); 115 | } else if (e.target === document.body && e.key === 'ArrowUp') { 116 | e.preventDefault(); 117 | move(-keydownSensitivity * 3); 118 | } 119 | } 120 | 121 | var mousewheelTimeout = void 0; 122 | var maxDeltaY = 0; 123 | function onmousewheel(e) { 124 | var deltaY = stayInRange(-50, 50, e.deltaY); 125 | 126 | if (maxDeltaY === 0 || !forceStop) { 127 | maxDeltaY = deltaY; 128 | // console.log('Set maxDeltaY'); 129 | } 130 | if (document.body.contains(e.target) || e.target === document.body) { 131 | e.preventDefault(); 132 | if (forceStop) { 133 | // console.log(Math.abs(maxDeltaY), Math.abs(deltaY)); 134 | if (Math.abs(maxDeltaY) < Math.abs(deltaY) || maxDeltaY * deltaY < 0) { 135 | // console.log('Should disable forceStop now 2'); 136 | forceStop = false; 137 | } else { 138 | maxDeltaY = deltaY; 139 | } 140 | 141 | if (mousewheelTimeout) clearTimeout(mousewheelTimeout); 142 | mousewheelTimeout = setTimeout(function () { 143 | // console.log('Should disable forceStop now'); 144 | forceStop = false; 145 | maxDeltaY = 0; 146 | }, 100); 147 | return; 148 | } 149 | // console.log('Wheeling', forceStop); 150 | move(deltaY); 151 | } 152 | } 153 | 154 | window._scrollTo = window.scrollTo.bind(window); 155 | exports.shim = function shim() { 156 | window.addEventListener('wheel', onmousewheel); 157 | window.addEventListener('keydown', onkeydown); 158 | 159 | if (!window.oldScrollTo) { 160 | window.oldScrollTo = function () { 161 | if (moving) { 162 | window.stopScrolling(); 163 | } 164 | 165 | smoothScroll.componentWillReceiveProps({ 166 | style: { scrollY: arguments.length <= 1 ? undefined : arguments[1] } 167 | }); 168 | }; 169 | 170 | window.scrollTo = function (x, y) { 171 | window._scrollTo(x, window.scrollY); 172 | smoothScroll.componentWillReceiveProps({ 173 | style: { scrollY: spring(y) } 174 | }); 175 | }; 176 | } 177 | window.stopScrolling = function () { 178 | forceStop = true; 179 | smoothScroll.componentWillReceiveProps({ 180 | style: { scrollY: window.scrollY } 181 | }); 182 | }; 183 | }; 184 | 185 | exports.config = function config(options) { 186 | if (options.mousewheelSensitivity) { 187 | mousewheelSensitivity = options.mousewheelSensitivity; 188 | } 189 | if (options.keydownSensitivity) { 190 | keydownSensitivity = options.keydownSensitivity; 191 | } 192 | }; 193 | 194 | /***/ }), 195 | /* 1 */ 196 | /***/ (function(module, exports, __webpack_require__) { 197 | 198 | 'use strict'; 199 | 200 | var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); 201 | 202 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 203 | 204 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 205 | 206 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 207 | 208 | var mapToZero = __webpack_require__(2); 209 | var stripStyle = __webpack_require__(3); 210 | var stepper = __webpack_require__(4); 211 | var defaultNow = __webpack_require__(5); 212 | var defaultRaf = __webpack_require__(7); 213 | var shouldStopAnimation = __webpack_require__(8); 214 | 215 | var msPerFrame = 1000 / 60; 216 | 217 | module.exports = function () { 218 | function SmoothScroll(props) { 219 | var _this = this; 220 | 221 | _classCallCheck(this, SmoothScroll); 222 | 223 | this.clearUnreadPropStyle = function (destStyle) { 224 | var dirty = false; 225 | var _state = _this.state, 226 | currentStyle = _state.currentStyle, 227 | currentVelocity = _state.currentVelocity, 228 | lastIdealStyle = _state.lastIdealStyle, 229 | lastIdealVelocity = _state.lastIdealVelocity; 230 | 231 | 232 | for (var key in destStyle) { 233 | if (!Object.prototype.hasOwnProperty.call(destStyle, key)) { 234 | continue; 235 | } 236 | 237 | var styleValue = destStyle[key]; 238 | if (typeof styleValue === 'number') { 239 | if (!dirty) { 240 | dirty = true; 241 | currentStyle = _extends({}, currentStyle); 242 | currentVelocity = _extends({}, currentVelocity); 243 | lastIdealStyle = _extends({}, lastIdealStyle); 244 | lastIdealVelocity = _extends({}, lastIdealVelocity); 245 | } 246 | 247 | currentStyle[key] = styleValue; 248 | currentVelocity[key] = 0; 249 | lastIdealStyle[key] = styleValue; 250 | lastIdealVelocity[key] = 0; 251 | } 252 | } 253 | 254 | if (dirty) { 255 | _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity }); 256 | } 257 | }; 258 | 259 | this.startAnimationIfNecessary = function () { 260 | // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and 261 | // call cb? No, otherwise accidental parent rerender causes cb trigger 262 | _this.animationID = defaultRaf(function (timestamp) { 263 | // check if we need to animate in the first place 264 | var propsStyle = _this.props.style; 265 | if (shouldStopAnimation(_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) { 266 | if (_this.wasAnimating && _this.props.onRest) { 267 | _this.props.onRest(); 268 | } 269 | 270 | // no need to cancel animationID here; shouldn't have any in flight 271 | _this.animationID = null; 272 | _this.wasAnimating = false; 273 | _this.accumulatedTime = 0; 274 | return; 275 | } 276 | 277 | _this.wasAnimating = true; 278 | 279 | var currentTime = timestamp || defaultNow(); 280 | var timeDelta = currentTime - _this.prevTime; 281 | _this.prevTime = currentTime; 282 | _this.accumulatedTime = _this.accumulatedTime + timeDelta; 283 | // more than 10 frames? prolly switched browser tab. Restart 284 | if (_this.accumulatedTime > msPerFrame * 10) { 285 | _this.accumulatedTime = 0; 286 | } 287 | 288 | if (_this.accumulatedTime === 0) { 289 | // no need to cancel animationID here; shouldn't have any in flight 290 | _this.animationID = null; 291 | _this.startAnimationIfNecessary(); 292 | return; 293 | } 294 | 295 | var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame; 296 | var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame); 297 | 298 | var newLastIdealStyle = {}; 299 | var newLastIdealVelocity = {}; 300 | var newCurrentStyle = {}; 301 | var newCurrentVelocity = {}; 302 | 303 | for (var key in propsStyle) { 304 | if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) { 305 | continue; 306 | } 307 | 308 | var styleValue = propsStyle[key]; 309 | if (typeof styleValue === 'number') { 310 | newCurrentStyle[key] = styleValue; 311 | newCurrentVelocity[key] = 0; 312 | newLastIdealStyle[key] = styleValue; 313 | newLastIdealVelocity[key] = 0; 314 | } else { 315 | var newLastIdealStyleValue = _this.state.lastIdealStyle[key]; 316 | var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key]; 317 | for (var i = 0; i < framesToCatchUp; i++) { 318 | var _stepper = stepper(msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision); 319 | 320 | var _stepper2 = _slicedToArray(_stepper, 2); 321 | 322 | newLastIdealStyleValue = _stepper2[0]; 323 | newLastIdealVelocityValue = _stepper2[1]; 324 | } 325 | 326 | var _stepper3 = stepper(msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision), 327 | _stepper4 = _slicedToArray(_stepper3, 2), 328 | nextIdealX = _stepper4[0], 329 | nextIdealV = _stepper4[1]; 330 | 331 | newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion; 332 | newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion; 333 | newLastIdealStyle[key] = newLastIdealStyleValue; 334 | newLastIdealVelocity[key] = newLastIdealVelocityValue; 335 | } 336 | } 337 | 338 | _this.animationID = null; 339 | // the amount we're looped over above 340 | _this.accumulatedTime -= framesToCatchUp * msPerFrame; 341 | 342 | _this.setState({ 343 | currentStyle: newCurrentStyle, 344 | currentVelocity: newCurrentVelocity, 345 | lastIdealStyle: newLastIdealStyle, 346 | lastIdealVelocity: newLastIdealVelocity 347 | }); 348 | 349 | _this.unreadPropStyle = null; 350 | 351 | _this.startAnimationIfNecessary(); 352 | }); 353 | }; 354 | 355 | this.wasAnimating = false; 356 | this.animationID = null; 357 | this.prevTime = 0; 358 | this.accumulatedTime = 0; 359 | // it's possible that currentStyle's value is stale: if props is immediately 360 | // changed from 0 to 400 to spring(0) again, the async currentStyle is still 361 | // at 0 (didn't have time to tick and interpolate even once). If we naively 362 | // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop). 363 | // In reality currentStyle should be 400 364 | this.unreadPropStyle = null; 365 | // after checking for unreadPropStyle != null, we manually go set the 366 | // non-interpolating values (those that are a number, without a spring 367 | // config) 368 | 369 | 370 | this.props = props; 371 | this.state = this.defaultState(); 372 | 373 | this.prevTime = defaultNow(); 374 | this.startAnimationIfNecessary(); 375 | } 376 | 377 | _createClass(SmoothScroll, [{ 378 | key: 'defaultState', 379 | value: function defaultState() { 380 | var _props = this.props, 381 | defaultStyle = _props.defaultStyle, 382 | style = _props.style; 383 | 384 | var currentStyle = defaultStyle || stripStyle(style); 385 | var currentVelocity = mapToZero(currentStyle); 386 | return { 387 | currentStyle: currentStyle, 388 | currentVelocity: currentVelocity, 389 | lastIdealStyle: currentStyle, 390 | lastIdealVelocity: currentVelocity 391 | }; 392 | } 393 | }, { 394 | key: 'componentWillReceiveProps', 395 | value: function componentWillReceiveProps(nextProps) { 396 | if (this.unreadPropStyle != null) { 397 | // previous props haven't had the chance to be set yet; set them here 398 | this.clearUnreadPropStyle(this.unreadPropStyle); 399 | } 400 | 401 | this.unreadPropStyle = nextProps.style; 402 | if (this.animationID == null) { 403 | this.prevTime = defaultNow(); 404 | this.startAnimationIfNecessary(); 405 | } 406 | 407 | this.props = _extends({}, this.props, nextProps); 408 | } 409 | }, { 410 | key: 'setState', 411 | value: function setState(newState) { 412 | this.state = _extends({}, this.state, newState); 413 | 414 | window._scrollTo(window.scrollX, this.state.currentStyle.scrollY); 415 | } 416 | }]); 417 | 418 | return SmoothScroll; 419 | }(); 420 | 421 | /***/ }), 422 | /* 2 */ 423 | /***/ (function(module, exports) { 424 | 425 | "use strict"; 426 | 427 | // currently used to initiate the velocity style object to 0 428 | module.exports = function mapToZero(obj) { 429 | var ret = {}; 430 | for (var key in obj) { 431 | if (Object.prototype.hasOwnProperty.call(obj, key)) { 432 | ret[key] = 0; 433 | } 434 | } 435 | return ret; 436 | }; 437 | 438 | /***/ }), 439 | /* 3 */ 440 | /***/ (function(module, exports) { 441 | 442 | 'use strict'; 443 | 444 | /* @flow */ 445 | // turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by 446 | // `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2} 447 | 448 | module.exports = function stripStyle(style) { 449 | var ret = {}; 450 | for (var key in style) { 451 | if (!Object.prototype.hasOwnProperty.call(style, key)) { 452 | continue; 453 | } 454 | ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val; 455 | } 456 | return ret; 457 | }; 458 | 459 | /***/ }), 460 | /* 4 */ 461 | /***/ (function(module, exports) { 462 | 463 | "use strict"; 464 | 465 | /* @flow */ 466 | 467 | // stepper is used a lot. Saves allocation to return the same array wrapper. 468 | // This is fine and danger-free against mutations because the callsite 469 | // immediately destructures it and gets the numbers inside without passing the 470 | // array reference around. 471 | var reusedTuple = [0, 0]; 472 | module.exports = function stepper(secondPerFrame, x, v, destX, k, b, precision) { 473 | // Spring stiffness, in kg / s^2 474 | 475 | // for animations, destX is really spring length (spring at rest). initial 476 | // position is considered as the stretched/compressed position of a spring 477 | var Fspring = -k * (x - destX); 478 | 479 | // Damping, in kg / s 480 | var Fdamper = -b * v; 481 | 482 | // usually we put mass here, but for animation purposes, specifying mass is a 483 | // bit redundant. you could simply adjust k and b accordingly 484 | // let a = (Fspring + Fdamper) / mass; 485 | var a = Fspring + Fdamper; 486 | 487 | var newV = v + a * secondPerFrame; 488 | var newX = x + newV * secondPerFrame; 489 | 490 | if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) { 491 | reusedTuple[0] = destX; 492 | reusedTuple[1] = 0; 493 | return reusedTuple; 494 | } 495 | 496 | reusedTuple[0] = newX; 497 | reusedTuple[1] = newV; 498 | return reusedTuple; 499 | }; 500 | 501 | /***/ }), 502 | /* 5 */ 503 | /***/ (function(module, exports, __webpack_require__) { 504 | 505 | /* WEBPACK VAR INJECTION */(function(process) {"use strict"; 506 | 507 | // Generated by CoffeeScript 1.12.2 508 | (function () { 509 | var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime; 510 | 511 | if (typeof performance !== "undefined" && performance !== null && performance.now) { 512 | module.exports = function () { 513 | return performance.now(); 514 | }; 515 | } else if (typeof process !== "undefined" && process !== null && process.hrtime) { 516 | module.exports = function () { 517 | return (getNanoSeconds() - nodeLoadTime) / 1e6; 518 | }; 519 | hrtime = process.hrtime; 520 | getNanoSeconds = function getNanoSeconds() { 521 | var hr; 522 | hr = hrtime(); 523 | return hr[0] * 1e9 + hr[1]; 524 | }; 525 | moduleLoadTime = getNanoSeconds(); 526 | upTime = process.uptime() * 1e9; 527 | nodeLoadTime = moduleLoadTime - upTime; 528 | } else if (Date.now) { 529 | module.exports = function () { 530 | return Date.now() - loadTime; 531 | }; 532 | loadTime = Date.now(); 533 | } else { 534 | module.exports = function () { 535 | return new Date().getTime() - loadTime; 536 | }; 537 | loadTime = new Date().getTime(); 538 | } 539 | }).call(undefined); 540 | 541 | //# sourceMappingURL=performance-now.js.map 542 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6))) 543 | 544 | /***/ }), 545 | /* 6 */ 546 | /***/ (function(module, exports) { 547 | 548 | 'use strict'; 549 | 550 | // shim for using process in browser 551 | var process = module.exports = {}; 552 | 553 | // cached from whatever global is present so that test runners that stub it 554 | // don't break things. But we need to wrap it in a try catch in case it is 555 | // wrapped in strict mode code which doesn't define any globals. It's inside a 556 | // function because try/catches deoptimize in certain engines. 557 | 558 | var cachedSetTimeout; 559 | var cachedClearTimeout; 560 | 561 | function defaultSetTimout() { 562 | throw new Error('setTimeout has not been defined'); 563 | } 564 | function defaultClearTimeout() { 565 | throw new Error('clearTimeout has not been defined'); 566 | } 567 | (function () { 568 | try { 569 | if (typeof setTimeout === 'function') { 570 | cachedSetTimeout = setTimeout; 571 | } else { 572 | cachedSetTimeout = defaultSetTimout; 573 | } 574 | } catch (e) { 575 | cachedSetTimeout = defaultSetTimout; 576 | } 577 | try { 578 | if (typeof clearTimeout === 'function') { 579 | cachedClearTimeout = clearTimeout; 580 | } else { 581 | cachedClearTimeout = defaultClearTimeout; 582 | } 583 | } catch (e) { 584 | cachedClearTimeout = defaultClearTimeout; 585 | } 586 | })(); 587 | function runTimeout(fun) { 588 | if (cachedSetTimeout === setTimeout) { 589 | //normal enviroments in sane situations 590 | return setTimeout(fun, 0); 591 | } 592 | // if setTimeout wasn't available but was latter defined 593 | if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 594 | cachedSetTimeout = setTimeout; 595 | return setTimeout(fun, 0); 596 | } 597 | try { 598 | // when when somebody has screwed with setTimeout but no I.E. maddness 599 | return cachedSetTimeout(fun, 0); 600 | } catch (e) { 601 | try { 602 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 603 | return cachedSetTimeout.call(null, fun, 0); 604 | } catch (e) { 605 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error 606 | return cachedSetTimeout.call(this, fun, 0); 607 | } 608 | } 609 | } 610 | function runClearTimeout(marker) { 611 | if (cachedClearTimeout === clearTimeout) { 612 | //normal enviroments in sane situations 613 | return clearTimeout(marker); 614 | } 615 | // if clearTimeout wasn't available but was latter defined 616 | if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 617 | cachedClearTimeout = clearTimeout; 618 | return clearTimeout(marker); 619 | } 620 | try { 621 | // when when somebody has screwed with setTimeout but no I.E. maddness 622 | return cachedClearTimeout(marker); 623 | } catch (e) { 624 | try { 625 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 626 | return cachedClearTimeout.call(null, marker); 627 | } catch (e) { 628 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. 629 | // Some versions of I.E. have different rules for clearTimeout vs setTimeout 630 | return cachedClearTimeout.call(this, marker); 631 | } 632 | } 633 | } 634 | var queue = []; 635 | var draining = false; 636 | var currentQueue; 637 | var queueIndex = -1; 638 | 639 | function cleanUpNextTick() { 640 | if (!draining || !currentQueue) { 641 | return; 642 | } 643 | draining = false; 644 | if (currentQueue.length) { 645 | queue = currentQueue.concat(queue); 646 | } else { 647 | queueIndex = -1; 648 | } 649 | if (queue.length) { 650 | drainQueue(); 651 | } 652 | } 653 | 654 | function drainQueue() { 655 | if (draining) { 656 | return; 657 | } 658 | var timeout = runTimeout(cleanUpNextTick); 659 | draining = true; 660 | 661 | var len = queue.length; 662 | while (len) { 663 | currentQueue = queue; 664 | queue = []; 665 | while (++queueIndex < len) { 666 | if (currentQueue) { 667 | currentQueue[queueIndex].run(); 668 | } 669 | } 670 | queueIndex = -1; 671 | len = queue.length; 672 | } 673 | currentQueue = null; 674 | draining = false; 675 | runClearTimeout(timeout); 676 | } 677 | 678 | process.nextTick = function (fun) { 679 | var args = new Array(arguments.length - 1); 680 | if (arguments.length > 1) { 681 | for (var i = 1; i < arguments.length; i++) { 682 | args[i - 1] = arguments[i]; 683 | } 684 | } 685 | queue.push(new Item(fun, args)); 686 | if (queue.length === 1 && !draining) { 687 | runTimeout(drainQueue); 688 | } 689 | }; 690 | 691 | // v8 likes predictible objects 692 | function Item(fun, array) { 693 | this.fun = fun; 694 | this.array = array; 695 | } 696 | Item.prototype.run = function () { 697 | this.fun.apply(null, this.array); 698 | }; 699 | process.title = 'browser'; 700 | process.browser = true; 701 | process.env = {}; 702 | process.argv = []; 703 | process.version = ''; // empty string to avoid regexp issues 704 | process.versions = {}; 705 | 706 | function noop() {} 707 | 708 | process.on = noop; 709 | process.addListener = noop; 710 | process.once = noop; 711 | process.off = noop; 712 | process.removeListener = noop; 713 | process.removeAllListeners = noop; 714 | process.emit = noop; 715 | process.prependListener = noop; 716 | process.prependOnceListener = noop; 717 | 718 | process.listeners = function (name) { 719 | return []; 720 | }; 721 | 722 | process.binding = function (name) { 723 | throw new Error('process.binding is not supported'); 724 | }; 725 | 726 | process.cwd = function () { 727 | return '/'; 728 | }; 729 | process.chdir = function (dir) { 730 | throw new Error('process.chdir is not supported'); 731 | }; 732 | process.umask = function () { 733 | return 0; 734 | }; 735 | 736 | /***/ }), 737 | /* 7 */ 738 | /***/ (function(module, exports, __webpack_require__) { 739 | 740 | /* WEBPACK VAR INJECTION */(function(global) {'use strict'; 741 | 742 | var now = __webpack_require__(5), 743 | root = typeof window === 'undefined' ? global : window, 744 | vendors = ['moz', 'webkit'], 745 | suffix = 'AnimationFrame', 746 | raf = root['request' + suffix], 747 | caf = root['cancel' + suffix] || root['cancelRequest' + suffix]; 748 | 749 | for (var i = 0; !raf && i < vendors.length; i++) { 750 | raf = root[vendors[i] + 'Request' + suffix]; 751 | caf = root[vendors[i] + 'Cancel' + suffix] || root[vendors[i] + 'CancelRequest' + suffix]; 752 | } 753 | 754 | // Some versions of FF have rAF but not cAF 755 | if (!raf || !caf) { 756 | var last = 0, 757 | id = 0, 758 | queue = [], 759 | frameDuration = 1000 / 60; 760 | 761 | raf = function raf(callback) { 762 | if (queue.length === 0) { 763 | var _now = now(), 764 | next = Math.max(0, frameDuration - (_now - last)); 765 | last = next + _now; 766 | setTimeout(function () { 767 | var cp = queue.slice(0); 768 | // Clear queue here to prevent 769 | // callbacks from appending listeners 770 | // to the current frame's queue 771 | queue.length = 0; 772 | for (var i = 0; i < cp.length; i++) { 773 | if (!cp[i].cancelled) { 774 | try { 775 | cp[i].callback(last); 776 | } catch (e) { 777 | setTimeout(function () { 778 | throw e; 779 | }, 0); 780 | } 781 | } 782 | } 783 | }, Math.round(next)); 784 | } 785 | queue.push({ 786 | handle: ++id, 787 | callback: callback, 788 | cancelled: false 789 | }); 790 | return id; 791 | }; 792 | 793 | caf = function caf(handle) { 794 | for (var i = 0; i < queue.length; i++) { 795 | if (queue[i].handle === handle) { 796 | queue[i].cancelled = true; 797 | } 798 | } 799 | }; 800 | } 801 | 802 | module.exports = function (fn) { 803 | // Wrap in a new function to prevent 804 | // `cancel` potentially being assigned 805 | // to the native rAF function 806 | return raf.call(root, fn); 807 | }; 808 | module.exports.cancel = function () { 809 | caf.apply(root, arguments); 810 | }; 811 | module.exports.polyfill = function () { 812 | root.requestAnimationFrame = raf; 813 | root.cancelAnimationFrame = caf; 814 | }; 815 | /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) 816 | 817 | /***/ }), 818 | /* 8 */ 819 | /***/ (function(module, exports) { 820 | 821 | 'use strict'; 822 | 823 | // usage assumption: currentStyle values have already been rendered but it says 824 | // nothing of whether currentStyle is stale (see unreadPropStyle) 825 | module.exports = function shouldStopAnimation(currentStyle, style, currentVelocity) { 826 | for (var key in style) { 827 | if (!Object.prototype.hasOwnProperty.call(style, key)) { 828 | continue; 829 | } 830 | 831 | if (currentVelocity[key] !== 0) { 832 | return false; 833 | } 834 | 835 | var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val; 836 | // stepper will have already taken care of rounding precision errors, so 837 | // won't have such thing as 0.9999 !=== 1 838 | if (currentStyle[key] !== styleValue) { 839 | return false; 840 | } 841 | } 842 | 843 | return true; 844 | }; 845 | 846 | /***/ }), 847 | /* 9 */ 848 | /***/ (function(module, exports, __webpack_require__) { 849 | 850 | 'use strict'; 851 | 852 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 853 | 854 | var presets = __webpack_require__(10); 855 | 856 | var defaultConfig = _extends({}, presets.noWobble, { 857 | precision: 0.01 858 | }); 859 | 860 | module.exports = function spring(val, config) { 861 | return _extends({}, defaultConfig, config, { val: val }); 862 | }; 863 | 864 | /***/ }), 865 | /* 10 */ 866 | /***/ (function(module, exports) { 867 | 868 | "use strict"; 869 | 870 | module.exports = { 871 | noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided 872 | gentle: { stiffness: 120, damping: 14 }, 873 | wobbly: { stiffness: 180, damping: 12 }, 874 | stiff: { stiffness: 210, damping: 20 } 875 | }; 876 | 877 | /***/ }) 878 | /******/ ]) 879 | }); 880 | ; 881 | //# sourceMappingURL=really-smooth-scroll.map -------------------------------------------------------------------------------- /build/really-smooth-scroll.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 76fc08977fb34a29c587","webpack:///./src/really-smooth-scroll.js","webpack:///./src/SmoothScroll.js","webpack:///./src/mapToZero.js","webpack:///./src/stripStyle.js","webpack:///./src/stepper.js","webpack:///./~/performance-now/lib/performance-now.js","webpack:///./~/process/browser.js","webpack:///./~/raf/index.js","webpack:///./src/shouldStopAnimation.js","webpack:///./src/spring.js","webpack:///./src/presets.js"],"names":["SmoothScroll","require","spring","mousewheelSensitivity","keydownSensitivity","forceStop","getSpringVal","val","stayInRange","min","max","value","Math","difference","a","b","abs","moving","scrollY","smoothScroll","style","defaultStyle","onRest","move","deltaY","round","window","componentWillReceiveProps","document","querySelector","overflowY","offsetHeight","innerHeight","scrollTo","scrollX","onkeydown","e","target","body","key","preventDefault","mousewheelTimeout","maxDeltaY","onmousewheel","contains","clearTimeout","setTimeout","_scrollTo","bind","exports","shim","addEventListener","oldScrollTo","stopScrolling","x","y","config","options","mapToZero","stripStyle","stepper","defaultNow","defaultRaf","shouldStopAnimation","msPerFrame","module","props","clearUnreadPropStyle","destStyle","dirty","state","currentStyle","currentVelocity","lastIdealStyle","lastIdealVelocity","Object","prototype","hasOwnProperty","call","styleValue","setState","startAnimationIfNecessary","animationID","timestamp","propsStyle","wasAnimating","accumulatedTime","currentTime","timeDelta","prevTime","currentFrameCompletion","floor","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","i","stiffness","damping","precision","nextIdealX","nextIdealV","unreadPropStyle","defaultState","nextProps","newState","obj","ret","reusedTuple","secondPerFrame","v","destX","k","Fspring","Fdamper","newV","newX","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","now","process","hr","uptime","Date","getTime","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","nextTick","args","Array","arguments","push","Item","array","apply","title","browser","env","argv","version","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","root","global","vendors","suffix","raf","caf","last","id","frameDuration","callback","_now","next","cp","slice","cancelled","handle","fn","cancel","polyfill","requestAnimationFrame","cancelAnimationFrame","presets","defaultConfig","noWobble","gentle","wobbly","stiff"],"mappings":"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","file":"really-smooth-scroll.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ReallySmoothScroll\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReallySmoothScroll\"] = factory();\n\telse\n\t\troot[\"ReallySmoothScroll\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"build/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 76fc08977fb34a29c587","const SmoothScroll = require('./SmoothScroll');\nconst spring = require('./spring');\n\nlet mousewheelSensitivity = 6;\nlet keydownSensitivity = 6;\nlet forceStop = false;\n\nfunction getSpringVal(val) {\n if (typeof val === 'number') return val;\n return val.val;\n}\n\nfunction stayInRange(min, max, value) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction difference(a, b) {\n return Math.abs(a - b);\n}\n\nlet moving = false;\nlet scrollY = spring(0);\n\nconst smoothScroll = new SmoothScroll({\n style: { scrollY: 0 },\n defaultStyle: { scrollY: 0 },\n onRest: function onRest() {\n moving = false;\n },\n});\n\nfunction move(deltaY) {\n if (!moving) {\n if (difference(getSpringVal(scrollY), Math.round(window.scrollY)) > 4) {\n scrollY = window.scrollY;\n smoothScroll.componentWillReceiveProps({\n style: {scrollY},\n });\n }\n moving = true;\n }\n\n if (document.querySelector('html').style.overflowY === 'hidden') {\n return;\n }\n\n scrollY = stayInRange(\n 0,\n document.querySelector('html').offsetHeight - window.innerHeight,\n // getSpringVal(scrollY) + deltaY\n window.scrollY + deltaY * mousewheelSensitivity\n );\n window.scrollTo(window.scrollX, scrollY);\n}\n\nfunction onkeydown(e) {\n if (e.target === document.body && e.key === 'ArrowDown') {\n e.preventDefault();\n move(keydownSensitivity * 3);\n } else if (e.target === document.body && e.key === 'ArrowUp') {\n e.preventDefault();\n move(-keydownSensitivity * 3);\n }\n}\n\nlet mousewheelTimeout;\nlet maxDeltaY = 0;\nfunction onmousewheel(e) {\n const deltaY = stayInRange(-50, 50, e.deltaY);\n\n if (maxDeltaY === 0 || !forceStop) {\n maxDeltaY = deltaY;\n // console.log('Set maxDeltaY');\n }\n if (document.body.contains(e.target) || e.target === document.body) {\n e.preventDefault();\n if (forceStop) {\n // console.log(Math.abs(maxDeltaY), Math.abs(deltaY));\n if (Math.abs(maxDeltaY) < Math.abs(deltaY) || maxDeltaY * deltaY < 0) {\n // console.log('Should disable forceStop now 2');\n forceStop = false;\n } else {\n maxDeltaY = deltaY;\n }\n\n if (mousewheelTimeout) clearTimeout(mousewheelTimeout);\n mousewheelTimeout = setTimeout(function() {\n // console.log('Should disable forceStop now');\n forceStop = false;\n maxDeltaY = 0;\n }, 100);\n return;\n }\n // console.log('Wheeling', forceStop);\n move(deltaY);\n }\n}\n\n\nwindow._scrollTo = window.scrollTo.bind(window);\nexports.shim = function shim() {\n window.addEventListener('wheel', onmousewheel);\n window.addEventListener('keydown', onkeydown);\n\n if (!window.oldScrollTo) {\n window.oldScrollTo = (...args) => {\n if (moving) {\n window.stopScrolling();\n }\n\n smoothScroll.componentWillReceiveProps({\n style: { scrollY: args[1] },\n });\n };\n\n window.scrollTo = (x, y) => {\n window._scrollTo(x, window.scrollY);\n smoothScroll.componentWillReceiveProps({\n style: { scrollY: spring(y) },\n });\n };\n\n }\n window.stopScrolling = () => {\n forceStop = true;\n smoothScroll.componentWillReceiveProps({\n style: { scrollY: window.scrollY },\n });\n }\n}\n\nexports.config = function config(options) {\n if (options.mousewheelSensitivity) {\n mousewheelSensitivity = options.mousewheelSensitivity;\n }\n if (options.keydownSensitivity) {\n keydownSensitivity = options.keydownSensitivity;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/really-smooth-scroll.js","const mapToZero = require('./mapToZero');\nconst stripStyle = require('./stripStyle');\nconst stepper = require('./stepper');\nconst defaultNow = require('performance-now');\nconst defaultRaf = require('raf');\nconst shouldStopAnimation = require('./shouldStopAnimation');\n\nconst msPerFrame = 1000 / 60;\n\nmodule.exports = class SmoothScroll {\n constructor(props) {\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n this.unreadPropStyle = null;\n // after checking for unreadPropStyle != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n\n this.props = props;\n this.state = this.defaultState();\n\n this.prevTime = defaultNow();\n this.startAnimationIfNecessary();\n }\n\n\n defaultState() {\n const {defaultStyle, style} = this.props;\n const currentStyle = defaultStyle || stripStyle(style);\n const currentVelocity = mapToZero(currentStyle);\n return {\n currentStyle,\n currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity,\n };\n }\n\n clearUnreadPropStyle = (destStyle) => {\n let dirty = false;\n let {currentStyle, currentVelocity, lastIdealStyle, lastIdealVelocity} = this.state;\n\n for (let key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n const styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = {...currentStyle};\n currentVelocity = {...currentVelocity};\n lastIdealStyle = {...lastIdealStyle};\n lastIdealVelocity = {...lastIdealVelocity};\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n this.setState({currentStyle, currentVelocity, lastIdealStyle, lastIdealVelocity});\n }\n };\n\n startAnimationIfNecessary = () => {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n this.animationID = defaultRaf((timestamp) => {\n // check if we need to animate in the first place\n const propsStyle = this.props.style;\n if (shouldStopAnimation(\n this.state.currentStyle,\n propsStyle,\n this.state.currentVelocity,\n )) {\n if (this.wasAnimating && this.props.onRest) {\n this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n this.animationID = null;\n this.wasAnimating = false;\n this.accumulatedTime = 0;\n return;\n }\n\n this.wasAnimating = true;\n\n const currentTime = timestamp || defaultNow();\n const timeDelta = currentTime - this.prevTime;\n this.prevTime = currentTime;\n this.accumulatedTime = this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (this.accumulatedTime > msPerFrame * 10) {\n this.accumulatedTime = 0;\n }\n\n if (this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n this.animationID = null;\n this.startAnimationIfNecessary();\n return;\n }\n\n let currentFrameCompletion =\n (this.accumulatedTime - Math.floor(this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n const framesToCatchUp = Math.floor(this.accumulatedTime / msPerFrame);\n\n let newLastIdealStyle = {};\n let newLastIdealVelocity = {};\n let newCurrentStyle = {};\n let newCurrentVelocity = {};\n\n for (let key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n const styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n let newLastIdealStyleValue = this.state.lastIdealStyle[key];\n let newLastIdealVelocityValue = this.state.lastIdealVelocity[key];\n for (let i = 0; i < framesToCatchUp; i++) {\n [newLastIdealStyleValue, newLastIdealVelocityValue] = stepper(\n msPerFrame / 1000,\n newLastIdealStyleValue,\n newLastIdealVelocityValue,\n styleValue.val,\n styleValue.stiffness,\n styleValue.damping,\n styleValue.precision,\n );\n }\n const [nextIdealX, nextIdealV] = stepper(\n msPerFrame / 1000,\n newLastIdealStyleValue,\n newLastIdealVelocityValue,\n styleValue.val,\n styleValue.stiffness,\n styleValue.damping,\n styleValue.precision,\n );\n\n newCurrentStyle[key] =\n newLastIdealStyleValue +\n (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] =\n newLastIdealVelocityValue +\n (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n this.animationID = null;\n // the amount we're looped over above\n this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity,\n });\n\n this.unreadPropStyle = null;\n\n this.startAnimationIfNecessary();\n });\n };\n\n componentWillReceiveProps(nextProps) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = nextProps.style;\n if (this.animationID == null) {\n this.prevTime = defaultNow();\n this.startAnimationIfNecessary();\n }\n\n this.props = {\n ...this.props,\n ...nextProps,\n };\n }\n\n setState(newState) {\n this.state = {\n ...this.state,\n ...newState,\n };\n\n window._scrollTo(window.scrollX, this.state.currentStyle.scrollY);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/SmoothScroll.js","// currently used to initiate the velocity style object to 0\nmodule.exports = function mapToZero(obj){\n let ret = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mapToZero.js","/* @flow */\n// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\nmodule.exports = function stripStyle(style) {\n let ret = {};\n for (const key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n }\n return ret;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/stripStyle.js","/* @flow */\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n// array reference around.\nlet reusedTuple = [0, 0];\nmodule.exports = function stepper(\n secondPerFrame,\n x,\n v,\n destX,\n k,\n b,\n precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n const Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n const Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n const a = Fspring + Fdamper;\n\n const newV = v + a * secondPerFrame;\n const newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/stepper.js","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n\n\n\n// WEBPACK FOOTER //\n// ./~/performance-now/lib/performance-now.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n// WEBPACK FOOTER //\n// ./~/process/browser.js","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function() {\n root.requestAnimationFrame = raf\n root.cancelAnimationFrame = caf\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/raf/index.js","// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\nmodule.exports = function shouldStopAnimation(\n currentStyle,\n style,\n currentVelocity,\n) {\n for (let key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n const styleValue = typeof style[key] === 'number'\n ? style[key]\n : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shouldStopAnimation.js","const presets = require('./presets');\n\nconst defaultConfig = {\n ...presets.noWobble,\n precision: 0.01,\n};\n\nmodule.exports = function spring(val, config) {\n return {...defaultConfig, ...config, val};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/spring.js","module.exports = {\n noWobble: {stiffness: 170, damping: 26}, // the default, if nothing provided\n gentle: {stiffness: 120, damping: 14},\n wobbly: {stiffness: 180, damping: 12},\n stiff: {stiffness: 210, damping: 20},\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/presets.js"],"sourceRoot":""} -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

1

4 |

2

5 |

3

6 |

4

7 |

5

8 |

6

9 | 14 |

1

15 |

2

16 |

3

17 |

4

18 |

5

19 |

6

20 |

1

21 |

2

22 |

3

23 |

4

24 |

5

25 |

6

26 |

1

27 |

2

28 |

3

29 |

4

30 |

5

31 |

6

32 |

1

33 |

2

34 |

3

35 |

4

36 |

5

37 |

6

38 |

1

39 |

2

40 |

3

41 |

4

42 |

5

43 |

6

44 |

1

45 |

2

46 |

3

47 |

4

48 |

5

49 |

6

50 |

1

51 |

2

52 |

3

53 |

4

54 |

5

55 |

6

56 |

1

57 |

2

58 |

3

59 |

4

60 |

5

61 |

6

62 | 63 | 64 | 65 | 68 | 69 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "really-smooth-scroll", 3 | "main": "build/really-smooth-scroll.js", 4 | "homepage": "http://chuson1996.github.io/really-smooth-scroll", 5 | "version": "2.1.0", 6 | "license": "MIT", 7 | "dependencies": { 8 | "performance-now": "^2.1.0", 9 | "raf": "^3.3.2", 10 | "webpack": "1.*" 11 | }, 12 | "scripts": { 13 | "deploy": "gh-pages -d demo", 14 | "build": "webpack --config webpack.prod.config.js" 15 | }, 16 | "devDependencies": { 17 | "babel": "^6.23.0", 18 | "babel-core": "^6.24.1", 19 | "babel-loader": "^7.0.0", 20 | "babel-preset-es2015": "^6.24.1", 21 | "babel-preset-es2017": "^6.24.1", 22 | "babel-preset-stage-0": "^6.24.1", 23 | "gh-pages": "^1.0.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SmoothScroll.js: -------------------------------------------------------------------------------- 1 | const mapToZero = require('./mapToZero'); 2 | const stripStyle = require('./stripStyle'); 3 | const stepper = require('./stepper'); 4 | const defaultNow = require('performance-now'); 5 | const defaultRaf = require('raf'); 6 | const shouldStopAnimation = require('./shouldStopAnimation'); 7 | 8 | const msPerFrame = 1000 / 60; 9 | 10 | module.exports = class SmoothScroll { 11 | constructor(props) { 12 | this.wasAnimating = false; 13 | this.animationID = null; 14 | this.prevTime = 0; 15 | this.accumulatedTime = 0; 16 | // it's possible that currentStyle's value is stale: if props is immediately 17 | // changed from 0 to 400 to spring(0) again, the async currentStyle is still 18 | // at 0 (didn't have time to tick and interpolate even once). If we naively 19 | // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop). 20 | // In reality currentStyle should be 400 21 | this.unreadPropStyle = null; 22 | // after checking for unreadPropStyle != null, we manually go set the 23 | // non-interpolating values (those that are a number, without a spring 24 | // config) 25 | 26 | 27 | this.props = props; 28 | this.state = this.defaultState(); 29 | 30 | this.prevTime = defaultNow(); 31 | this.startAnimationIfNecessary(); 32 | } 33 | 34 | 35 | defaultState() { 36 | const {defaultStyle, style} = this.props; 37 | const currentStyle = defaultStyle || stripStyle(style); 38 | const currentVelocity = mapToZero(currentStyle); 39 | return { 40 | currentStyle, 41 | currentVelocity, 42 | lastIdealStyle: currentStyle, 43 | lastIdealVelocity: currentVelocity, 44 | }; 45 | } 46 | 47 | clearUnreadPropStyle = (destStyle) => { 48 | let dirty = false; 49 | let {currentStyle, currentVelocity, lastIdealStyle, lastIdealVelocity} = this.state; 50 | 51 | for (let key in destStyle) { 52 | if (!Object.prototype.hasOwnProperty.call(destStyle, key)) { 53 | continue; 54 | } 55 | 56 | const styleValue = destStyle[key]; 57 | if (typeof styleValue === 'number') { 58 | if (!dirty) { 59 | dirty = true; 60 | currentStyle = {...currentStyle}; 61 | currentVelocity = {...currentVelocity}; 62 | lastIdealStyle = {...lastIdealStyle}; 63 | lastIdealVelocity = {...lastIdealVelocity}; 64 | } 65 | 66 | currentStyle[key] = styleValue; 67 | currentVelocity[key] = 0; 68 | lastIdealStyle[key] = styleValue; 69 | lastIdealVelocity[key] = 0; 70 | } 71 | } 72 | 73 | if (dirty) { 74 | this.setState({currentStyle, currentVelocity, lastIdealStyle, lastIdealVelocity}); 75 | } 76 | }; 77 | 78 | startAnimationIfNecessary = () => { 79 | // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and 80 | // call cb? No, otherwise accidental parent rerender causes cb trigger 81 | this.animationID = defaultRaf((timestamp) => { 82 | // check if we need to animate in the first place 83 | const propsStyle = this.props.style; 84 | if (shouldStopAnimation( 85 | this.state.currentStyle, 86 | propsStyle, 87 | this.state.currentVelocity, 88 | )) { 89 | if (this.wasAnimating && this.props.onRest) { 90 | this.props.onRest(); 91 | } 92 | 93 | // no need to cancel animationID here; shouldn't have any in flight 94 | this.animationID = null; 95 | this.wasAnimating = false; 96 | this.accumulatedTime = 0; 97 | return; 98 | } 99 | 100 | this.wasAnimating = true; 101 | 102 | const currentTime = timestamp || defaultNow(); 103 | const timeDelta = currentTime - this.prevTime; 104 | this.prevTime = currentTime; 105 | this.accumulatedTime = this.accumulatedTime + timeDelta; 106 | // more than 10 frames? prolly switched browser tab. Restart 107 | if (this.accumulatedTime > msPerFrame * 10) { 108 | this.accumulatedTime = 0; 109 | } 110 | 111 | if (this.accumulatedTime === 0) { 112 | // no need to cancel animationID here; shouldn't have any in flight 113 | this.animationID = null; 114 | this.startAnimationIfNecessary(); 115 | return; 116 | } 117 | 118 | let currentFrameCompletion = 119 | (this.accumulatedTime - Math.floor(this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame; 120 | const framesToCatchUp = Math.floor(this.accumulatedTime / msPerFrame); 121 | 122 | let newLastIdealStyle = {}; 123 | let newLastIdealVelocity = {}; 124 | let newCurrentStyle = {}; 125 | let newCurrentVelocity = {}; 126 | 127 | for (let key in propsStyle) { 128 | if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) { 129 | continue; 130 | } 131 | 132 | const styleValue = propsStyle[key]; 133 | if (typeof styleValue === 'number') { 134 | newCurrentStyle[key] = styleValue; 135 | newCurrentVelocity[key] = 0; 136 | newLastIdealStyle[key] = styleValue; 137 | newLastIdealVelocity[key] = 0; 138 | } else { 139 | let newLastIdealStyleValue = this.state.lastIdealStyle[key]; 140 | let newLastIdealVelocityValue = this.state.lastIdealVelocity[key]; 141 | for (let i = 0; i < framesToCatchUp; i++) { 142 | [newLastIdealStyleValue, newLastIdealVelocityValue] = stepper( 143 | msPerFrame / 1000, 144 | newLastIdealStyleValue, 145 | newLastIdealVelocityValue, 146 | styleValue.val, 147 | styleValue.stiffness, 148 | styleValue.damping, 149 | styleValue.precision, 150 | ); 151 | } 152 | const [nextIdealX, nextIdealV] = stepper( 153 | msPerFrame / 1000, 154 | newLastIdealStyleValue, 155 | newLastIdealVelocityValue, 156 | styleValue.val, 157 | styleValue.stiffness, 158 | styleValue.damping, 159 | styleValue.precision, 160 | ); 161 | 162 | newCurrentStyle[key] = 163 | newLastIdealStyleValue + 164 | (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion; 165 | newCurrentVelocity[key] = 166 | newLastIdealVelocityValue + 167 | (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion; 168 | newLastIdealStyle[key] = newLastIdealStyleValue; 169 | newLastIdealVelocity[key] = newLastIdealVelocityValue; 170 | } 171 | } 172 | 173 | this.animationID = null; 174 | // the amount we're looped over above 175 | this.accumulatedTime -= framesToCatchUp * msPerFrame; 176 | 177 | this.setState({ 178 | currentStyle: newCurrentStyle, 179 | currentVelocity: newCurrentVelocity, 180 | lastIdealStyle: newLastIdealStyle, 181 | lastIdealVelocity: newLastIdealVelocity, 182 | }); 183 | 184 | this.unreadPropStyle = null; 185 | 186 | this.startAnimationIfNecessary(); 187 | }); 188 | }; 189 | 190 | componentWillReceiveProps(nextProps) { 191 | if (this.unreadPropStyle != null) { 192 | // previous props haven't had the chance to be set yet; set them here 193 | this.clearUnreadPropStyle(this.unreadPropStyle); 194 | } 195 | 196 | this.unreadPropStyle = nextProps.style; 197 | if (this.animationID == null) { 198 | this.prevTime = defaultNow(); 199 | this.startAnimationIfNecessary(); 200 | } 201 | 202 | this.props = { 203 | ...this.props, 204 | ...nextProps, 205 | }; 206 | } 207 | 208 | setState(newState) { 209 | this.state = { 210 | ...this.state, 211 | ...newState, 212 | }; 213 | 214 | window._scrollTo(window.scrollX, this.state.currentStyle.scrollY); 215 | } 216 | } 217 | -------------------------------------------------------------------------------- /src/mapToZero.js: -------------------------------------------------------------------------------- 1 | // currently used to initiate the velocity style object to 0 2 | module.exports = function mapToZero(obj){ 3 | let ret = {}; 4 | for (const key in obj) { 5 | if (Object.prototype.hasOwnProperty.call(obj, key)) { 6 | ret[key] = 0; 7 | } 8 | } 9 | return ret; 10 | } 11 | -------------------------------------------------------------------------------- /src/presets.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | noWobble: {stiffness: 170, damping: 26}, // the default, if nothing provided 3 | gentle: {stiffness: 120, damping: 14}, 4 | wobbly: {stiffness: 180, damping: 12}, 5 | stiff: {stiffness: 210, damping: 20}, 6 | }; 7 | -------------------------------------------------------------------------------- /src/really-smooth-scroll.js: -------------------------------------------------------------------------------- 1 | const SmoothScroll = require('./SmoothScroll'); 2 | const spring = require('./spring'); 3 | 4 | let mousewheelSensitivity = 6; 5 | let keydownSensitivity = 6; 6 | let forceStop = false; 7 | 8 | function getSpringVal(val) { 9 | if (typeof val === 'number') return val; 10 | return val.val; 11 | } 12 | 13 | function stayInRange(min, max, value) { 14 | return Math.min(max, Math.max(min, value)); 15 | } 16 | 17 | function difference(a, b) { 18 | return Math.abs(a - b); 19 | } 20 | 21 | let moving = false; 22 | let scrollY = spring(0); 23 | 24 | const smoothScroll = new SmoothScroll({ 25 | style: { scrollY: 0 }, 26 | defaultStyle: { scrollY: 0 }, 27 | onRest: function onRest() { 28 | moving = false; 29 | }, 30 | }); 31 | 32 | function move(deltaY) { 33 | if (!moving) { 34 | if (difference(getSpringVal(scrollY), Math.round(window.scrollY)) > 4) { 35 | scrollY = window.scrollY; 36 | smoothScroll.componentWillReceiveProps({ 37 | style: {scrollY}, 38 | }); 39 | } 40 | moving = true; 41 | } 42 | 43 | if (document.querySelector('html').style.overflowY === 'hidden') { 44 | return; 45 | } 46 | 47 | scrollY = stayInRange( 48 | 0, 49 | document.querySelector('html').offsetHeight - window.innerHeight, 50 | // getSpringVal(scrollY) + deltaY 51 | window.scrollY + deltaY * mousewheelSensitivity 52 | ); 53 | window.scrollTo(window.scrollX, scrollY); 54 | } 55 | 56 | function onkeydown(e) { 57 | if (e.target === document.body && e.key === 'ArrowDown') { 58 | e.preventDefault(); 59 | move(keydownSensitivity * 3); 60 | } else if (e.target === document.body && e.key === 'ArrowUp') { 61 | e.preventDefault(); 62 | move(-keydownSensitivity * 3); 63 | } 64 | } 65 | 66 | let mousewheelTimeout; 67 | let maxDeltaY = 0; 68 | function onmousewheel(e) { 69 | const deltaY = stayInRange(-50, 50, e.deltaY); 70 | 71 | if (maxDeltaY === 0 || !forceStop) { 72 | maxDeltaY = deltaY; 73 | // console.log('Set maxDeltaY'); 74 | } 75 | if (document.body.contains(e.target) || e.target === document.body) { 76 | e.preventDefault(); 77 | if (forceStop) { 78 | // console.log(Math.abs(maxDeltaY), Math.abs(deltaY)); 79 | if (Math.abs(maxDeltaY) < Math.abs(deltaY) || maxDeltaY * deltaY < 0) { 80 | // console.log('Should disable forceStop now 2'); 81 | forceStop = false; 82 | } else { 83 | maxDeltaY = deltaY; 84 | } 85 | 86 | if (mousewheelTimeout) clearTimeout(mousewheelTimeout); 87 | mousewheelTimeout = setTimeout(function() { 88 | // console.log('Should disable forceStop now'); 89 | forceStop = false; 90 | maxDeltaY = 0; 91 | }, 100); 92 | return; 93 | } 94 | // console.log('Wheeling', forceStop); 95 | move(deltaY); 96 | } 97 | } 98 | 99 | 100 | window._scrollTo = window.scrollTo.bind(window); 101 | exports.shim = function shim() { 102 | window.addEventListener('wheel', onmousewheel); 103 | window.addEventListener('keydown', onkeydown); 104 | 105 | if (!window.oldScrollTo) { 106 | window.oldScrollTo = (...args) => { 107 | if (moving) { 108 | window.stopScrolling(); 109 | } 110 | 111 | smoothScroll.componentWillReceiveProps({ 112 | style: { scrollY: args[1] }, 113 | }); 114 | }; 115 | 116 | window.scrollTo = (x, y) => { 117 | window._scrollTo(x, window.scrollY); 118 | smoothScroll.componentWillReceiveProps({ 119 | style: { scrollY: spring(y) }, 120 | }); 121 | }; 122 | 123 | } 124 | window.stopScrolling = () => { 125 | forceStop = true; 126 | smoothScroll.componentWillReceiveProps({ 127 | style: { scrollY: window.scrollY }, 128 | }); 129 | } 130 | } 131 | 132 | exports.config = function config(options) { 133 | if (options.mousewheelSensitivity) { 134 | mousewheelSensitivity = options.mousewheelSensitivity; 135 | } 136 | if (options.keydownSensitivity) { 137 | keydownSensitivity = options.keydownSensitivity; 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /src/shouldStopAnimation.js: -------------------------------------------------------------------------------- 1 | // usage assumption: currentStyle values have already been rendered but it says 2 | // nothing of whether currentStyle is stale (see unreadPropStyle) 3 | module.exports = function shouldStopAnimation( 4 | currentStyle, 5 | style, 6 | currentVelocity, 7 | ) { 8 | for (let key in style) { 9 | if (!Object.prototype.hasOwnProperty.call(style, key)) { 10 | continue; 11 | } 12 | 13 | if (currentVelocity[key] !== 0) { 14 | return false; 15 | } 16 | 17 | const styleValue = typeof style[key] === 'number' 18 | ? style[key] 19 | : style[key].val; 20 | // stepper will have already taken care of rounding precision errors, so 21 | // won't have such thing as 0.9999 !=== 1 22 | if (currentStyle[key] !== styleValue) { 23 | return false; 24 | } 25 | } 26 | 27 | return true; 28 | } 29 | -------------------------------------------------------------------------------- /src/spring.js: -------------------------------------------------------------------------------- 1 | const presets = require('./presets'); 2 | 3 | const defaultConfig = { 4 | ...presets.noWobble, 5 | precision: 0.01, 6 | }; 7 | 8 | module.exports = function spring(val, config) { 9 | return {...defaultConfig, ...config, val}; 10 | } 11 | -------------------------------------------------------------------------------- /src/stepper.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | // stepper is used a lot. Saves allocation to return the same array wrapper. 4 | // This is fine and danger-free against mutations because the callsite 5 | // immediately destructures it and gets the numbers inside without passing the 6 | // array reference around. 7 | let reusedTuple = [0, 0]; 8 | module.exports = function stepper( 9 | secondPerFrame, 10 | x, 11 | v, 12 | destX, 13 | k, 14 | b, 15 | precision) { 16 | // Spring stiffness, in kg / s^2 17 | 18 | // for animations, destX is really spring length (spring at rest). initial 19 | // position is considered as the stretched/compressed position of a spring 20 | const Fspring = -k * (x - destX); 21 | 22 | // Damping, in kg / s 23 | const Fdamper = -b * v; 24 | 25 | // usually we put mass here, but for animation purposes, specifying mass is a 26 | // bit redundant. you could simply adjust k and b accordingly 27 | // let a = (Fspring + Fdamper) / mass; 28 | const a = Fspring + Fdamper; 29 | 30 | const newV = v + a * secondPerFrame; 31 | const newX = x + newV * secondPerFrame; 32 | 33 | if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) { 34 | reusedTuple[0] = destX; 35 | reusedTuple[1] = 0; 36 | return reusedTuple; 37 | } 38 | 39 | reusedTuple[0] = newX; 40 | reusedTuple[1] = newV; 41 | return reusedTuple; 42 | } 43 | -------------------------------------------------------------------------------- /src/stripStyle.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | // turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by 3 | // `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2} 4 | 5 | module.exports = function stripStyle(style) { 6 | let ret = {}; 7 | for (const key in style) { 8 | if (!Object.prototype.hasOwnProperty.call(style, key)) { 9 | continue; 10 | } 11 | ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val; 12 | } 13 | return ret; 14 | } 15 | -------------------------------------------------------------------------------- /webpack.prod.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | process.env.NODE_ENV = process.env.NODE_ENV || 'production'; 4 | 5 | var webpack = require('webpack'); 6 | var path = require('path'); 7 | 8 | // currently, this is for bower 9 | var config = { 10 | devtool: 'sourcemap', 11 | entry: { 12 | index: './src/really-smooth-scroll.js' 13 | }, 14 | output: { 15 | path: path.join(__dirname, 'build'), 16 | publicPath: 'build/', 17 | filename: 'really-smooth-scroll.js', 18 | sourceMapFilename: 'really-smooth-scroll.map', 19 | library: 'ReallySmoothScroll', 20 | libraryTarget: 'umd', 21 | umdNamedDefine: true 22 | }, 23 | module: { 24 | loaders: [{ 25 | test: /\.(js|jsx)/, 26 | loader: 'babel' 27 | }] 28 | }, 29 | plugins: [], 30 | resolve: { 31 | extensions: ['', '.js'] 32 | }, 33 | }; 34 | 35 | module.exports = config; 36 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | abbrev@1: 4 | version "1.1.0" 5 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" 6 | 7 | acorn@^3.0.0: 8 | version "3.3.0" 9 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 10 | 11 | ajv@^4.9.1: 12 | version "4.11.8" 13 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 14 | dependencies: 15 | co "^4.6.0" 16 | json-stable-stringify "^1.0.1" 17 | 18 | align-text@^0.1.1, align-text@^0.1.3: 19 | version "0.1.4" 20 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 21 | dependencies: 22 | kind-of "^3.0.2" 23 | longest "^1.0.1" 24 | repeat-string "^1.5.2" 25 | 26 | amdefine@>=0.0.4: 27 | version "1.0.1" 28 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 29 | 30 | ansi-regex@^2.0.0: 31 | version "2.1.1" 32 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 33 | 34 | ansi-styles@^2.2.1: 35 | version "2.2.1" 36 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 37 | 38 | anymatch@^1.3.0: 39 | version "1.3.0" 40 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 41 | dependencies: 42 | arrify "^1.0.0" 43 | micromatch "^2.1.5" 44 | 45 | aproba@^1.0.3: 46 | version "1.1.1" 47 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" 48 | 49 | are-we-there-yet@~1.1.2: 50 | version "1.1.4" 51 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 52 | dependencies: 53 | delegates "^1.0.0" 54 | readable-stream "^2.0.6" 55 | 56 | arr-diff@^2.0.0: 57 | version "2.0.0" 58 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 59 | dependencies: 60 | arr-flatten "^1.0.1" 61 | 62 | arr-flatten@^1.0.1: 63 | version "1.0.3" 64 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" 65 | 66 | array-union@^1.0.1: 67 | version "1.0.2" 68 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 69 | dependencies: 70 | array-uniq "^1.0.1" 71 | 72 | array-uniq@^1.0.1: 73 | version "1.0.3" 74 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 75 | 76 | array-unique@^0.2.1: 77 | version "0.2.1" 78 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 79 | 80 | arrify@^1.0.0: 81 | version "1.0.1" 82 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 83 | 84 | asn1@~0.2.3: 85 | version "0.2.3" 86 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 87 | 88 | assert-plus@^0.2.0: 89 | version "0.2.0" 90 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 91 | 92 | assert-plus@^1.0.0, assert-plus@1.0.0: 93 | version "1.0.0" 94 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 95 | 96 | assert@^1.1.1: 97 | version "1.4.1" 98 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 99 | dependencies: 100 | util "0.10.3" 101 | 102 | async-each@^1.0.0: 103 | version "1.0.1" 104 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 105 | 106 | async@^0.9.0: 107 | version "0.9.2" 108 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" 109 | 110 | async@^1.3.0: 111 | version "1.5.2" 112 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 113 | 114 | async@~0.2.6: 115 | version "0.2.10" 116 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" 117 | 118 | async@2.1.4: 119 | version "2.1.4" 120 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" 121 | dependencies: 122 | lodash "^4.14.0" 123 | 124 | asynckit@^0.4.0: 125 | version "0.4.0" 126 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 127 | 128 | aws-sign2@~0.6.0: 129 | version "0.6.0" 130 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 131 | 132 | aws4@^1.2.1: 133 | version "1.6.0" 134 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 135 | 136 | babel: 137 | version "6.23.0" 138 | resolved "https://registry.yarnpkg.com/babel/-/babel-6.23.0.tgz#d0d1e7d803e974765beea3232d4e153c0efb90f4" 139 | 140 | babel-code-frame@^6.22.0: 141 | version "6.22.0" 142 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 143 | dependencies: 144 | chalk "^1.1.0" 145 | esutils "^2.0.2" 146 | js-tokens "^3.0.0" 147 | 148 | babel-core, babel-core@^6.24.1: 149 | version "6.24.1" 150 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" 151 | dependencies: 152 | babel-code-frame "^6.22.0" 153 | babel-generator "^6.24.1" 154 | babel-helpers "^6.24.1" 155 | babel-messages "^6.23.0" 156 | babel-register "^6.24.1" 157 | babel-runtime "^6.22.0" 158 | babel-template "^6.24.1" 159 | babel-traverse "^6.24.1" 160 | babel-types "^6.24.1" 161 | babylon "^6.11.0" 162 | convert-source-map "^1.1.0" 163 | debug "^2.1.1" 164 | json5 "^0.5.0" 165 | lodash "^4.2.0" 166 | minimatch "^3.0.2" 167 | path-is-absolute "^1.0.0" 168 | private "^0.1.6" 169 | slash "^1.0.0" 170 | source-map "^0.5.0" 171 | 172 | babel-generator@^6.24.1: 173 | version "6.24.1" 174 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" 175 | dependencies: 176 | babel-messages "^6.23.0" 177 | babel-runtime "^6.22.0" 178 | babel-types "^6.24.1" 179 | detect-indent "^4.0.0" 180 | jsesc "^1.3.0" 181 | lodash "^4.2.0" 182 | source-map "^0.5.0" 183 | trim-right "^1.0.1" 184 | 185 | babel-helper-bindify-decorators@^6.24.1: 186 | version "6.24.1" 187 | resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" 188 | dependencies: 189 | babel-runtime "^6.22.0" 190 | babel-traverse "^6.24.1" 191 | babel-types "^6.24.1" 192 | 193 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 194 | version "6.24.1" 195 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 196 | dependencies: 197 | babel-helper-explode-assignable-expression "^6.24.1" 198 | babel-runtime "^6.22.0" 199 | babel-types "^6.24.1" 200 | 201 | babel-helper-call-delegate@^6.24.1: 202 | version "6.24.1" 203 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 204 | dependencies: 205 | babel-helper-hoist-variables "^6.24.1" 206 | babel-runtime "^6.22.0" 207 | babel-traverse "^6.24.1" 208 | babel-types "^6.24.1" 209 | 210 | babel-helper-define-map@^6.24.1: 211 | version "6.24.1" 212 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" 213 | dependencies: 214 | babel-helper-function-name "^6.24.1" 215 | babel-runtime "^6.22.0" 216 | babel-types "^6.24.1" 217 | lodash "^4.2.0" 218 | 219 | babel-helper-explode-assignable-expression@^6.24.1: 220 | version "6.24.1" 221 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 222 | dependencies: 223 | babel-runtime "^6.22.0" 224 | babel-traverse "^6.24.1" 225 | babel-types "^6.24.1" 226 | 227 | babel-helper-explode-class@^6.24.1: 228 | version "6.24.1" 229 | resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" 230 | dependencies: 231 | babel-helper-bindify-decorators "^6.24.1" 232 | babel-runtime "^6.22.0" 233 | babel-traverse "^6.24.1" 234 | babel-types "^6.24.1" 235 | 236 | babel-helper-function-name@^6.24.1: 237 | version "6.24.1" 238 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 239 | dependencies: 240 | babel-helper-get-function-arity "^6.24.1" 241 | babel-runtime "^6.22.0" 242 | babel-template "^6.24.1" 243 | babel-traverse "^6.24.1" 244 | babel-types "^6.24.1" 245 | 246 | babel-helper-get-function-arity@^6.24.1: 247 | version "6.24.1" 248 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 249 | dependencies: 250 | babel-runtime "^6.22.0" 251 | babel-types "^6.24.1" 252 | 253 | babel-helper-hoist-variables@^6.24.1: 254 | version "6.24.1" 255 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 256 | dependencies: 257 | babel-runtime "^6.22.0" 258 | babel-types "^6.24.1" 259 | 260 | babel-helper-optimise-call-expression@^6.24.1: 261 | version "6.24.1" 262 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 263 | dependencies: 264 | babel-runtime "^6.22.0" 265 | babel-types "^6.24.1" 266 | 267 | babel-helper-regex@^6.24.1: 268 | version "6.24.1" 269 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" 270 | dependencies: 271 | babel-runtime "^6.22.0" 272 | babel-types "^6.24.1" 273 | lodash "^4.2.0" 274 | 275 | babel-helper-remap-async-to-generator@^6.24.1: 276 | version "6.24.1" 277 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 278 | dependencies: 279 | babel-helper-function-name "^6.24.1" 280 | babel-runtime "^6.22.0" 281 | babel-template "^6.24.1" 282 | babel-traverse "^6.24.1" 283 | babel-types "^6.24.1" 284 | 285 | babel-helper-replace-supers@^6.24.1: 286 | version "6.24.1" 287 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 288 | dependencies: 289 | babel-helper-optimise-call-expression "^6.24.1" 290 | babel-messages "^6.23.0" 291 | babel-runtime "^6.22.0" 292 | babel-template "^6.24.1" 293 | babel-traverse "^6.24.1" 294 | babel-types "^6.24.1" 295 | 296 | babel-helpers@^6.24.1: 297 | version "6.24.1" 298 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 299 | dependencies: 300 | babel-runtime "^6.22.0" 301 | babel-template "^6.24.1" 302 | 303 | babel-loader: 304 | version "7.0.0" 305 | resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.0.0.tgz#2e43a66bee1fff4470533d0402c8a4532fafbaf7" 306 | dependencies: 307 | find-cache-dir "^0.1.1" 308 | loader-utils "^1.0.2" 309 | mkdirp "^0.5.1" 310 | 311 | babel-messages@^6.23.0: 312 | version "6.23.0" 313 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 314 | dependencies: 315 | babel-runtime "^6.22.0" 316 | 317 | babel-plugin-check-es2015-constants@^6.22.0: 318 | version "6.22.0" 319 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 320 | dependencies: 321 | babel-runtime "^6.22.0" 322 | 323 | babel-plugin-syntax-async-functions@^6.8.0: 324 | version "6.13.0" 325 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 326 | 327 | babel-plugin-syntax-async-generators@^6.5.0: 328 | version "6.13.0" 329 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" 330 | 331 | babel-plugin-syntax-class-constructor-call@^6.18.0: 332 | version "6.18.0" 333 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" 334 | 335 | babel-plugin-syntax-class-properties@^6.8.0: 336 | version "6.13.0" 337 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" 338 | 339 | babel-plugin-syntax-decorators@^6.13.0: 340 | version "6.13.0" 341 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" 342 | 343 | babel-plugin-syntax-do-expressions@^6.8.0: 344 | version "6.13.0" 345 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" 346 | 347 | babel-plugin-syntax-dynamic-import@^6.18.0: 348 | version "6.18.0" 349 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" 350 | 351 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 352 | version "6.13.0" 353 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 354 | 355 | babel-plugin-syntax-export-extensions@^6.8.0: 356 | version "6.13.0" 357 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" 358 | 359 | babel-plugin-syntax-function-bind@^6.8.0: 360 | version "6.13.0" 361 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" 362 | 363 | babel-plugin-syntax-object-rest-spread@^6.8.0: 364 | version "6.13.0" 365 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 366 | 367 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 368 | version "6.22.0" 369 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 370 | 371 | babel-plugin-transform-async-generator-functions@^6.24.1: 372 | version "6.24.1" 373 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" 374 | dependencies: 375 | babel-helper-remap-async-to-generator "^6.24.1" 376 | babel-plugin-syntax-async-generators "^6.5.0" 377 | babel-runtime "^6.22.0" 378 | 379 | babel-plugin-transform-async-to-generator@^6.24.1: 380 | version "6.24.1" 381 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 382 | dependencies: 383 | babel-helper-remap-async-to-generator "^6.24.1" 384 | babel-plugin-syntax-async-functions "^6.8.0" 385 | babel-runtime "^6.22.0" 386 | 387 | babel-plugin-transform-class-constructor-call@^6.24.1: 388 | version "6.24.1" 389 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" 390 | dependencies: 391 | babel-plugin-syntax-class-constructor-call "^6.18.0" 392 | babel-runtime "^6.22.0" 393 | babel-template "^6.24.1" 394 | 395 | babel-plugin-transform-class-properties@^6.24.1: 396 | version "6.24.1" 397 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" 398 | dependencies: 399 | babel-helper-function-name "^6.24.1" 400 | babel-plugin-syntax-class-properties "^6.8.0" 401 | babel-runtime "^6.22.0" 402 | babel-template "^6.24.1" 403 | 404 | babel-plugin-transform-decorators@^6.24.1: 405 | version "6.24.1" 406 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" 407 | dependencies: 408 | babel-helper-explode-class "^6.24.1" 409 | babel-plugin-syntax-decorators "^6.13.0" 410 | babel-runtime "^6.22.0" 411 | babel-template "^6.24.1" 412 | babel-types "^6.24.1" 413 | 414 | babel-plugin-transform-do-expressions@^6.22.0: 415 | version "6.22.0" 416 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" 417 | dependencies: 418 | babel-plugin-syntax-do-expressions "^6.8.0" 419 | babel-runtime "^6.22.0" 420 | 421 | babel-plugin-transform-es2015-arrow-functions@^6.22.0: 422 | version "6.22.0" 423 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 424 | dependencies: 425 | babel-runtime "^6.22.0" 426 | 427 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 428 | version "6.22.0" 429 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 430 | dependencies: 431 | babel-runtime "^6.22.0" 432 | 433 | babel-plugin-transform-es2015-block-scoping@^6.24.1: 434 | version "6.24.1" 435 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" 436 | dependencies: 437 | babel-runtime "^6.22.0" 438 | babel-template "^6.24.1" 439 | babel-traverse "^6.24.1" 440 | babel-types "^6.24.1" 441 | lodash "^4.2.0" 442 | 443 | babel-plugin-transform-es2015-classes@^6.24.1: 444 | version "6.24.1" 445 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 446 | dependencies: 447 | babel-helper-define-map "^6.24.1" 448 | babel-helper-function-name "^6.24.1" 449 | babel-helper-optimise-call-expression "^6.24.1" 450 | babel-helper-replace-supers "^6.24.1" 451 | babel-messages "^6.23.0" 452 | babel-runtime "^6.22.0" 453 | babel-template "^6.24.1" 454 | babel-traverse "^6.24.1" 455 | babel-types "^6.24.1" 456 | 457 | babel-plugin-transform-es2015-computed-properties@^6.24.1: 458 | version "6.24.1" 459 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 460 | dependencies: 461 | babel-runtime "^6.22.0" 462 | babel-template "^6.24.1" 463 | 464 | babel-plugin-transform-es2015-destructuring@^6.22.0: 465 | version "6.23.0" 466 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 467 | dependencies: 468 | babel-runtime "^6.22.0" 469 | 470 | babel-plugin-transform-es2015-duplicate-keys@^6.24.1: 471 | version "6.24.1" 472 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 473 | dependencies: 474 | babel-runtime "^6.22.0" 475 | babel-types "^6.24.1" 476 | 477 | babel-plugin-transform-es2015-for-of@^6.22.0: 478 | version "6.23.0" 479 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 480 | dependencies: 481 | babel-runtime "^6.22.0" 482 | 483 | babel-plugin-transform-es2015-function-name@^6.24.1: 484 | version "6.24.1" 485 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 486 | dependencies: 487 | babel-helper-function-name "^6.24.1" 488 | babel-runtime "^6.22.0" 489 | babel-types "^6.24.1" 490 | 491 | babel-plugin-transform-es2015-literals@^6.22.0: 492 | version "6.22.0" 493 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 494 | dependencies: 495 | babel-runtime "^6.22.0" 496 | 497 | babel-plugin-transform-es2015-modules-amd@^6.24.1: 498 | version "6.24.1" 499 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 500 | dependencies: 501 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 502 | babel-runtime "^6.22.0" 503 | babel-template "^6.24.1" 504 | 505 | babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 506 | version "6.24.1" 507 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" 508 | dependencies: 509 | babel-plugin-transform-strict-mode "^6.24.1" 510 | babel-runtime "^6.22.0" 511 | babel-template "^6.24.1" 512 | babel-types "^6.24.1" 513 | 514 | babel-plugin-transform-es2015-modules-systemjs@^6.24.1: 515 | version "6.24.1" 516 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 517 | dependencies: 518 | babel-helper-hoist-variables "^6.24.1" 519 | babel-runtime "^6.22.0" 520 | babel-template "^6.24.1" 521 | 522 | babel-plugin-transform-es2015-modules-umd@^6.24.1: 523 | version "6.24.1" 524 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 525 | dependencies: 526 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 527 | babel-runtime "^6.22.0" 528 | babel-template "^6.24.1" 529 | 530 | babel-plugin-transform-es2015-object-super@^6.24.1: 531 | version "6.24.1" 532 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 533 | dependencies: 534 | babel-helper-replace-supers "^6.24.1" 535 | babel-runtime "^6.22.0" 536 | 537 | babel-plugin-transform-es2015-parameters@^6.24.1: 538 | version "6.24.1" 539 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 540 | dependencies: 541 | babel-helper-call-delegate "^6.24.1" 542 | babel-helper-get-function-arity "^6.24.1" 543 | babel-runtime "^6.22.0" 544 | babel-template "^6.24.1" 545 | babel-traverse "^6.24.1" 546 | babel-types "^6.24.1" 547 | 548 | babel-plugin-transform-es2015-shorthand-properties@^6.24.1: 549 | version "6.24.1" 550 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 551 | dependencies: 552 | babel-runtime "^6.22.0" 553 | babel-types "^6.24.1" 554 | 555 | babel-plugin-transform-es2015-spread@^6.22.0: 556 | version "6.22.0" 557 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 558 | dependencies: 559 | babel-runtime "^6.22.0" 560 | 561 | babel-plugin-transform-es2015-sticky-regex@^6.24.1: 562 | version "6.24.1" 563 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 564 | dependencies: 565 | babel-helper-regex "^6.24.1" 566 | babel-runtime "^6.22.0" 567 | babel-types "^6.24.1" 568 | 569 | babel-plugin-transform-es2015-template-literals@^6.22.0: 570 | version "6.22.0" 571 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 572 | dependencies: 573 | babel-runtime "^6.22.0" 574 | 575 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0: 576 | version "6.23.0" 577 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 578 | dependencies: 579 | babel-runtime "^6.22.0" 580 | 581 | babel-plugin-transform-es2015-unicode-regex@^6.24.1: 582 | version "6.24.1" 583 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 584 | dependencies: 585 | babel-helper-regex "^6.24.1" 586 | babel-runtime "^6.22.0" 587 | regexpu-core "^2.0.0" 588 | 589 | babel-plugin-transform-exponentiation-operator@^6.24.1: 590 | version "6.24.1" 591 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 592 | dependencies: 593 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 594 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 595 | babel-runtime "^6.22.0" 596 | 597 | babel-plugin-transform-export-extensions@^6.22.0: 598 | version "6.22.0" 599 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" 600 | dependencies: 601 | babel-plugin-syntax-export-extensions "^6.8.0" 602 | babel-runtime "^6.22.0" 603 | 604 | babel-plugin-transform-function-bind@^6.22.0: 605 | version "6.22.0" 606 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" 607 | dependencies: 608 | babel-plugin-syntax-function-bind "^6.8.0" 609 | babel-runtime "^6.22.0" 610 | 611 | babel-plugin-transform-object-rest-spread@^6.22.0: 612 | version "6.23.0" 613 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" 614 | dependencies: 615 | babel-plugin-syntax-object-rest-spread "^6.8.0" 616 | babel-runtime "^6.22.0" 617 | 618 | babel-plugin-transform-regenerator@^6.24.1: 619 | version "6.24.1" 620 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" 621 | dependencies: 622 | regenerator-transform "0.9.11" 623 | 624 | babel-plugin-transform-strict-mode@^6.24.1: 625 | version "6.24.1" 626 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 627 | dependencies: 628 | babel-runtime "^6.22.0" 629 | babel-types "^6.24.1" 630 | 631 | babel-preset-es2015: 632 | version "6.24.1" 633 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" 634 | dependencies: 635 | babel-plugin-check-es2015-constants "^6.22.0" 636 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 637 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 638 | babel-plugin-transform-es2015-block-scoping "^6.24.1" 639 | babel-plugin-transform-es2015-classes "^6.24.1" 640 | babel-plugin-transform-es2015-computed-properties "^6.24.1" 641 | babel-plugin-transform-es2015-destructuring "^6.22.0" 642 | babel-plugin-transform-es2015-duplicate-keys "^6.24.1" 643 | babel-plugin-transform-es2015-for-of "^6.22.0" 644 | babel-plugin-transform-es2015-function-name "^6.24.1" 645 | babel-plugin-transform-es2015-literals "^6.22.0" 646 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 647 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 648 | babel-plugin-transform-es2015-modules-systemjs "^6.24.1" 649 | babel-plugin-transform-es2015-modules-umd "^6.24.1" 650 | babel-plugin-transform-es2015-object-super "^6.24.1" 651 | babel-plugin-transform-es2015-parameters "^6.24.1" 652 | babel-plugin-transform-es2015-shorthand-properties "^6.24.1" 653 | babel-plugin-transform-es2015-spread "^6.22.0" 654 | babel-plugin-transform-es2015-sticky-regex "^6.24.1" 655 | babel-plugin-transform-es2015-template-literals "^6.22.0" 656 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0" 657 | babel-plugin-transform-es2015-unicode-regex "^6.24.1" 658 | babel-plugin-transform-regenerator "^6.24.1" 659 | 660 | babel-preset-es2017: 661 | version "6.24.1" 662 | resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" 663 | dependencies: 664 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 665 | babel-plugin-transform-async-to-generator "^6.24.1" 666 | 667 | babel-preset-stage-0: 668 | version "6.24.1" 669 | resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" 670 | dependencies: 671 | babel-plugin-transform-do-expressions "^6.22.0" 672 | babel-plugin-transform-function-bind "^6.22.0" 673 | babel-preset-stage-1 "^6.24.1" 674 | 675 | babel-preset-stage-1@^6.24.1: 676 | version "6.24.1" 677 | resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" 678 | dependencies: 679 | babel-plugin-transform-class-constructor-call "^6.24.1" 680 | babel-plugin-transform-export-extensions "^6.22.0" 681 | babel-preset-stage-2 "^6.24.1" 682 | 683 | babel-preset-stage-2@^6.24.1: 684 | version "6.24.1" 685 | resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" 686 | dependencies: 687 | babel-plugin-syntax-dynamic-import "^6.18.0" 688 | babel-plugin-transform-class-properties "^6.24.1" 689 | babel-plugin-transform-decorators "^6.24.1" 690 | babel-preset-stage-3 "^6.24.1" 691 | 692 | babel-preset-stage-3@^6.24.1: 693 | version "6.24.1" 694 | resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" 695 | dependencies: 696 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 697 | babel-plugin-transform-async-generator-functions "^6.24.1" 698 | babel-plugin-transform-async-to-generator "^6.24.1" 699 | babel-plugin-transform-exponentiation-operator "^6.24.1" 700 | babel-plugin-transform-object-rest-spread "^6.22.0" 701 | 702 | babel-register@^6.24.1: 703 | version "6.24.1" 704 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" 705 | dependencies: 706 | babel-core "^6.24.1" 707 | babel-runtime "^6.22.0" 708 | core-js "^2.4.0" 709 | home-or-tmp "^2.0.0" 710 | lodash "^4.2.0" 711 | mkdirp "^0.5.1" 712 | source-map-support "^0.4.2" 713 | 714 | babel-runtime@^6.18.0, babel-runtime@^6.22.0: 715 | version "6.23.0" 716 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" 717 | dependencies: 718 | core-js "^2.4.0" 719 | regenerator-runtime "^0.10.0" 720 | 721 | babel-template@^6.24.1: 722 | version "6.24.1" 723 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" 724 | dependencies: 725 | babel-runtime "^6.22.0" 726 | babel-traverse "^6.24.1" 727 | babel-types "^6.24.1" 728 | babylon "^6.11.0" 729 | lodash "^4.2.0" 730 | 731 | babel-traverse@^6.24.1: 732 | version "6.24.1" 733 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" 734 | dependencies: 735 | babel-code-frame "^6.22.0" 736 | babel-messages "^6.23.0" 737 | babel-runtime "^6.22.0" 738 | babel-types "^6.24.1" 739 | babylon "^6.15.0" 740 | debug "^2.2.0" 741 | globals "^9.0.0" 742 | invariant "^2.2.0" 743 | lodash "^4.2.0" 744 | 745 | babel-types@^6.19.0, babel-types@^6.24.1: 746 | version "6.24.1" 747 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" 748 | dependencies: 749 | babel-runtime "^6.22.0" 750 | esutils "^2.0.2" 751 | lodash "^4.2.0" 752 | to-fast-properties "^1.0.1" 753 | 754 | babylon@^6.11.0, babylon@^6.15.0: 755 | version "6.17.1" 756 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" 757 | 758 | balanced-match@^0.4.1: 759 | version "0.4.2" 760 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 761 | 762 | base64-js@^1.0.2: 763 | version "1.2.0" 764 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" 765 | 766 | base64url@^2.0.0: 767 | version "2.0.0" 768 | resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" 769 | 770 | bcrypt-pbkdf@^1.0.0: 771 | version "1.0.1" 772 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 773 | dependencies: 774 | tweetnacl "^0.14.3" 775 | 776 | big.js@^3.1.3: 777 | version "3.1.3" 778 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" 779 | 780 | binary-extensions@^1.0.0: 781 | version "1.8.0" 782 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 783 | 784 | block-stream@*: 785 | version "0.0.9" 786 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 787 | dependencies: 788 | inherits "~2.0.0" 789 | 790 | boom@2.x.x: 791 | version "2.10.1" 792 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 793 | dependencies: 794 | hoek "2.x.x" 795 | 796 | brace-expansion@^1.1.7: 797 | version "1.1.7" 798 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" 799 | dependencies: 800 | balanced-match "^0.4.1" 801 | concat-map "0.0.1" 802 | 803 | braces@^1.8.2: 804 | version "1.8.5" 805 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 806 | dependencies: 807 | expand-range "^1.8.1" 808 | preserve "^0.2.0" 809 | repeat-element "^1.1.2" 810 | 811 | browserify-aes@0.4.0: 812 | version "0.4.0" 813 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c" 814 | dependencies: 815 | inherits "^2.0.1" 816 | 817 | browserify-zlib@^0.1.4: 818 | version "0.1.4" 819 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" 820 | dependencies: 821 | pako "~0.2.0" 822 | 823 | buffer-shims@~1.0.0: 824 | version "1.0.0" 825 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 826 | 827 | buffer@^4.9.0: 828 | version "4.9.1" 829 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 830 | dependencies: 831 | base64-js "^1.0.2" 832 | ieee754 "^1.1.4" 833 | isarray "^1.0.0" 834 | 835 | builtin-status-codes@^3.0.0: 836 | version "3.0.0" 837 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 838 | 839 | camelcase@^1.0.2: 840 | version "1.2.1" 841 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 842 | 843 | caseless@~0.12.0: 844 | version "0.12.0" 845 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 846 | 847 | center-align@^0.1.1: 848 | version "0.1.3" 849 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 850 | dependencies: 851 | align-text "^0.1.3" 852 | lazy-cache "^1.0.3" 853 | 854 | chalk@^1.1.0: 855 | version "1.1.3" 856 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 857 | dependencies: 858 | ansi-styles "^2.2.1" 859 | escape-string-regexp "^1.0.2" 860 | has-ansi "^2.0.0" 861 | strip-ansi "^3.0.0" 862 | supports-color "^2.0.0" 863 | 864 | chokidar@^1.0.0: 865 | version "1.7.0" 866 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 867 | dependencies: 868 | anymatch "^1.3.0" 869 | async-each "^1.0.0" 870 | glob-parent "^2.0.0" 871 | inherits "^2.0.1" 872 | is-binary-path "^1.0.0" 873 | is-glob "^2.0.0" 874 | path-is-absolute "^1.0.0" 875 | readdirp "^2.0.0" 876 | optionalDependencies: 877 | fsevents "^1.0.0" 878 | 879 | cliui@^2.1.0: 880 | version "2.1.0" 881 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 882 | dependencies: 883 | center-align "^0.1.1" 884 | right-align "^0.1.1" 885 | wordwrap "0.0.2" 886 | 887 | clone@^1.0.2: 888 | version "1.0.2" 889 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" 890 | 891 | co@^4.6.0: 892 | version "4.6.0" 893 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 894 | 895 | code-point-at@^1.0.0: 896 | version "1.1.0" 897 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 898 | 899 | combined-stream@^1.0.5, combined-stream@~1.0.5: 900 | version "1.0.5" 901 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 902 | dependencies: 903 | delayed-stream "~1.0.0" 904 | 905 | commander@2.9.0: 906 | version "2.9.0" 907 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 908 | dependencies: 909 | graceful-readlink ">= 1.0.0" 910 | 911 | commondir@^1.0.1: 912 | version "1.0.1" 913 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 914 | 915 | concat-map@0.0.1: 916 | version "0.0.1" 917 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 918 | 919 | console-browserify@^1.1.0: 920 | version "1.1.0" 921 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 922 | dependencies: 923 | date-now "^0.1.4" 924 | 925 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 926 | version "1.1.0" 927 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 928 | 929 | constants-browserify@^1.0.0: 930 | version "1.0.0" 931 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 932 | 933 | convert-source-map@^1.1.0: 934 | version "1.5.0" 935 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" 936 | 937 | core-js@^2.4.0: 938 | version "2.4.1" 939 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 940 | 941 | core-util-is@~1.0.0: 942 | version "1.0.2" 943 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 944 | 945 | cryptiles@2.x.x: 946 | version "2.0.5" 947 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 948 | dependencies: 949 | boom "2.x.x" 950 | 951 | crypto-browserify@3.3.0: 952 | version "3.3.0" 953 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c" 954 | dependencies: 955 | browserify-aes "0.4.0" 956 | pbkdf2-compat "2.0.1" 957 | ripemd160 "0.2.0" 958 | sha.js "2.2.6" 959 | 960 | dashdash@^1.12.0: 961 | version "1.14.1" 962 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 963 | dependencies: 964 | assert-plus "^1.0.0" 965 | 966 | date-now@^0.1.4: 967 | version "0.1.4" 968 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 969 | 970 | debug@^2.1.1, debug@^2.2.0: 971 | version "2.6.6" 972 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" 973 | dependencies: 974 | ms "0.7.3" 975 | 976 | decamelize@^1.0.0: 977 | version "1.2.0" 978 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 979 | 980 | deep-extend@~0.4.0: 981 | version "0.4.2" 982 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 983 | 984 | delayed-stream@~1.0.0: 985 | version "1.0.0" 986 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 987 | 988 | delegates@^1.0.0: 989 | version "1.0.0" 990 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 991 | 992 | detect-indent@^4.0.0: 993 | version "4.0.0" 994 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 995 | dependencies: 996 | repeating "^2.0.0" 997 | 998 | domain-browser@^1.1.1: 999 | version "1.1.7" 1000 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 1001 | 1002 | ecc-jsbn@~0.1.1: 1003 | version "0.1.1" 1004 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 1005 | dependencies: 1006 | jsbn "~0.1.0" 1007 | 1008 | emojis-list@^2.0.0: 1009 | version "2.1.0" 1010 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 1011 | 1012 | enhanced-resolve@~0.9.0: 1013 | version "0.9.1" 1014 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" 1015 | dependencies: 1016 | graceful-fs "^4.1.2" 1017 | memory-fs "^0.2.0" 1018 | tapable "^0.1.8" 1019 | 1020 | errno@^0.1.3: 1021 | version "0.1.4" 1022 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" 1023 | dependencies: 1024 | prr "~0.0.0" 1025 | 1026 | escape-string-regexp@^1.0.2: 1027 | version "1.0.5" 1028 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1029 | 1030 | esutils@^2.0.2: 1031 | version "2.0.2" 1032 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1033 | 1034 | events@^1.0.0: 1035 | version "1.1.1" 1036 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 1037 | 1038 | expand-brackets@^0.1.4: 1039 | version "0.1.5" 1040 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1041 | dependencies: 1042 | is-posix-bracket "^0.1.0" 1043 | 1044 | expand-range@^1.8.1: 1045 | version "1.8.2" 1046 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1047 | dependencies: 1048 | fill-range "^2.1.0" 1049 | 1050 | extend@~3.0.0: 1051 | version "3.0.1" 1052 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 1053 | 1054 | extglob@^0.3.1: 1055 | version "0.3.2" 1056 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1057 | dependencies: 1058 | is-extglob "^1.0.0" 1059 | 1060 | extsprintf@1.0.2: 1061 | version "1.0.2" 1062 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 1063 | 1064 | filename-regex@^2.0.0: 1065 | version "2.0.1" 1066 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1067 | 1068 | fill-range@^2.1.0: 1069 | version "2.2.3" 1070 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 1071 | dependencies: 1072 | is-number "^2.1.0" 1073 | isobject "^2.0.0" 1074 | randomatic "^1.1.3" 1075 | repeat-element "^1.1.2" 1076 | repeat-string "^1.5.2" 1077 | 1078 | find-cache-dir@^0.1.1: 1079 | version "0.1.1" 1080 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" 1081 | dependencies: 1082 | commondir "^1.0.1" 1083 | mkdirp "^0.5.1" 1084 | pkg-dir "^1.0.0" 1085 | 1086 | find-up@^1.0.0: 1087 | version "1.1.2" 1088 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1089 | dependencies: 1090 | path-exists "^2.0.0" 1091 | pinkie-promise "^2.0.0" 1092 | 1093 | for-in@^1.0.1: 1094 | version "1.0.2" 1095 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1096 | 1097 | for-own@^0.1.4: 1098 | version "0.1.5" 1099 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1100 | dependencies: 1101 | for-in "^1.0.1" 1102 | 1103 | forever-agent@~0.6.1: 1104 | version "0.6.1" 1105 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1106 | 1107 | form-data@~2.1.1: 1108 | version "2.1.4" 1109 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 1110 | dependencies: 1111 | asynckit "^0.4.0" 1112 | combined-stream "^1.0.5" 1113 | mime-types "^2.1.12" 1114 | 1115 | fs-extra@^3.0.1: 1116 | version "3.0.1" 1117 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" 1118 | dependencies: 1119 | graceful-fs "^4.1.2" 1120 | jsonfile "^3.0.0" 1121 | universalify "^0.1.0" 1122 | 1123 | fs.realpath@^1.0.0: 1124 | version "1.0.0" 1125 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1126 | 1127 | fsevents@^1.0.0: 1128 | version "1.1.1" 1129 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" 1130 | dependencies: 1131 | nan "^2.3.0" 1132 | node-pre-gyp "^0.6.29" 1133 | 1134 | fstream-ignore@^1.0.5: 1135 | version "1.0.5" 1136 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1137 | dependencies: 1138 | fstream "^1.0.0" 1139 | inherits "2" 1140 | minimatch "^3.0.0" 1141 | 1142 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 1143 | version "1.0.11" 1144 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1145 | dependencies: 1146 | graceful-fs "^4.1.2" 1147 | inherits "~2.0.0" 1148 | mkdirp ">=0.5 0" 1149 | rimraf "2" 1150 | 1151 | gauge@~2.7.3: 1152 | version "2.7.4" 1153 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1154 | dependencies: 1155 | aproba "^1.0.3" 1156 | console-control-strings "^1.0.0" 1157 | has-unicode "^2.0.0" 1158 | object-assign "^4.1.0" 1159 | signal-exit "^3.0.0" 1160 | string-width "^1.0.1" 1161 | strip-ansi "^3.0.1" 1162 | wide-align "^1.1.0" 1163 | 1164 | getpass@^0.1.1: 1165 | version "0.1.7" 1166 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1167 | dependencies: 1168 | assert-plus "^1.0.0" 1169 | 1170 | gh-pages: 1171 | version "1.0.0" 1172 | resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-1.0.0.tgz#4a46f4c25439f7a2b7e6835504d4a49e949f04ca" 1173 | dependencies: 1174 | async "2.1.4" 1175 | base64url "^2.0.0" 1176 | commander "2.9.0" 1177 | fs-extra "^3.0.1" 1178 | globby "^6.1.0" 1179 | graceful-fs "4.1.11" 1180 | rimraf "^2.5.4" 1181 | 1182 | glob-base@^0.3.0: 1183 | version "0.3.0" 1184 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1185 | dependencies: 1186 | glob-parent "^2.0.0" 1187 | is-glob "^2.0.0" 1188 | 1189 | glob-parent@^2.0.0: 1190 | version "2.0.0" 1191 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1192 | dependencies: 1193 | is-glob "^2.0.0" 1194 | 1195 | glob@^7.0.3, glob@^7.0.5: 1196 | version "7.1.1" 1197 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1198 | dependencies: 1199 | fs.realpath "^1.0.0" 1200 | inflight "^1.0.4" 1201 | inherits "2" 1202 | minimatch "^3.0.2" 1203 | once "^1.3.0" 1204 | path-is-absolute "^1.0.0" 1205 | 1206 | globals@^9.0.0: 1207 | version "9.17.0" 1208 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" 1209 | 1210 | globby@^6.1.0: 1211 | version "6.1.0" 1212 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 1213 | dependencies: 1214 | array-union "^1.0.1" 1215 | glob "^7.0.3" 1216 | object-assign "^4.0.1" 1217 | pify "^2.0.0" 1218 | pinkie-promise "^2.0.0" 1219 | 1220 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@4.1.11: 1221 | version "4.1.11" 1222 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1223 | 1224 | "graceful-readlink@>= 1.0.0": 1225 | version "1.0.1" 1226 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1227 | 1228 | har-schema@^1.0.5: 1229 | version "1.0.5" 1230 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 1231 | 1232 | har-validator@~4.2.1: 1233 | version "4.2.1" 1234 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 1235 | dependencies: 1236 | ajv "^4.9.1" 1237 | har-schema "^1.0.5" 1238 | 1239 | has-ansi@^2.0.0: 1240 | version "2.0.0" 1241 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1242 | dependencies: 1243 | ansi-regex "^2.0.0" 1244 | 1245 | has-flag@^1.0.0: 1246 | version "1.0.0" 1247 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1248 | 1249 | has-unicode@^2.0.0: 1250 | version "2.0.1" 1251 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1252 | 1253 | hawk@~3.1.3: 1254 | version "3.1.3" 1255 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1256 | dependencies: 1257 | boom "2.x.x" 1258 | cryptiles "2.x.x" 1259 | hoek "2.x.x" 1260 | sntp "1.x.x" 1261 | 1262 | hoek@2.x.x: 1263 | version "2.16.3" 1264 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1265 | 1266 | home-or-tmp@^2.0.0: 1267 | version "2.0.0" 1268 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1269 | dependencies: 1270 | os-homedir "^1.0.0" 1271 | os-tmpdir "^1.0.1" 1272 | 1273 | http-signature@~1.1.0: 1274 | version "1.1.1" 1275 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1276 | dependencies: 1277 | assert-plus "^0.2.0" 1278 | jsprim "^1.2.2" 1279 | sshpk "^1.7.0" 1280 | 1281 | https-browserify@0.0.1: 1282 | version "0.0.1" 1283 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 1284 | 1285 | ieee754@^1.1.4: 1286 | version "1.1.8" 1287 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1288 | 1289 | indexof@0.0.1: 1290 | version "0.0.1" 1291 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1292 | 1293 | inflight@^1.0.4: 1294 | version "1.0.6" 1295 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1296 | dependencies: 1297 | once "^1.3.0" 1298 | wrappy "1" 1299 | 1300 | inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: 1301 | version "2.0.3" 1302 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1303 | 1304 | inherits@2.0.1: 1305 | version "2.0.1" 1306 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1307 | 1308 | ini@~1.3.0: 1309 | version "1.3.4" 1310 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1311 | 1312 | interpret@^0.6.4: 1313 | version "0.6.6" 1314 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" 1315 | 1316 | invariant@^2.2.0: 1317 | version "2.2.2" 1318 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1319 | dependencies: 1320 | loose-envify "^1.0.0" 1321 | 1322 | is-binary-path@^1.0.0: 1323 | version "1.0.1" 1324 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1325 | dependencies: 1326 | binary-extensions "^1.0.0" 1327 | 1328 | is-buffer@^1.1.5: 1329 | version "1.1.5" 1330 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1331 | 1332 | is-dotfile@^1.0.0: 1333 | version "1.0.2" 1334 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1335 | 1336 | is-equal-shallow@^0.1.3: 1337 | version "0.1.3" 1338 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1339 | dependencies: 1340 | is-primitive "^2.0.0" 1341 | 1342 | is-extendable@^0.1.1: 1343 | version "0.1.1" 1344 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1345 | 1346 | is-extglob@^1.0.0: 1347 | version "1.0.0" 1348 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1349 | 1350 | is-finite@^1.0.0: 1351 | version "1.0.2" 1352 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1353 | dependencies: 1354 | number-is-nan "^1.0.0" 1355 | 1356 | is-fullwidth-code-point@^1.0.0: 1357 | version "1.0.0" 1358 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1359 | dependencies: 1360 | number-is-nan "^1.0.0" 1361 | 1362 | is-glob@^2.0.0, is-glob@^2.0.1: 1363 | version "2.0.1" 1364 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1365 | dependencies: 1366 | is-extglob "^1.0.0" 1367 | 1368 | is-number@^2.0.2, is-number@^2.1.0: 1369 | version "2.1.0" 1370 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1371 | dependencies: 1372 | kind-of "^3.0.2" 1373 | 1374 | is-posix-bracket@^0.1.0: 1375 | version "0.1.1" 1376 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1377 | 1378 | is-primitive@^2.0.0: 1379 | version "2.0.0" 1380 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1381 | 1382 | is-typedarray@~1.0.0: 1383 | version "1.0.0" 1384 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1385 | 1386 | isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: 1387 | version "1.0.0" 1388 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1389 | 1390 | isobject@^2.0.0: 1391 | version "2.1.0" 1392 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1393 | dependencies: 1394 | isarray "1.0.0" 1395 | 1396 | isstream@~0.1.2: 1397 | version "0.1.2" 1398 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1399 | 1400 | jodid25519@^1.0.0: 1401 | version "1.0.2" 1402 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1403 | dependencies: 1404 | jsbn "~0.1.0" 1405 | 1406 | js-tokens@^3.0.0: 1407 | version "3.0.1" 1408 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 1409 | 1410 | jsbn@~0.1.0: 1411 | version "0.1.1" 1412 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1413 | 1414 | jsesc@^1.3.0: 1415 | version "1.3.0" 1416 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1417 | 1418 | jsesc@~0.5.0: 1419 | version "0.5.0" 1420 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1421 | 1422 | json-schema@0.2.3: 1423 | version "0.2.3" 1424 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1425 | 1426 | json-stable-stringify@^1.0.1: 1427 | version "1.0.1" 1428 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1429 | dependencies: 1430 | jsonify "~0.0.0" 1431 | 1432 | json-stringify-safe@~5.0.1: 1433 | version "5.0.1" 1434 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1435 | 1436 | json5@^0.5.0: 1437 | version "0.5.1" 1438 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1439 | 1440 | jsonfile@^3.0.0: 1441 | version "3.0.0" 1442 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0" 1443 | optionalDependencies: 1444 | graceful-fs "^4.1.6" 1445 | 1446 | jsonify@~0.0.0: 1447 | version "0.0.0" 1448 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1449 | 1450 | jsprim@^1.2.2: 1451 | version "1.4.0" 1452 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 1453 | dependencies: 1454 | assert-plus "1.0.0" 1455 | extsprintf "1.0.2" 1456 | json-schema "0.2.3" 1457 | verror "1.3.6" 1458 | 1459 | kind-of@^3.0.2: 1460 | version "3.2.0" 1461 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" 1462 | dependencies: 1463 | is-buffer "^1.1.5" 1464 | 1465 | lazy-cache@^1.0.3: 1466 | version "1.0.4" 1467 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1468 | 1469 | loader-utils@^0.2.11: 1470 | version "0.2.17" 1471 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" 1472 | dependencies: 1473 | big.js "^3.1.3" 1474 | emojis-list "^2.0.0" 1475 | json5 "^0.5.0" 1476 | object-assign "^4.0.1" 1477 | 1478 | loader-utils@^1.0.2: 1479 | version "1.1.0" 1480 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 1481 | dependencies: 1482 | big.js "^3.1.3" 1483 | emojis-list "^2.0.0" 1484 | json5 "^0.5.0" 1485 | 1486 | lodash@^4.14.0, lodash@^4.2.0: 1487 | version "4.17.4" 1488 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1489 | 1490 | longest@^1.0.1: 1491 | version "1.0.1" 1492 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1493 | 1494 | loose-envify@^1.0.0: 1495 | version "1.3.1" 1496 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1497 | dependencies: 1498 | js-tokens "^3.0.0" 1499 | 1500 | memory-fs@^0.2.0: 1501 | version "0.2.0" 1502 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" 1503 | 1504 | memory-fs@~0.3.0: 1505 | version "0.3.0" 1506 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20" 1507 | dependencies: 1508 | errno "^0.1.3" 1509 | readable-stream "^2.0.1" 1510 | 1511 | micromatch@^2.1.5: 1512 | version "2.3.11" 1513 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1514 | dependencies: 1515 | arr-diff "^2.0.0" 1516 | array-unique "^0.2.1" 1517 | braces "^1.8.2" 1518 | expand-brackets "^0.1.4" 1519 | extglob "^0.3.1" 1520 | filename-regex "^2.0.0" 1521 | is-extglob "^1.0.0" 1522 | is-glob "^2.0.1" 1523 | kind-of "^3.0.2" 1524 | normalize-path "^2.0.1" 1525 | object.omit "^2.0.0" 1526 | parse-glob "^3.0.4" 1527 | regex-cache "^0.4.2" 1528 | 1529 | mime-db@~1.27.0: 1530 | version "1.27.0" 1531 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1532 | 1533 | mime-types@^2.1.12, mime-types@~2.1.7: 1534 | version "2.1.15" 1535 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 1536 | dependencies: 1537 | mime-db "~1.27.0" 1538 | 1539 | minimatch@^3.0.0, minimatch@^3.0.2: 1540 | version "3.0.4" 1541 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1542 | dependencies: 1543 | brace-expansion "^1.1.7" 1544 | 1545 | minimist@^1.2.0: 1546 | version "1.2.0" 1547 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1548 | 1549 | minimist@~0.0.1: 1550 | version "0.0.10" 1551 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1552 | 1553 | minimist@0.0.8: 1554 | version "0.0.8" 1555 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1556 | 1557 | mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0: 1558 | version "0.5.1" 1559 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1560 | dependencies: 1561 | minimist "0.0.8" 1562 | 1563 | ms@0.7.3: 1564 | version "0.7.3" 1565 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" 1566 | 1567 | nan@^2.3.0: 1568 | version "2.6.2" 1569 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" 1570 | 1571 | node-libs-browser@^0.7.0: 1572 | version "0.7.0" 1573 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b" 1574 | dependencies: 1575 | assert "^1.1.1" 1576 | browserify-zlib "^0.1.4" 1577 | buffer "^4.9.0" 1578 | console-browserify "^1.1.0" 1579 | constants-browserify "^1.0.0" 1580 | crypto-browserify "3.3.0" 1581 | domain-browser "^1.1.1" 1582 | events "^1.0.0" 1583 | https-browserify "0.0.1" 1584 | os-browserify "^0.2.0" 1585 | path-browserify "0.0.0" 1586 | process "^0.11.0" 1587 | punycode "^1.2.4" 1588 | querystring-es3 "^0.2.0" 1589 | readable-stream "^2.0.5" 1590 | stream-browserify "^2.0.1" 1591 | stream-http "^2.3.1" 1592 | string_decoder "^0.10.25" 1593 | timers-browserify "^2.0.2" 1594 | tty-browserify "0.0.0" 1595 | url "^0.11.0" 1596 | util "^0.10.3" 1597 | vm-browserify "0.0.4" 1598 | 1599 | node-pre-gyp@^0.6.29: 1600 | version "0.6.34" 1601 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" 1602 | dependencies: 1603 | mkdirp "^0.5.1" 1604 | nopt "^4.0.1" 1605 | npmlog "^4.0.2" 1606 | rc "^1.1.7" 1607 | request "^2.81.0" 1608 | rimraf "^2.6.1" 1609 | semver "^5.3.0" 1610 | tar "^2.2.1" 1611 | tar-pack "^3.4.0" 1612 | 1613 | nopt@^4.0.1: 1614 | version "4.0.1" 1615 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1616 | dependencies: 1617 | abbrev "1" 1618 | osenv "^0.1.4" 1619 | 1620 | normalize-path@^2.0.1: 1621 | version "2.1.1" 1622 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1623 | dependencies: 1624 | remove-trailing-separator "^1.0.1" 1625 | 1626 | npmlog@^4.0.2: 1627 | version "4.1.0" 1628 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" 1629 | dependencies: 1630 | are-we-there-yet "~1.1.2" 1631 | console-control-strings "~1.1.0" 1632 | gauge "~2.7.3" 1633 | set-blocking "~2.0.0" 1634 | 1635 | number-is-nan@^1.0.0: 1636 | version "1.0.1" 1637 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1638 | 1639 | oauth-sign@~0.8.1: 1640 | version "0.8.2" 1641 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1642 | 1643 | object-assign@^4.0.1, object-assign@^4.1.0: 1644 | version "4.1.1" 1645 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1646 | 1647 | object.omit@^2.0.0: 1648 | version "2.0.1" 1649 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1650 | dependencies: 1651 | for-own "^0.1.4" 1652 | is-extendable "^0.1.1" 1653 | 1654 | once@^1.3.0, once@^1.3.3: 1655 | version "1.4.0" 1656 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1657 | dependencies: 1658 | wrappy "1" 1659 | 1660 | optimist@~0.6.0: 1661 | version "0.6.1" 1662 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1663 | dependencies: 1664 | minimist "~0.0.1" 1665 | wordwrap "~0.0.2" 1666 | 1667 | os-browserify@^0.2.0: 1668 | version "0.2.1" 1669 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" 1670 | 1671 | os-homedir@^1.0.0: 1672 | version "1.0.2" 1673 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1674 | 1675 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 1676 | version "1.0.2" 1677 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1678 | 1679 | osenv@^0.1.4: 1680 | version "0.1.4" 1681 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 1682 | dependencies: 1683 | os-homedir "^1.0.0" 1684 | os-tmpdir "^1.0.0" 1685 | 1686 | pako@~0.2.0: 1687 | version "0.2.9" 1688 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" 1689 | 1690 | parse-glob@^3.0.4: 1691 | version "3.0.4" 1692 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1693 | dependencies: 1694 | glob-base "^0.3.0" 1695 | is-dotfile "^1.0.0" 1696 | is-extglob "^1.0.0" 1697 | is-glob "^2.0.0" 1698 | 1699 | path-browserify@0.0.0: 1700 | version "0.0.0" 1701 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 1702 | 1703 | path-exists@^2.0.0: 1704 | version "2.1.0" 1705 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1706 | dependencies: 1707 | pinkie-promise "^2.0.0" 1708 | 1709 | path-is-absolute@^1.0.0: 1710 | version "1.0.1" 1711 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1712 | 1713 | pbkdf2-compat@2.0.1: 1714 | version "2.0.1" 1715 | resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288" 1716 | 1717 | performance-now, performance-now@^2.1.0: 1718 | version "2.1.0" 1719 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1720 | 1721 | performance-now@^0.2.0: 1722 | version "0.2.0" 1723 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 1724 | 1725 | pify@^2.0.0: 1726 | version "2.3.0" 1727 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1728 | 1729 | pinkie-promise@^2.0.0: 1730 | version "2.0.1" 1731 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1732 | dependencies: 1733 | pinkie "^2.0.0" 1734 | 1735 | pinkie@^2.0.0: 1736 | version "2.0.4" 1737 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1738 | 1739 | pkg-dir@^1.0.0: 1740 | version "1.0.0" 1741 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 1742 | dependencies: 1743 | find-up "^1.0.0" 1744 | 1745 | preserve@^0.2.0: 1746 | version "0.2.0" 1747 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1748 | 1749 | private@^0.1.6: 1750 | version "0.1.7" 1751 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" 1752 | 1753 | process-nextick-args@~1.0.6: 1754 | version "1.0.7" 1755 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1756 | 1757 | process@^0.11.0: 1758 | version "0.11.10" 1759 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1760 | 1761 | prr@~0.0.0: 1762 | version "0.0.0" 1763 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" 1764 | 1765 | punycode@^1.2.4, punycode@^1.4.1: 1766 | version "1.4.1" 1767 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1768 | 1769 | punycode@1.3.2: 1770 | version "1.3.2" 1771 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1772 | 1773 | qs@~6.4.0: 1774 | version "6.4.0" 1775 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1776 | 1777 | querystring-es3@^0.2.0: 1778 | version "0.2.1" 1779 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1780 | 1781 | querystring@0.2.0: 1782 | version "0.2.0" 1783 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1784 | 1785 | raf: 1786 | version "3.3.2" 1787 | resolved "https://registry.yarnpkg.com/raf/-/raf-3.3.2.tgz#0c13be0b5b49b46f76d6669248d527cf2b02fe27" 1788 | dependencies: 1789 | performance-now "^2.1.0" 1790 | 1791 | randomatic@^1.1.3: 1792 | version "1.1.6" 1793 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 1794 | dependencies: 1795 | is-number "^2.0.2" 1796 | kind-of "^3.0.2" 1797 | 1798 | rc@^1.1.7: 1799 | version "1.2.1" 1800 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 1801 | dependencies: 1802 | deep-extend "~0.4.0" 1803 | ini "~1.3.0" 1804 | minimist "^1.2.0" 1805 | strip-json-comments "~2.0.1" 1806 | 1807 | readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6: 1808 | version "2.2.9" 1809 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" 1810 | dependencies: 1811 | buffer-shims "~1.0.0" 1812 | core-util-is "~1.0.0" 1813 | inherits "~2.0.1" 1814 | isarray "~1.0.0" 1815 | process-nextick-args "~1.0.6" 1816 | string_decoder "~1.0.0" 1817 | util-deprecate "~1.0.1" 1818 | 1819 | readdirp@^2.0.0: 1820 | version "2.1.0" 1821 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1822 | dependencies: 1823 | graceful-fs "^4.1.2" 1824 | minimatch "^3.0.2" 1825 | readable-stream "^2.0.2" 1826 | set-immediate-shim "^1.0.1" 1827 | 1828 | regenerate@^1.2.1: 1829 | version "1.3.2" 1830 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" 1831 | 1832 | regenerator-runtime@^0.10.0: 1833 | version "0.10.5" 1834 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" 1835 | 1836 | regenerator-transform@0.9.11: 1837 | version "0.9.11" 1838 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" 1839 | dependencies: 1840 | babel-runtime "^6.18.0" 1841 | babel-types "^6.19.0" 1842 | private "^0.1.6" 1843 | 1844 | regex-cache@^0.4.2: 1845 | version "0.4.3" 1846 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1847 | dependencies: 1848 | is-equal-shallow "^0.1.3" 1849 | is-primitive "^2.0.0" 1850 | 1851 | regexpu-core@^2.0.0: 1852 | version "2.0.0" 1853 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 1854 | dependencies: 1855 | regenerate "^1.2.1" 1856 | regjsgen "^0.2.0" 1857 | regjsparser "^0.1.4" 1858 | 1859 | regjsgen@^0.2.0: 1860 | version "0.2.0" 1861 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 1862 | 1863 | regjsparser@^0.1.4: 1864 | version "0.1.5" 1865 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 1866 | dependencies: 1867 | jsesc "~0.5.0" 1868 | 1869 | remove-trailing-separator@^1.0.1: 1870 | version "1.0.1" 1871 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" 1872 | 1873 | repeat-element@^1.1.2: 1874 | version "1.1.2" 1875 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1876 | 1877 | repeat-string@^1.5.2: 1878 | version "1.6.1" 1879 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1880 | 1881 | repeating@^2.0.0: 1882 | version "2.0.1" 1883 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1884 | dependencies: 1885 | is-finite "^1.0.0" 1886 | 1887 | request@^2.81.0: 1888 | version "2.81.0" 1889 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 1890 | dependencies: 1891 | aws-sign2 "~0.6.0" 1892 | aws4 "^1.2.1" 1893 | caseless "~0.12.0" 1894 | combined-stream "~1.0.5" 1895 | extend "~3.0.0" 1896 | forever-agent "~0.6.1" 1897 | form-data "~2.1.1" 1898 | har-validator "~4.2.1" 1899 | hawk "~3.1.3" 1900 | http-signature "~1.1.0" 1901 | is-typedarray "~1.0.0" 1902 | isstream "~0.1.2" 1903 | json-stringify-safe "~5.0.1" 1904 | mime-types "~2.1.7" 1905 | oauth-sign "~0.8.1" 1906 | performance-now "^0.2.0" 1907 | qs "~6.4.0" 1908 | safe-buffer "^5.0.1" 1909 | stringstream "~0.0.4" 1910 | tough-cookie "~2.3.0" 1911 | tunnel-agent "^0.6.0" 1912 | uuid "^3.0.0" 1913 | 1914 | right-align@^0.1.1: 1915 | version "0.1.3" 1916 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1917 | dependencies: 1918 | align-text "^0.1.1" 1919 | 1920 | rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@2: 1921 | version "2.6.1" 1922 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 1923 | dependencies: 1924 | glob "^7.0.5" 1925 | 1926 | ripemd160@0.2.0: 1927 | version "0.2.0" 1928 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce" 1929 | 1930 | safe-buffer@^5.0.1: 1931 | version "5.0.1" 1932 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 1933 | 1934 | semver@^5.3.0: 1935 | version "5.3.0" 1936 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1937 | 1938 | set-blocking@~2.0.0: 1939 | version "2.0.0" 1940 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1941 | 1942 | set-immediate-shim@^1.0.1: 1943 | version "1.0.1" 1944 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1945 | 1946 | setimmediate@^1.0.4: 1947 | version "1.0.5" 1948 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1949 | 1950 | sha.js@2.2.6: 1951 | version "2.2.6" 1952 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba" 1953 | 1954 | signal-exit@^3.0.0: 1955 | version "3.0.2" 1956 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1957 | 1958 | slash@^1.0.0: 1959 | version "1.0.0" 1960 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 1961 | 1962 | sntp@1.x.x: 1963 | version "1.0.9" 1964 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 1965 | dependencies: 1966 | hoek "2.x.x" 1967 | 1968 | source-list-map@~0.1.7: 1969 | version "0.1.8" 1970 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" 1971 | 1972 | source-map-support@^0.4.2: 1973 | version "0.4.15" 1974 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" 1975 | dependencies: 1976 | source-map "^0.5.6" 1977 | 1978 | source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: 1979 | version "0.5.6" 1980 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 1981 | 1982 | source-map@~0.4.1: 1983 | version "0.4.4" 1984 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 1985 | dependencies: 1986 | amdefine ">=0.0.4" 1987 | 1988 | sshpk@^1.7.0: 1989 | version "1.13.0" 1990 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" 1991 | dependencies: 1992 | asn1 "~0.2.3" 1993 | assert-plus "^1.0.0" 1994 | dashdash "^1.12.0" 1995 | getpass "^0.1.1" 1996 | optionalDependencies: 1997 | bcrypt-pbkdf "^1.0.0" 1998 | ecc-jsbn "~0.1.1" 1999 | jodid25519 "^1.0.0" 2000 | jsbn "~0.1.0" 2001 | tweetnacl "~0.14.0" 2002 | 2003 | stream-browserify@^2.0.1: 2004 | version "2.0.1" 2005 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 2006 | dependencies: 2007 | inherits "~2.0.1" 2008 | readable-stream "^2.0.2" 2009 | 2010 | stream-http@^2.3.1: 2011 | version "2.7.1" 2012 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" 2013 | dependencies: 2014 | builtin-status-codes "^3.0.0" 2015 | inherits "^2.0.1" 2016 | readable-stream "^2.2.6" 2017 | to-arraybuffer "^1.0.0" 2018 | xtend "^4.0.0" 2019 | 2020 | string_decoder@^0.10.25: 2021 | version "0.10.31" 2022 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2023 | 2024 | string_decoder@~1.0.0: 2025 | version "1.0.0" 2026 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" 2027 | dependencies: 2028 | buffer-shims "~1.0.0" 2029 | 2030 | string-width@^1.0.1, string-width@^1.0.2: 2031 | version "1.0.2" 2032 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2033 | dependencies: 2034 | code-point-at "^1.0.0" 2035 | is-fullwidth-code-point "^1.0.0" 2036 | strip-ansi "^3.0.0" 2037 | 2038 | stringstream@~0.0.4: 2039 | version "0.0.5" 2040 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2041 | 2042 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2043 | version "3.0.1" 2044 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2045 | dependencies: 2046 | ansi-regex "^2.0.0" 2047 | 2048 | strip-json-comments@~2.0.1: 2049 | version "2.0.1" 2050 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2051 | 2052 | supports-color@^2.0.0: 2053 | version "2.0.0" 2054 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2055 | 2056 | supports-color@^3.1.0: 2057 | version "3.2.3" 2058 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 2059 | dependencies: 2060 | has-flag "^1.0.0" 2061 | 2062 | tapable@^0.1.8, tapable@~0.1.8: 2063 | version "0.1.10" 2064 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" 2065 | 2066 | tar-pack@^3.4.0: 2067 | version "3.4.0" 2068 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 2069 | dependencies: 2070 | debug "^2.2.0" 2071 | fstream "^1.0.10" 2072 | fstream-ignore "^1.0.5" 2073 | once "^1.3.3" 2074 | readable-stream "^2.1.4" 2075 | rimraf "^2.5.1" 2076 | tar "^2.2.1" 2077 | uid-number "^0.0.6" 2078 | 2079 | tar@^2.2.1: 2080 | version "2.2.1" 2081 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2082 | dependencies: 2083 | block-stream "*" 2084 | fstream "^1.0.2" 2085 | inherits "2" 2086 | 2087 | timers-browserify@^2.0.2: 2088 | version "2.0.2" 2089 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" 2090 | dependencies: 2091 | setimmediate "^1.0.4" 2092 | 2093 | to-arraybuffer@^1.0.0: 2094 | version "1.0.1" 2095 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2096 | 2097 | to-fast-properties@^1.0.1: 2098 | version "1.0.3" 2099 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 2100 | 2101 | tough-cookie@~2.3.0: 2102 | version "2.3.2" 2103 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2104 | dependencies: 2105 | punycode "^1.4.1" 2106 | 2107 | trim-right@^1.0.1: 2108 | version "1.0.1" 2109 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2110 | 2111 | tty-browserify@0.0.0: 2112 | version "0.0.0" 2113 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 2114 | 2115 | tunnel-agent@^0.6.0: 2116 | version "0.6.0" 2117 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2118 | dependencies: 2119 | safe-buffer "^5.0.1" 2120 | 2121 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2122 | version "0.14.5" 2123 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2124 | 2125 | uglify-js@~2.7.3: 2126 | version "2.7.5" 2127 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" 2128 | dependencies: 2129 | async "~0.2.6" 2130 | source-map "~0.5.1" 2131 | uglify-to-browserify "~1.0.0" 2132 | yargs "~3.10.0" 2133 | 2134 | uglify-to-browserify@~1.0.0: 2135 | version "1.0.2" 2136 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2137 | 2138 | uid-number@^0.0.6: 2139 | version "0.0.6" 2140 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2141 | 2142 | universalify@^0.1.0: 2143 | version "0.1.0" 2144 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" 2145 | 2146 | url@^0.11.0: 2147 | version "0.11.0" 2148 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 2149 | dependencies: 2150 | punycode "1.3.2" 2151 | querystring "0.2.0" 2152 | 2153 | util-deprecate@~1.0.1: 2154 | version "1.0.2" 2155 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2156 | 2157 | util@^0.10.3, util@0.10.3: 2158 | version "0.10.3" 2159 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2160 | dependencies: 2161 | inherits "2.0.1" 2162 | 2163 | uuid@^3.0.0: 2164 | version "3.0.1" 2165 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 2166 | 2167 | verror@1.3.6: 2168 | version "1.3.6" 2169 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 2170 | dependencies: 2171 | extsprintf "1.0.2" 2172 | 2173 | vm-browserify@0.0.4: 2174 | version "0.0.4" 2175 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 2176 | dependencies: 2177 | indexof "0.0.1" 2178 | 2179 | watchpack@^0.2.1: 2180 | version "0.2.9" 2181 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b" 2182 | dependencies: 2183 | async "^0.9.0" 2184 | chokidar "^1.0.0" 2185 | graceful-fs "^4.1.2" 2186 | 2187 | webpack-core@~0.6.9: 2188 | version "0.6.9" 2189 | resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" 2190 | dependencies: 2191 | source-list-map "~0.1.7" 2192 | source-map "~0.4.1" 2193 | 2194 | webpack@1.*: 2195 | version "1.15.0" 2196 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98" 2197 | dependencies: 2198 | acorn "^3.0.0" 2199 | async "^1.3.0" 2200 | clone "^1.0.2" 2201 | enhanced-resolve "~0.9.0" 2202 | interpret "^0.6.4" 2203 | loader-utils "^0.2.11" 2204 | memory-fs "~0.3.0" 2205 | mkdirp "~0.5.0" 2206 | node-libs-browser "^0.7.0" 2207 | optimist "~0.6.0" 2208 | supports-color "^3.1.0" 2209 | tapable "~0.1.8" 2210 | uglify-js "~2.7.3" 2211 | watchpack "^0.2.1" 2212 | webpack-core "~0.6.9" 2213 | 2214 | wide-align@^1.1.0: 2215 | version "1.1.2" 2216 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 2217 | dependencies: 2218 | string-width "^1.0.2" 2219 | 2220 | window-size@0.1.0: 2221 | version "0.1.0" 2222 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2223 | 2224 | wordwrap@~0.0.2: 2225 | version "0.0.3" 2226 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2227 | 2228 | wordwrap@0.0.2: 2229 | version "0.0.2" 2230 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2231 | 2232 | wrappy@1: 2233 | version "1.0.2" 2234 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2235 | 2236 | xtend@^4.0.0: 2237 | version "4.0.1" 2238 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2239 | 2240 | yargs@~3.10.0: 2241 | version "3.10.0" 2242 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2243 | dependencies: 2244 | camelcase "^1.0.2" 2245 | cliui "^2.1.0" 2246 | decamelize "^1.0.0" 2247 | window-size "0.1.0" 2248 | 2249 | --------------------------------------------------------------------------------