From 2e00c1ca71abf924c2a89df24d84d41071316543 Mon Sep 17 00:00:00 2001 From: Christian Harden Date: Thu, 14 Sep 2017 21:53:15 -0700 Subject: [PATCH 1/4] (refactor) throttle foldCheck for viewability during scrolling instead of debounce --- examples/apps/infinite-scrolling/app.js | 2 +- package.json | 5 +++-- src/createManager.js | 10 +++++++--- test/createManager.spec.js | 6 +++--- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/examples/apps/infinite-scrolling/app.js b/examples/apps/infinite-scrolling/app.js index f5b4b45..dd8e0bc 100644 --- a/examples/apps/infinite-scrolling/app.js +++ b/examples/apps/infinite-scrolling/app.js @@ -1,7 +1,7 @@ /* eslint-disable react/sort-comp */ import React, {Component} from "react"; import Radium from "radium"; -import debounce from "debounce"; +import debounce from "lodash.debounce"; import {Bling as Gpt, Events} from "react-gpt"; // eslint-disable-line import/no-unresolved import "../log"; import Content from "./content"; diff --git a/package.json b/package.json index 5288c56..08b1cb8 100644 --- a/package.json +++ b/package.json @@ -32,11 +32,12 @@ "lib" ], "dependencies": { - "debounce": "^1.0.0", "deep-equal": "^1.0.1", "eventemitter3": "^2.0.2", "fbjs": "^0.8.1", - "hoist-non-react-statics": "^1.0.5" + "hoist-non-react-statics": "^1.0.5", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1" }, "devDependencies": { "babel-cli": "^6.5.1", diff --git a/src/createManager.js b/src/createManager.js index 68b7b1e..4932f68 100644 --- a/src/createManager.js +++ b/src/createManager.js @@ -1,5 +1,6 @@ import EventEmitter from "eventemitter3"; -import debounce from "debounce"; +import debounce from "lodash.debounce"; +import throttle from "lodash.throttle"; import invariant from "fbjs/lib/invariant"; import {canUseDOM} from "fbjs/lib/ExecutionEnvironment"; import Events from "./Events"; @@ -131,14 +132,17 @@ export class AdManager extends EventEmitter { }); } - _foldCheck = debounce(event => { + _foldCheck = throttle(event => { const instances = this.getMountedInstances(); instances.forEach(instance => { if (instance.getRenderWhenViewable()) { instance.foldCheck(event); } }); - }, 66) + }, 20, { + leading: true, + trailing: true + }) _handleMediaQueryChange = event => { if (this._syncCorrelator) { diff --git a/test/createManager.spec.js b/test/createManager.spec.js index cef8519..d897315 100644 --- a/test/createManager.spec.js +++ b/test/createManager.spec.js @@ -399,7 +399,7 @@ describe("createManager", () => { adManager.render(); }); - it("debounces foldCheck", (done) => { + it("throttles foldCheck", (done) => { const instance = { props: { sizeMapping: [{viewport: [0, 0], slot: [320, 50]}] @@ -427,8 +427,8 @@ describe("createManager", () => { adManager.addInstance(instance2); setTimeout(() => { - expect(foldCheck.calledOnce).to.be.true; - expect(foldCheck2.calledOnce).to.be.false; + expect(foldCheck.calledTwice).to.be.true; + expect(foldCheck2.notCalled).to.be.true; foldCheck.restore(); foldCheck2.restore(); adManager.removeInstance(instance); From 81e468a3ae4aabf1cabee46ee086a424ee862789 Mon Sep 17 00:00:00 2001 From: Christian Harden Date: Sun, 17 Sep 2017 12:37:22 -0700 Subject: [PATCH 2/4] (refactor) use throttle-debounce and improve throttle tests --- examples/apps/infinite-scrolling/app.js | 6 ++--- package.json | 3 +-- src/createManager.js | 24 +++++++++++--------- test/createManager.spec.js | 30 +++++++++++++++++++++---- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/examples/apps/infinite-scrolling/app.js b/examples/apps/infinite-scrolling/app.js index dd8e0bc..bd28519 100644 --- a/examples/apps/infinite-scrolling/app.js +++ b/examples/apps/infinite-scrolling/app.js @@ -1,7 +1,7 @@ /* eslint-disable react/sort-comp */ import React, {Component} from "react"; import Radium from "radium"; -import debounce from "lodash.debounce"; +import debounce from "throttle-debounce/debounce"; import {Bling as Gpt, Events} from "react-gpt"; // eslint-disable-line import/no-unresolved import "../log"; import Content from "./content"; @@ -40,14 +40,14 @@ class App extends Component { window.removeEventListener("resize", this.onScroll); this.stopTimer(); } - onScroll = debounce(() => { + onScroll = debounce(66, () => { const scrollTop = window.scrollY || document.documentElement.scrollTop; if (scrollTop + window.innerHeight >= document.body.clientHeight) { this.setState({ page: ++this.state.page }); } - }, 66) + }) startTimer() { this.stopTimer(); this.timer = setInterval(() => { diff --git a/package.json b/package.json index 08b1cb8..81aa120 100644 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "eventemitter3": "^2.0.2", "fbjs": "^0.8.1", "hoist-non-react-statics": "^1.0.5", - "lodash.debounce": "^4.0.8", - "lodash.throttle": "^4.1.1" + "throttle-debounce": "^1.0.1" }, "devDependencies": { "babel-cli": "^6.5.1", diff --git a/src/createManager.js b/src/createManager.js index 4932f68..9ec1be6 100644 --- a/src/createManager.js +++ b/src/createManager.js @@ -1,6 +1,5 @@ import EventEmitter from "eventemitter3"; -import debounce from "lodash.debounce"; -import throttle from "lodash.throttle"; +import {debounce, throttle} from "throttle-debounce"; import invariant from "fbjs/lib/invariant"; import {canUseDOM} from "fbjs/lib/ExecutionEnvironment"; import Events from "./Events"; @@ -132,18 +131,23 @@ export class AdManager extends EventEmitter { }); } - _foldCheck = throttle(event => { + _foldCheck = throttle(20, event => { const instances = this.getMountedInstances(); instances.forEach(instance => { if (instance.getRenderWhenViewable()) { instance.foldCheck(event); } }); - }, 20, { - leading: true, - trailing: true + + if (this.testMode) { + this._getTimer(); + } }) + _getTimer() { + return Date.now(); + } + _handleMediaQueryChange = event => { if (this._syncCorrelator) { this.refresh(); @@ -311,7 +315,7 @@ export class AdManager extends EventEmitter { return true; } - render = debounce(() => { + render = debounce(4, () => { if (!this._initialRender) { return; } @@ -379,7 +383,7 @@ export class AdManager extends EventEmitter { this._initialRender = false; }); - }, 4) + }) /** * Re-render(not refresh) all the ads in the page and the first ad will update the correlator value. @@ -388,7 +392,7 @@ export class AdManager extends EventEmitter { * @method renderAll * @static */ - renderAll = debounce(() => { + renderAll = debounce(4, () => { if (!this.apiReady) { return false; } @@ -403,7 +407,7 @@ export class AdManager extends EventEmitter { }); return true; - }, 4) + }) getGPTVersion() { if (!this.apiReady) { diff --git a/test/createManager.spec.js b/test/createManager.spec.js index d897315..bbd0383 100644 --- a/test/createManager.spec.js +++ b/test/createManager.spec.js @@ -422,23 +422,45 @@ describe("createManager", () => { const foldCheck = sinon.stub(instance, "foldCheck"); const foldCheck2 = sinon.stub(instance2, "foldCheck"); + const getRenderWhenViewable = sinon.spy(instance, "getRenderWhenViewable"); + const getRenderWhenViewable2 = sinon.spy(instance2, "getRenderWhenViewable"); + const managerFoldCheck = sinon.spy(adManager, "_foldCheck"); + const timer = sinon.spy(adManager, "_getTimer"); adManager.addInstance(instance); adManager.addInstance(instance2); + const start = Date.now(); + adManager._foldCheck(); + adManager._foldCheck(); + setTimeout(() => { + adManager._foldCheck(); + }, 5); + setTimeout(() => { + adManager._foldCheck(); + }, 10); + setTimeout(() => { + adManager._foldCheck(); + }, 15); + setTimeout(() => { + expect(managerFoldCheck.callCount).to.equal(5); + expect(timer.calledTwice).to.be.true; + expect(timer.returnValues[1] - timer.returnValues[0]).to.be.above(19); // timer above 20ms timeout + expect(timer.returnValues[0] - start).to.be.below(5); // should start ~immediately expect(foldCheck.calledTwice).to.be.true; expect(foldCheck2.notCalled).to.be.true; + foldCheck.restore(); foldCheck2.restore(); + getRenderWhenViewable.restore(); + getRenderWhenViewable2.restore(); + managerFoldCheck.restore(); + timer.restore() adManager.removeInstance(instance); adManager.removeInstance(instance2); done(); }, 100); - - adManager._foldCheck(); - adManager._foldCheck(); - adManager._foldCheck(); }); it("renders all ads", (done) => { From 930065c7ef517d01c62ebcbf59e59e19cd0100a8 Mon Sep 17 00:00:00 2001 From: Christian Harden Date: Sun, 17 Sep 2017 13:59:12 -0700 Subject: [PATCH 3/4] (lint) --- test/createManager.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/createManager.spec.js b/test/createManager.spec.js index bbd0383..23afdb3 100644 --- a/test/createManager.spec.js +++ b/test/createManager.spec.js @@ -456,7 +456,7 @@ describe("createManager", () => { getRenderWhenViewable.restore(); getRenderWhenViewable2.restore(); managerFoldCheck.restore(); - timer.restore() + timer.restore(); adManager.removeInstance(instance); adManager.removeInstance(instance2); done(); From 597b69704d6380f48e5c897cbb76650cfc6c41b5 Mon Sep 17 00:00:00 2001 From: Christian Harden Date: Sun, 17 Sep 2017 15:01:35 -0700 Subject: [PATCH 4/4] (fix) run yarn --- yarn.lock | 220 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 129 insertions(+), 91 deletions(-) diff --git a/yarn.lock b/yarn.lock index 86ce8cf..f013107 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,6 +85,12 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -235,7 +241,20 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-cli@^6.24.0, babel-cli@^6.5.1: +axios@0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + dependencies: + follow-redirects "1.0.0" + +axios@^0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" + dependencies: + follow-redirects "^1.2.3" + is-buffer "^1.1.5" + +babel-cli@^6.5.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" dependencies: @@ -264,7 +283,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.1.4, babel-core@^6.24.0, babel-core@^6.24.1, babel-core@^6.5.1: +babel-core@^6.1.4, babel-core@^6.24.1, babel-core@^6.5.1: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" dependencies: @@ -451,11 +470,7 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-add-module-exports@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25" - -babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.3.13: +babel-plugin-check-es2015-constants@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" dependencies: @@ -575,19 +590,19 @@ babel-plugin-transform-do-expressions@^6.22.0: babel-plugin-syntax-do-expressions "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13: +babel-plugin-transform-es2015-arrow-functions@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: +babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.24.1, babel-plugin-transform-es2015-block-scoping@^6.9.0: +babel-plugin-transform-es2015-block-scoping@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" dependencies: @@ -597,7 +612,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1, babel-plugin-transform-es20 babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: +babel-plugin-transform-es2015-classes@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -611,33 +626,33 @@ babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-cla babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.24.1, babel-plugin-transform-es2015-computed-properties@^6.3.13: +babel-plugin-transform-es2015-computed-properties@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.9.0: +babel-plugin-transform-es2015-destructuring@^6.9.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.24.1, babel-plugin-transform-es2015-duplicate-keys@^6.6.0: +babel-plugin-transform-es2015-duplicate-keys@^6.6.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0: +babel-plugin-transform-es2015-for-of@^6.6.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es2015-function-name@^6.9.0: +babel-plugin-transform-es2015-function-name@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -645,21 +660,13 @@ babel-plugin-transform-es2015-function-name@^6.24.1, babel-plugin-transform-es20 babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13: +babel-plugin-transform-es2015-literals@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.6.0: +babel-plugin-transform-es2015-modules-commonjs@^6.6.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" dependencies: @@ -668,30 +675,14 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.0, babel-plugin-transform-e babel-template "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1, babel-plugin-transform-es2015-object-super@^6.3.13: +babel-plugin-transform-es2015-object-super@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.24.1, babel-plugin-transform-es2015-parameters@^6.9.0: +babel-plugin-transform-es2015-parameters@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -702,20 +693,20 @@ babel-plugin-transform-es2015-parameters@^6.24.1, babel-plugin-transform-es2015- babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.24.1, babel-plugin-transform-es2015-shorthand-properties@^6.3.13: +babel-plugin-transform-es2015-shorthand-properties@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.13: +babel-plugin-transform-es2015-spread@^6.3.13: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.24.1, babel-plugin-transform-es2015-sticky-regex@^6.3.13: +babel-plugin-transform-es2015-sticky-regex@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -723,19 +714,19 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1, babel-plugin-transform-es201 babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.6.0: +babel-plugin-transform-es2015-template-literals@^6.6.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0: +babel-plugin-transform-es2015-typeof-symbol@^6.6.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.24.1, babel-plugin-transform-es2015-unicode-regex@^6.3.13: +babel-plugin-transform-es2015-unicode-regex@^6.3.13: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -807,7 +798,7 @@ babel-plugin-transform-react-jsx@^6.24.1: babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.22.0" -babel-plugin-transform-regenerator@^6.24.1, babel-plugin-transform-regenerator@^6.9.0: +babel-plugin-transform-regenerator@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" dependencies: @@ -863,42 +854,13 @@ babel-preset-es2015-without-strict@^0.0.4: babel-plugin-transform-es2015-unicode-regex "^6.3.13" babel-plugin-transform-regenerator "^6.9.0" -babel-preset-es2015@^6.24.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - babel-preset-flow@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-react@^6.23.0, babel-preset-react@^6.5.0: +babel-preset-react@^6.5.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" dependencies: @@ -917,7 +879,7 @@ babel-preset-stage-0@^6.5.0: babel-plugin-transform-function-bind "^6.22.0" babel-preset-stage-1 "^6.24.1" -babel-preset-stage-1@^6.22.0, babel-preset-stage-1@^6.24.1: +babel-preset-stage-1@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" dependencies: @@ -1148,11 +1110,25 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bundlesize@^0.14.4: + version "0.14.4" + resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.14.4.tgz#ad53c4a1a4ba71810967575c550bc04f3d18d421" + dependencies: + axios "^0.16.2" + bytes "^2.5.0" + ci-env "^1.4.0" + commander "^2.11.0" + github-build "^1.2.0" + glob "^7.1.2" + gzip-size "^3.0.0" + prettycli "^1.4.3" + read-pkg-up "^2.0.0" + bytes@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" -bytes@2.5.0: +bytes@2.5.0, bytes@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" @@ -1228,6 +1204,14 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" @@ -1251,6 +1235,10 @@ chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" +ci-env@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.4.0.tgz#7e4c4ed1d10cedce734293e04dde94fcdfe74d67" + circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" @@ -1292,6 +1280,16 @@ codecov.io@^0.1.6: request "2.42.0" urlgrey "0.4.0" +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -1324,7 +1322,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.8.1, commander@^2.9.0: +commander@^2.11.0, commander@^2.8.1, commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -1702,10 +1700,6 @@ dateformat@^1.0.11, dateformat@^1.0.12, dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debounce@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.0.2.tgz#503cc674d8d7f737099664fb75ddbd36b9626dc6" - debug@0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" @@ -1734,7 +1728,7 @@ debug@2.6.7: dependencies: ms "2.0.0" -debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.6: +debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.4.5, debug@^2.6.6: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: @@ -1867,7 +1861,7 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" -duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -2423,6 +2417,18 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" +follow-redirects@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + dependencies: + debug "^2.2.0" + +follow-redirects@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" + dependencies: + debug "^2.4.5" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2598,6 +2604,12 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +github-build@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/github-build/-/github-build-1.2.0.tgz#b0bdb705ae4088218577e863c1a301030211051f" + dependencies: + axios "0.15.3" + github-url-from-git@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" @@ -2636,7 +2648,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2697,6 +2709,12 @@ growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + dependencies: + duplexer "^0.1.1" + handlebars@^4.0.1, handlebars@^4.0.2: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" @@ -2751,6 +2769,10 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -4160,6 +4182,12 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettycli@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5" + dependencies: + chalk "2.1.0" + private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -5034,6 +5062,12 @@ supports-color@^3.1.0, supports-color@^3.1.1: dependencies: has-flag "^1.0.0" +supports-color@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + table@^3.7.8: version "3.8.3" resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -5098,6 +5132,10 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +throttle-debounce@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-1.0.1.tgz#dad0fe130f9daf3719fdea33dc36a8e6ba7f30b5" + throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"