From b543cc150a1e1a16e8ed02475b9c2fc227578d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Thu, 14 Dec 2017 17:24:10 +0100 Subject: [PATCH 1/6] Use individual lodash packages --- src/lib/create-selector/index.js | 2 +- src/lib/create-selector/test/index.js | 2 +- src/state/chat/reducer.js | 7 ++++++- src/state/middleware.js | 2 +- src/state/selectors/can-user-send-messages.js | 2 +- src/state/selectors/get-chat-lastactivitytimestamp.js | 2 +- src/state/selectors/get-chat-status.js | 2 +- src/state/selectors/get-chat-timeline.js | 2 +- src/state/selectors/get-connection-status.js | 2 +- src/state/selectors/get-ui-currentmessage.js | 2 +- src/state/selectors/get-ui-lostfocusat.js | 2 +- src/state/selectors/get-user-geolocation.js | 2 +- src/state/selectors/get-user-groups.js | 2 +- src/state/selectors/get-user-locale.js | 2 +- src/state/selectors/get-user.js | 2 +- src/state/selectors/has-active-session.js | 2 +- src/state/selectors/is-available.js | 2 +- src/state/selectors/is-chat-assigned.js | 2 +- src/state/selectors/is-panel-minimizing.js | 2 +- src/state/selectors/is-server-reachable.js | 2 +- src/state/socketio.js | 2 +- src/ui/components/composer.jsx | 4 +++- src/ui/components/functional.js | 6 ++++-- src/ui/components/notices.jsx | 2 +- src/ui/components/test/composer.jsx | 2 +- src/ui/components/timeline.jsx | 4 +++- src/ui/components/url.js | 2 +- 27 files changed, 39 insertions(+), 28 deletions(-) diff --git a/src/lib/create-selector/index.js b/src/lib/create-selector/index.js index e0e72993..387249e1 100644 --- a/src/lib/create-selector/index.js +++ b/src/lib/create-selector/index.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { memoize } from 'lodash'; +import memoize from 'lodash/memoize'; import shallowEqual from 'react-pure-render/shallowEqual'; /** diff --git a/src/lib/create-selector/test/index.js b/src/lib/create-selector/test/index.js index f86e39e5..009de4f3 100644 --- a/src/lib/create-selector/test/index.js +++ b/src/lib/create-selector/test/index.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { filter } from 'lodash'; +import filter from 'lodash/filter'; /** * Internal dependencies diff --git a/src/state/chat/reducer.js b/src/state/chat/reducer.js index d4f0f7b8..59a52bfa 100644 --- a/src/state/chat/reducer.js +++ b/src/state/chat/reducer.js @@ -4,7 +4,12 @@ * External dependencies */ import { combineReducers } from 'redux'; -import { concat, filter, find, map, get, sortBy } from 'lodash'; +import concat from 'lodash/concat'; +import filter from 'lodash/filter'; +import find from 'lodash/find'; +import map from 'lodash/map'; +import get from 'lodash/get'; +import sortBy from 'lodash/sortBy'; /** * Internal dependencies diff --git a/src/state/middleware.js b/src/state/middleware.js index b7173b2b..c01956bc 100644 --- a/src/state/middleware.js +++ b/src/state/middleware.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { noop } from 'lodash'; +import noop from 'lodash/noop'; /** * Internal dependencies diff --git a/src/state/selectors/can-user-send-messages.js b/src/state/selectors/can-user-send-messages.js index 94c82277..26f764ba 100644 --- a/src/state/selectors/can-user-send-messages.js +++ b/src/state/selectors/can-user-send-messages.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { includes } from 'lodash'; +import includes from 'lodash/includes'; /** * Internal dependencies diff --git a/src/state/selectors/get-chat-lastactivitytimestamp.js b/src/state/selectors/get-chat-lastactivitytimestamp.js index de7dcecb..6f8407e0 100644 --- a/src/state/selectors/get-chat-lastactivitytimestamp.js +++ b/src/state/selectors/get-chat-lastactivitytimestamp.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Gets the lastActivityTimestamp diff --git a/src/state/selectors/get-chat-status.js b/src/state/selectors/get-chat-status.js index aa9323fa..2df83ed5 100644 --- a/src/state/selectors/get-chat-status.js +++ b/src/state/selectors/get-chat-status.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Gets the current happychat chat status diff --git a/src/state/selectors/get-chat-timeline.js b/src/state/selectors/get-chat-timeline.js index 62de273c..19f5f10d 100644 --- a/src/state/selectors/get-chat-timeline.js +++ b/src/state/selectors/get-chat-timeline.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { map } from 'lodash'; +import map from 'lodash/map'; /** * Internal dependencies diff --git a/src/state/selectors/get-connection-status.js b/src/state/selectors/get-connection-status.js index cc48a298..27bab5e5 100644 --- a/src/state/selectors/get-connection-status.js +++ b/src/state/selectors/get-connection-status.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Gets the current happychat connection status diff --git a/src/state/selectors/get-ui-currentmessage.js b/src/state/selectors/get-ui-currentmessage.js index 1d892f22..1e23b0b4 100644 --- a/src/state/selectors/get-ui-currentmessage.js +++ b/src/state/selectors/get-ui-currentmessage.js @@ -3,6 +3,6 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; export default state => get( state, 'ui.currentMessage' ); diff --git a/src/state/selectors/get-ui-lostfocusat.js b/src/state/selectors/get-ui-lostfocusat.js index 64fdc801..a5daad08 100644 --- a/src/state/selectors/get-ui-lostfocusat.js +++ b/src/state/selectors/get-ui-lostfocusat.js @@ -3,6 +3,6 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; export default state => get( state, 'ui.lostFocusAt' ); diff --git a/src/state/selectors/get-user-geolocation.js b/src/state/selectors/get-user-geolocation.js index 8eb62b2a..31628f04 100644 --- a/src/state/selectors/get-user-geolocation.js +++ b/src/state/selectors/get-user-geolocation.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Returns the geo location of the current user, based happychat session initiation (on ip) diff --git a/src/state/selectors/get-user-groups.js b/src/state/selectors/get-user-groups.js index fc49d8b1..f9158fdc 100644 --- a/src/state/selectors/get-user-groups.js +++ b/src/state/selectors/get-user-groups.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Internal dependencies diff --git a/src/state/selectors/get-user-locale.js b/src/state/selectors/get-user-locale.js index be43ea8f..13f0151f 100644 --- a/src/state/selectors/get-user-locale.js +++ b/src/state/selectors/get-user-locale.js @@ -3,6 +3,6 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; export default state => get( state, 'user.locale', null ); diff --git a/src/state/selectors/get-user.js b/src/state/selectors/get-user.js index 9ac8ab6f..2f2b814b 100644 --- a/src/state/selectors/get-user.js +++ b/src/state/selectors/get-user.js @@ -3,6 +3,6 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; export default state => get( state, 'user.currentUser', null ); diff --git a/src/state/selectors/has-active-session.js b/src/state/selectors/has-active-session.js index e224226b..8816d0cd 100644 --- a/src/state/selectors/has-active-session.js +++ b/src/state/selectors/has-active-session.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { includes } from 'lodash'; +import includes from 'lodash/includes'; /** * Internal dependencies diff --git a/src/state/selectors/is-available.js b/src/state/selectors/is-available.js index 9734dc80..45ef40f7 100644 --- a/src/state/selectors/is-available.js +++ b/src/state/selectors/is-available.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Internal dependencies diff --git a/src/state/selectors/is-chat-assigned.js b/src/state/selectors/is-chat-assigned.js index 117d9ccb..d023c361 100644 --- a/src/state/selectors/is-chat-assigned.js +++ b/src/state/selectors/is-chat-assigned.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Internal dependencies diff --git a/src/state/selectors/is-panel-minimizing.js b/src/state/selectors/is-panel-minimizing.js index f93b5c83..63dfc6f7 100644 --- a/src/state/selectors/is-panel-minimizing.js +++ b/src/state/selectors/is-panel-minimizing.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Gets the current happychat minimizing status diff --git a/src/state/selectors/is-server-reachable.js b/src/state/selectors/is-server-reachable.js index 708e2ed9..be977e2a 100644 --- a/src/state/selectors/is-server-reachable.js +++ b/src/state/selectors/is-server-reachable.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Internal dependencies diff --git a/src/state/socketio.js b/src/state/socketio.js index 23f82c4b..04f88884 100644 --- a/src/state/socketio.js +++ b/src/state/socketio.js @@ -4,7 +4,7 @@ * External dependencies */ import IO from 'socket.io-client'; -import { isString } from 'lodash'; +import isString from 'lodash/isString'; import debugFactory from 'debug'; /** diff --git a/src/ui/components/composer.jsx b/src/ui/components/composer.jsx index 918f0338..ca595c2b 100644 --- a/src/ui/components/composer.jsx +++ b/src/ui/components/composer.jsx @@ -7,7 +7,9 @@ import classNames from 'classnames'; import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; -import { get, isEmpty, throttle } from 'lodash'; +import get from 'lodash/get'; +import isEmpty from 'lodash/isEmpty'; +import throttle from 'lodash/throttle'; /** * Internal dependencies diff --git a/src/ui/components/functional.js b/src/ui/components/functional.js index 4d7cb94d..f15c252b 100644 --- a/src/ui/components/functional.js +++ b/src/ui/components/functional.js @@ -3,8 +3,10 @@ /** * External dependencies */ - -import { find, forEach as iterate, get, map as collect } from 'lodash'; +import find from 'lodash/find'; +import iterate from 'lodash/forEach'; +import get from 'lodash/get'; +import collect from 'lodash/map'; /* * Returns a function that checks for props that have a truthy `propkey` (uses lodash/object/get diff --git a/src/ui/components/notices.jsx b/src/ui/components/notices.jsx index 890eecf6..d25f0efa 100644 --- a/src/ui/components/notices.jsx +++ b/src/ui/components/notices.jsx @@ -5,7 +5,7 @@ */ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { get } from 'lodash'; +import get from 'lodash/get'; /** * Internal dependencies diff --git a/src/ui/components/test/composer.jsx b/src/ui/components/test/composer.jsx index 478c1932..c5924d01 100644 --- a/src/ui/components/test/composer.jsx +++ b/src/ui/components/test/composer.jsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { shallow } from 'enzyme'; -import { noop } from 'lodash'; +import noop from 'lodash/noop'; /** * Internal dependencies diff --git a/src/ui/components/timeline.jsx b/src/ui/components/timeline.jsx index de0db495..c3e29ac0 100644 --- a/src/ui/components/timeline.jsx +++ b/src/ui/components/timeline.jsx @@ -7,7 +7,9 @@ import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import classnames from 'classnames'; -import { assign, isArray, isEmpty } from 'lodash'; +import assign from 'lodash/assign'; +import isArray from 'lodash/isArray'; +import isEmpty from 'lodash/isEmpty'; /** * Internal dependencies diff --git a/src/ui/components/url.js b/src/ui/components/url.js index 4203c75a..f915ee57 100644 --- a/src/ui/components/url.js +++ b/src/ui/components/url.js @@ -3,7 +3,7 @@ /** * External dependencies */ -import { startsWith } from 'lodash'; +import startsWith from 'lodash/startsWith'; const schemeRegex = /^\w+:\/\//; From 77495cbffe09bb5a7feb464e7ce9b248297c140f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Thu, 14 Dec 2017 17:24:40 +0100 Subject: [PATCH 2/6] Add npm run analyze-bundles command --- .gitignore | 1 + package-lock.json | 83 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 ++ 3 files changed, 87 insertions(+) diff --git a/.gitignore b/.gitignore index 0922a601..a297ec14 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ tokens targets/standalone/public/tokens targets/standalone/public/happychat.css targets/standalone/public/happychat.js +stats.json diff --git a/package-lock.json b/package-lock.json index d387dc91..65155f2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -348,6 +348,12 @@ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", "dev": true }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1763,6 +1769,12 @@ "delayed-stream": "1.0.0" } }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -2387,6 +2399,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "ejs": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", + "dev": true + }, "electron-to-chromium": { "version": "1.3.27", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz", @@ -3137,6 +3155,12 @@ "minimatch": "3.0.4" } }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", + "dev": true + }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", @@ -3497,6 +3521,15 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, "handle-thing": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", @@ -5979,6 +6012,12 @@ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, "opn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", @@ -8790,6 +8829,50 @@ } } }, + "webpack-bundle-analyzer": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.1.tgz", + "integrity": "sha512-a+UcvlsXvCmclNgfThT8PVyuJKd029By7CxkYEbNNCfs0Lqj9gagjkdv3S3MBvCIKBaUGYs8l4UpiVI0bFoh2Q==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "chalk": "1.1.3", + "commander": "2.12.2", + "ejs": "2.5.7", + "express": "4.16.2", + "filesize": "3.5.11", + "gzip-size": "3.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "opener": "1.4.3", + "ws": "3.3.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "ws": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz", + "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + } + } + }, "webpack-dev-middleware": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", diff --git a/package.json b/package.json index d69d790d..8fd3e239 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "description": "", "main": "./index.js", "scripts": { + "preanalyze-bundles": "webpack --config webpack.standalone.config.js --profile --json > stats.json", + "analyze-bundles": "webpack-bundle-analyzer stats.json ./targets/standalone/public/", "build": "run-p build:*", "build:standalone": "run-p build:standalone:*", "build:standalone:css": "node-sass src/ui/index.scss targets/standalone/public/happychat.css", @@ -42,6 +44,7 @@ "prettier": "github:automattic/calypso-prettier#717e62ee", "react-test-renderer": "15.6.2", "webpack": "3.8.1", + "webpack-bundle-analyzer": "2.9.1", "webpack-dev-server": "2.9.4" }, "dependencies": { From 0fb1783a7d85e87c608eb387c9fa2f38f2cb5976 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Fri, 15 Dec 2017 09:07:46 +0100 Subject: [PATCH 3/6] Update webpack to 3.10 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 65155f2d..e0c494bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8630,14 +8630,14 @@ "dev": true }, "webpack": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", - "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", "dev": true, "requires": { "acorn": "5.2.1", "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.0", + "ajv": "5.5.1", "ajv-keywords": "2.1.1", "async": "2.6.0", "enhanced-resolve": "3.4.1", @@ -8660,9 +8660,9 @@ }, "dependencies": { "ajv": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz", - "integrity": "sha1-6yhAdG6dxIvV4GOjbj/UAMXqtak=", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", "dev": true, "requires": { "co": "4.6.0", diff --git a/package.json b/package.json index 8fd3e239..4c6fd0a2 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "npm-run-all": "4.0.2", "prettier": "github:automattic/calypso-prettier#717e62ee", "react-test-renderer": "15.6.2", - "webpack": "3.8.1", + "webpack": "3.10.0", "webpack-bundle-analyzer": "2.9.1", "webpack-dev-server": "2.9.4" }, From b361b5da2c22679ad568b90e203b58db04e325c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Fri, 15 Dec 2017 13:37:18 +0100 Subject: [PATCH 4/6] Add uglify to the webpack chain --- package-lock.json | 403 +++++++++++++++++++++++++++-------- package.json | 1 + webpack.standalone.config.js | 2 + webpack.wordpress.config.js | 2 + 4 files changed, 323 insertions(+), 85 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0c494bb..dcb01912 100644 --- a/package-lock.json +++ b/package-lock.json @@ -173,8 +173,7 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "1.1.4", @@ -1247,8 +1246,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64-arraybuffer": { "version": "0.1.2", @@ -1316,6 +1314,11 @@ "inherits": "2.0.3" } }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", @@ -1390,7 +1393,6 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1559,6 +1561,26 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cacache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", + "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.0.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -1667,6 +1689,11 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, "ci-info": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", @@ -1731,8 +1758,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "code-point-at": { "version": "1.1.0", @@ -1772,14 +1798,12 @@ "commander": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", - "dev": true + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "component-bind": { "version": "1.0.0", @@ -1840,14 +1864,12 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3", @@ -1922,6 +1944,19 @@ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", @@ -2093,6 +2128,11 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -2383,6 +2423,17 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2446,6 +2497,14 @@ "iconv-lite": "0.4.19" } }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "requires": { + "once": "1.4.0" + } + }, "engine.io-client": { "version": "1.6.8", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.8.tgz", @@ -2584,7 +2643,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, "requires": { "prr": "0.0.0" } @@ -3072,14 +3130,12 @@ "fast-deep-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fast-levenshtein": { "version": "2.0.6", @@ -3210,7 +3266,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, "requires": { "commondir": "1.0.1", "make-dir": "1.1.0", @@ -3221,7 +3276,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "2.0.0" } @@ -3250,6 +3304,15 @@ "integrity": "sha1-4cDOtvgCuiHRbC/ajkLIJPQPRoQ=", "dev": true }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3310,11 +3373,30 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fstream": { "version": "1.0.11", @@ -3416,7 +3498,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -3495,8 +3576,7 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "graphql": { "version": "0.10.1", @@ -3847,6 +3927,11 @@ "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", @@ -3866,8 +3951,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { "version": "2.0.0", @@ -3899,7 +3983,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -5121,8 +5204,7 @@ "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, "json-stable-stringify": { "version": "1.0.1", @@ -5277,7 +5359,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -5357,7 +5438,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -5367,7 +5447,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", - "dev": true, "requires": { "pify": "3.0.0" } @@ -5554,7 +5633,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -5562,14 +5640,29 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.1", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.3.5", + "stream-each": "1.2.2", + "through2": "2.0.3" + } }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" } @@ -5579,6 +5672,19 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", "integrity": "sha512-Rf6jiHPEfxp9+dlzxPTmRHbvoFXsh2L/U8hOupUMpnuecHQmI6cF6lUbJl3QqKPko1u6ujO+FxtcajLVfLpAtA==" }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "ms": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", @@ -6001,7 +6107,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -6139,14 +6244,12 @@ "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "1.1.0" } @@ -6163,6 +6266,16 @@ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", @@ -6245,14 +6358,12 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -6328,8 +6439,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", @@ -6350,7 +6460,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, "requires": { "find-up": "2.1.0" } @@ -6524,7 +6633,7 @@ "globby": "6.1.0", "graphql": "0.10.1", "ignore": "3.3.5", - "jest-docblock": "21.3.0-beta.11", + "jest-docblock": "21.3.0-beta.14", "jest-validate": "21.1.0", "leven": "2.1.0", "mem": "1.1.0", @@ -6542,9 +6651,9 @@ }, "dependencies": { "@types/node": { - "version": "6.0.92", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.92.tgz", - "integrity": "sha512-awEYSSTn7dauwVCYSx2CJaPTu0Z1Ht2oR1b2AD3CYao6ZRb+opb6EL43fzmD7eMFgMHzTBWSUzlWSD+S8xN0Nw==", + "version": "6.0.94", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.94.tgz", + "integrity": "sha512-CwopBfOTONzc1bDDTh8/KzW+zssiIPw+nSf27Y1cuGIkZJ7zuhkig6xO5p9pBW/RY99DznOMCIj+FXx8EIy+qw==", "dev": true }, "babel-code-frame": { @@ -6642,9 +6751,9 @@ "dev": true }, "jest-docblock": { - "version": "21.3.0-beta.11", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.3.0-beta.11.tgz", - "integrity": "sha512-sxSwZUm7JyCO8dverup5g/OKJhjYRrBdgEdezIO1qAmMGWuza7ewovpfDmxp+JLvlm0i2WRFKUQNNIMGmPGTVg==", + "version": "21.3.0-beta.14", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.3.0-beta.14.tgz", + "integrity": "sha512-rKJrMcQEENAJSKUMlqdUzq4Hy5B0MkoV0GnogBlqBOrX6w+Hz8FAGNHCn4PYCyRIVXm4k2d1bscpD4Tw4c/Zww==", "dev": true, "requires": { "detect-newline": "2.1.0" @@ -6674,7 +6783,7 @@ "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", "dev": true, "requires": { - "@types/node": "6.0.92" + "@types/node": "6.0.94" } }, "pify": { @@ -6743,6 +6852,11 @@ "asap": "2.0.6" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, "prop-types": { "version": "15.5.10", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", @@ -6765,8 +6879,7 @@ "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" }, "ps-tree": { "version": "1.1.0", @@ -6780,8 +6893,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "public-encrypt": { "version": "4.0.0", @@ -6796,6 +6908,25 @@ "randombytes": "2.0.5" } }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "pump": "1.0.3" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -7331,7 +7462,6 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, "requires": { "glob": "7.1.2" } @@ -7365,6 +7495,14 @@ "once": "1.4.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "1.2.0" + } + }, "rx-lite": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", @@ -7481,6 +7619,27 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", + "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -7567,6 +7726,11 @@ } } }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=" + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -7808,8 +7972,7 @@ "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" }, "source-map": { "version": "0.5.7", @@ -7941,6 +8104,14 @@ "tweetnacl": "0.14.5" } }, + "ssri": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", + "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -7975,6 +8146,15 @@ "duplexer": "0.1.1" } }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + } + }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", @@ -7996,6 +8176,11 @@ } } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -8224,6 +8409,15 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, "thunky": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", @@ -8350,8 +8544,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typescript": { "version": "2.5.3", @@ -8405,14 +8598,34 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.4.tgz", + "integrity": "sha512-fRrOJ5tv6YCsJIhP9mPRnfgyo4DVNSIfNOa7Gs9aT1NNpeJc85W7GcbVxQgc+9rU3No6tnkbMqZ4xsgRBU+HGQ==", "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "cacache": "10.0.1", + "find-cache-dir": "1.0.0", + "schema-utils": "0.3.0", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.2.2", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-es": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.2.tgz", + "integrity": "sha512-l+s5VLzFwGJfS+fbqaGf/Dfwo1MF13jLOF2ekL0PytzqEqQ6cVppvHf4jquqFok+35USMpKjqkYxy6pQyUcuug==", + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + } + } } }, "ultron": { @@ -8432,6 +8645,22 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "requires": { + "imurmurhash": "0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -8806,6 +9035,17 @@ "has-flag": "2.0.0" } }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", @@ -9048,7 +9288,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, "requires": { "source-list-map": "2.0.0", "source-map": "0.6.1" @@ -9057,8 +9296,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -9150,7 +9388,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", - "dev": true, "requires": { "errno": "0.1.4", "xtend": "4.0.1" @@ -9211,8 +9448,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "0.2.1", @@ -9257,20 +9493,17 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "9.0.1", diff --git a/package.json b/package.json index 4c6fd0a2..1d0c998a 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "redux-devtools-extension": "2.13.2", "socket.io-client": "1.4.5", "twemoji": "2.3", + "uglifyjs-webpack-plugin": "1.1.4", "uuid": "2.0.1", "wpcom-oauth-cors": "1.0.1", "wpcom-xhr-request": "1.1.1" diff --git a/webpack.standalone.config.js b/webpack.standalone.config.js index c2be4341..178dbfdf 100644 --- a/webpack.standalone.config.js +++ b/webpack.standalone.config.js @@ -1,5 +1,6 @@ /** @format */ const path = require( 'path' ); +const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin' ); module.exports = { entry: './targets/standalone/index.js', @@ -15,6 +16,7 @@ module.exports = { }, ], }, + plugins: [ new UglifyJsPlugin() ], resolve: { extensions: [ '.js', '.jsx' ], modules: [ path.resolve( __dirname ), path.resolve( __dirname, 'node_modules' ) ], diff --git a/webpack.wordpress.config.js b/webpack.wordpress.config.js index 61a15a64..206872bc 100644 --- a/webpack.wordpress.config.js +++ b/webpack.wordpress.config.js @@ -1,5 +1,6 @@ /** @format */ const path = require( 'path' ); +const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin' ); module.exports = { entry: './targets/wordpress/index.js', @@ -15,6 +16,7 @@ module.exports = { }, ], }, + plugins: [ new UglifyJsPlugin() ], resolve: { extensions: [ '.js', '.jsx' ], modules: [ path.resolve( __dirname ), path.resolve( __dirname, 'node_modules' ) ], From 4a7cff220870e6817879284fb289ec8ec39a8297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Fri, 15 Dec 2017 13:53:10 +0100 Subject: [PATCH 5/6] Fix path for webpack-bundle-analyzer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1d0c998a..b0bd63a2 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "./index.js", "scripts": { "preanalyze-bundles": "webpack --config webpack.standalone.config.js --profile --json > stats.json", - "analyze-bundles": "webpack-bundle-analyzer stats.json ./targets/standalone/public/", + "analyze-bundles": "webpack-bundle-analyzer stats.json .", "build": "run-p build:*", "build:standalone": "run-p build:standalone:*", "build:standalone:css": "node-sass src/ui/index.scss targets/standalone/public/happychat.css", From dcdc33822aad355e1a639c488baf5fe649831c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maneiro?= Date: Fri, 15 Dec 2017 13:58:49 +0100 Subject: [PATCH 6/6] Tell webpack we want to compile for production --- webpack.standalone.config.js | 8 +++++++- webpack.wordpress.config.js | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/webpack.standalone.config.js b/webpack.standalone.config.js index 178dbfdf..2aa4ee4e 100644 --- a/webpack.standalone.config.js +++ b/webpack.standalone.config.js @@ -1,5 +1,6 @@ /** @format */ const path = require( 'path' ); +const webpack = require( 'webpack' ); const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin' ); module.exports = { @@ -16,7 +17,12 @@ module.exports = { }, ], }, - plugins: [ new UglifyJsPlugin() ], + plugins: [ + new webpack.DefinePlugin( { + 'process.env.NODE_ENV': JSON.stringify( 'production' ), + } ), + new UglifyJsPlugin(), + ], resolve: { extensions: [ '.js', '.jsx' ], modules: [ path.resolve( __dirname ), path.resolve( __dirname, 'node_modules' ) ], diff --git a/webpack.wordpress.config.js b/webpack.wordpress.config.js index 206872bc..44c7a2f0 100644 --- a/webpack.wordpress.config.js +++ b/webpack.wordpress.config.js @@ -1,5 +1,6 @@ /** @format */ const path = require( 'path' ); +const webpack = require( 'webpack' ); const UglifyJsPlugin = require( 'uglifyjs-webpack-plugin' ); module.exports = { @@ -16,7 +17,12 @@ module.exports = { }, ], }, - plugins: [ new UglifyJsPlugin() ], + plugins: [ + new webpack.DefinePlugin( { + 'process.env.NODE_ENV': JSON.stringify( 'production' ), + } ), + new UglifyJsPlugin(), + ], resolve: { extensions: [ '.js', '.jsx' ], modules: [ path.resolve( __dirname ), path.resolve( __dirname, 'node_modules' ) ],