diff --git a/lib/cookieApi.js b/lib/cookieApi.js new file mode 100644 index 0000000..f261e96 --- /dev/null +++ b/lib/cookieApi.js @@ -0,0 +1,26 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getCookie = undefined; + +var _jsCookie = require('js-cookie'); + +var _jsCookie2 = _interopRequireDefault(_jsCookie); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var getCookie = function getCookie(name) { + return _jsCookie2.default.get(name); +}; + +var setCookie = function setCookie(name, value) { + var expiry = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 365; + + _jsCookie2.default.set(name, value, { expires: expiry, path: '/' }); +}; + +exports.getCookie = getCookie; +exports.default = setCookie; +//# sourceMappingURL=cookieApi.js.map \ No newline at end of file diff --git a/lib/cookieApi.js.map b/lib/cookieApi.js.map new file mode 100644 index 0000000..0ee4a6f --- /dev/null +++ b/lib/cookieApi.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/cookieApi.js"],"names":["getCookie","get","name","setCookie","value","expiry","set","expires","path"],"mappings":";;;;;;;AAAA;;;;;;AAEA,IAAMA,YAAY,SAAZA,SAAY;AAAA,WAAQ,mBAASC,GAAT,CAAaC,IAAb,CAAR;AAAA,CAAlB;;AAEA,IAAMC,YAAY,SAAZA,SAAY,CAACD,IAAD,EAAOE,KAAP,EAA+B;AAAA,QAAjBC,MAAiB,uEAAR,GAAQ;;AAC7C,uBAASC,GAAT,CAAaJ,IAAb,EAAmBE,KAAnB,EAA0B,EAAEG,SAASF,MAAX,EAAmBG,MAAM,GAAzB,EAA1B;AACH,CAFD;;QAISR,S,GAAAA,S;kBACMG,S","file":"cookieApi.js","sourcesContent":["import jsCookie from 'js-cookie';\n\nconst getCookie = name => jsCookie.get(name);\n\nconst setCookie = (name, value, expiry = 365) => {\n jsCookie.set(name, value, { expires: expiry, path: '/' });\n};\n\nexport { getCookie };\nexport default setCookie;\n"]} \ No newline at end of file diff --git a/lib/getStateFromCookies.js b/lib/getStateFromCookies.js new file mode 100644 index 0000000..d172a7c --- /dev/null +++ b/lib/getStateFromCookies.js @@ -0,0 +1,63 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _cookieApi = require('./cookieApi'); + +/** + * return the node referenced by path in state. + * @param {Object} path + * @return {Object} node reference + **/ +function pathSlicer(path) { + var getSubtree = function getSubtree(subtree, key) { + if (key.indexOf('.') > -1) { + var remaining = key.split('.').slice(1).join('.'); + + return getSubtree(subtree[key.split('.')[0]], remaining); + } + return subtree ? subtree[key] : subtree; + }; + + return function (state) { + return getSubtree(state, path); + }; +} + +/** + * read browser cookie into state + * @param {Object} preloaded state + * @param {Object} paths + * @param {Object} get Cookie implementation + * @return {Object} new state + **/ +var getStateFromCookies = function getStateFromCookies(preloadedState, paths) { + var getCookie = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _cookieApi.getCookie; + + Object.keys(paths).forEach(function (pathToState) { + var pathConf = paths[pathToState]; + var pathSplit = pathToState.split('.'); + var terminalKey = pathSplit.slice(-1); + + // read cookies + var storedState = getCookie(pathConf.name); + + // get a slice of state path where to put cookie value + var stateTree = pathSplit.length > 1 ? pathSlicer(pathSplit.slice(0, -1).join('.'))(preloadedState) : preloadedState; + + if (storedState) { + try { + stateTree[terminalKey] = JSON.parse(storedState); + } catch (err) { + console.error('Unable to set state from cookie at ' + pathConf.name + '. Error: ', err); + } + } + }); + + return preloadedState; +}; + +exports.default = getStateFromCookies; +//# sourceMappingURL=getStateFromCookies.js.map \ No newline at end of file diff --git a/lib/getStateFromCookies.js.map b/lib/getStateFromCookies.js.map new file mode 100644 index 0000000..a8d66ba --- /dev/null +++ b/lib/getStateFromCookies.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/getStateFromCookies.js"],"names":["pathSlicer","path","getSubtree","subtree","key","indexOf","remaining","split","slice","join","state","getStateFromCookies","preloadedState","paths","getCookie","Object","keys","forEach","pathConf","pathToState","pathSplit","terminalKey","storedState","name","stateTree","length","JSON","parse","err","console","error"],"mappings":";;;;;;AAAA;;AAEA;;;;;AAKA,SAASA,UAAT,CAAoBC,IAApB,EAA0B;AACtB,QAAMC,aAAa,SAAbA,UAAa,CAACC,OAAD,EAAUC,GAAV,EAAkB;AACjC,YAAIA,IAAIC,OAAJ,CAAY,GAAZ,IAAmB,CAAC,CAAxB,EAA2B;AACvB,gBAAMC,YAAYF,IAAIG,KAAJ,CAAU,GAAV,EAAeC,KAAf,CAAqB,CAArB,EAAwBC,IAAxB,CAA6B,GAA7B,CAAlB;;AAEA,mBAAOP,WAAWC,QAAQC,IAAIG,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAR,CAAX,EAAuCD,SAAvC,CAAP;AACH;AACD,eAAOH,UAAUA,QAAQC,GAAR,CAAV,GAAyBD,OAAhC;AACH,KAPD;;AASA,WAAO,UAACO,KAAD;AAAA,eAAWR,WAAWQ,KAAX,EAAkBT,IAAlB,CAAX;AAAA,KAAP;AACH;;AAED;;;;;;;AAOA,IAAMU,sBAAsB,SAAtBA,mBAAsB,CACxBC,cADwB,EAExBC,KAFwB,EAIvB;AAAA,QADDC,SACC;;AACDC,WAAOC,IAAP,CAAYH,KAAZ,EAAmBI,OAAnB,CAA2B,uBAAe;AACtC,YAAMC,WAAWL,MAAMM,WAAN,CAAjB;AACA,YAAMC,YAAYD,YAAYZ,KAAZ,CAAkB,GAAlB,CAAlB;AACA,YAAMc,cAAcD,UAAUZ,KAAV,CAAgB,CAAC,CAAjB,CAApB;;AAEA;AACA,YAAMc,cAAcR,UAAUI,SAASK,IAAnB,CAApB;;AAEA;AACA,YAAMC,YAAYJ,UAAUK,MAAV,GAAmB,CAAnB,GACdzB,WAAWoB,UAAUZ,KAAV,CAAgB,CAAhB,EAAmB,CAAC,CAApB,EAAuBC,IAAvB,CAA4B,GAA5B,CAAX,EAA6CG,cAA7C,CADc,GAEdA,cAFJ;;AAIA,YAAIU,WAAJ,EAAiB;AACb,gBAAI;AACAE,0BAAUH,WAAV,IAAyBK,KAAKC,KAAL,CAAWL,WAAX,CAAzB;AACH,aAFD,CAEE,OAAOM,GAAP,EAAY;AACVC,wBAAQC,KAAR,yCAAoDZ,SAASK,IAA7D,gBAA8EK,GAA9E;AACH;AACJ;AACJ,KApBD;;AAsBA,WAAOhB,cAAP;AACH,CA5BD;;kBA8BeD,mB","file":"getStateFromCookies.js","sourcesContent":["import { getCookie as getBrowserCookie } from './cookieApi';\n\n/**\n * return the node referenced by path in state.\n * @param {Object} path\n * @return {Object} node reference\n **/\nfunction pathSlicer(path) {\n const getSubtree = (subtree, key) => {\n if (key.indexOf('.') > -1) {\n const remaining = key.split('.').slice(1).join('.');\n\n return getSubtree(subtree[key.split('.')[0]], remaining);\n }\n return subtree ? subtree[key] : subtree;\n };\n\n return (state) => getSubtree(state, path);\n}\n\n/**\n * read browser cookie into state\n * @param {Object} preloaded state\n * @param {Object} paths\n * @param {Object} get Cookie implementation\n * @return {Object} new state\n **/\nconst getStateFromCookies = (\n preloadedState,\n paths,\n getCookie = getBrowserCookie\n) => {\n Object.keys(paths).forEach(pathToState => {\n const pathConf = paths[pathToState];\n const pathSplit = pathToState.split('.');\n const terminalKey = pathSplit.slice(-1);\n\n // read cookies\n const storedState = getCookie(pathConf.name);\n\n // get a slice of state path where to put cookie value\n const stateTree = pathSplit.length > 1 ? (\n pathSlicer(pathSplit.slice(0, -1).join('.'))(preloadedState)\n ) : preloadedState;\n\n if (storedState) {\n try {\n stateTree[terminalKey] = JSON.parse(storedState);\n } catch (err) {\n console.error(`Unable to set state from cookie at ${pathConf.name}. Error: `, err);\n }\n }\n });\n\n return preloadedState;\n};\n\nexport default getStateFromCookies;\n"]} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..c62e5f8 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,20 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getStateFromCookies = undefined; + +var _reduxCookiesMiddleware = require('./reduxCookiesMiddleware'); + +var _reduxCookiesMiddleware2 = _interopRequireDefault(_reduxCookiesMiddleware); + +var _getStateFromCookies = require('./getStateFromCookies'); + +var _getStateFromCookies2 = _interopRequireDefault(_getStateFromCookies); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.getStateFromCookies = _getStateFromCookies2.default; +exports.default = _reduxCookiesMiddleware2.default; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..7e35161 --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.js"],"names":["getStateFromCookies"],"mappings":";;;;;;;AAAA;;;;AACA;;;;;;QAESA,mB","file":"index.js","sourcesContent":["import reduxCookiesMiddleware from './reduxCookiesMiddleware';\nimport getStateFromCookies from './getStateFromCookies';\n\nexport { getStateFromCookies };\nexport default reduxCookiesMiddleware;\n"]} \ No newline at end of file diff --git a/lib/reduxCookiesMiddleware.js b/lib/reduxCookiesMiddleware.js new file mode 100644 index 0000000..8aa42e1 --- /dev/null +++ b/lib/reduxCookiesMiddleware.js @@ -0,0 +1,84 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +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; }; + +var _cookieApi = require('./cookieApi'); + +var _cookieApi2 = _interopRequireDefault(_cookieApi); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Middleware to persist state in cookies. + * @param {Object} paths + * @param {Object} customOptions + */ +var reduxCookiesMiddleware = function reduxCookiesMiddleware() { + var paths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var customOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var options = _extends({ + logger: console.error, + setCookie: _cookieApi2.default, + defaultEqualityCheck: function defaultEqualityCheck(a, b) { + return a === b; + }, + defaultDeleteCheck: function defaultDeleteCheck(value) { + return typeof value === 'undefined'; + } + }, customOptions); + + var _getVal = function _getVal(state, path) { + var pathPartsList = path.split('.'); + var value = state; + var index = void 0; + + for (index = 0; index < pathPartsList.length; index++) { + var pathPart = pathPartsList[index]; + + if (Object.hasOwnProperty.call(value, pathPart)) { + value = value[pathPart]; + } else { + options.logger('state not found at store.getState().' + path); + break; + } + } + + return index === pathPartsList.length ? value : null; + }; + + return function (store) { + return function (next) { + return function (action) { + var prevState = store.getState(); + var result = next(action); + var nextState = store.getState(); + + Object.keys(paths).forEach(function (pathToState) { + var prevVal = _getVal(prevState, pathToState); + var nextVal = _getVal(nextState, pathToState); + var state = paths[pathToState]; + var equalityCheck = state.equalityCheck || options.defaultEqualityCheck; + var deleteCheck = state.deleteCheck || options.defaultDeleteCheck; + + if (!equalityCheck(prevVal, nextVal)) { + if (deleteCheck(nextVal)) { + options.setCookie(state.name, JSON.stringify(nextVal), 0); + } else { + options.setCookie(state.name, JSON.stringify(nextVal)); + } + } + }); + + return result; + }; + }; + }; +}; + +exports.default = reduxCookiesMiddleware; +//# sourceMappingURL=reduxCookiesMiddleware.js.map \ No newline at end of file diff --git a/lib/reduxCookiesMiddleware.js.map b/lib/reduxCookiesMiddleware.js.map new file mode 100644 index 0000000..371673d --- /dev/null +++ b/lib/reduxCookiesMiddleware.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/reduxCookiesMiddleware.js"],"names":["reduxCookiesMiddleware","paths","customOptions","options","logger","console","error","setCookie","defaultEqualityCheck","a","b","defaultDeleteCheck","value","_getVal","state","path","pathPartsList","split","index","length","pathPart","Object","hasOwnProperty","call","prevState","store","getState","result","next","action","nextState","keys","forEach","prevVal","pathToState","nextVal","equalityCheck","deleteCheck","name","JSON","stringify"],"mappings":";;;;;;;;AAAA;;;;;;AAEA;;;;;AAKA,IAAMA,yBAAyB,SAAzBA,sBAAyB,GAAoC;AAAA,QAAnCC,KAAmC,uEAA3B,EAA2B;AAAA,QAAvBC,aAAuB,uEAAP,EAAO;;AAC/D,QAAMC;AACFC,gBAAQC,QAAQC,KADd;AAEFC,sCAFE;AAGFC,8BAAsB,8BAACC,CAAD,EAAIC,CAAJ;AAAA,mBAAWD,MAAMC,CAAjB;AAAA,SAHpB;AAIFC,4BAAoB,4BAACC,KAAD;AAAA,mBAAY,OAAOA,KAAP,KAAiB,WAA7B;AAAA;AAJlB,OAKCV,aALD,CAAN;;AAQA,QAAMW,UAAU,SAAVA,OAAU,CAACC,KAAD,EAAQC,IAAR,EAAiB;AAC7B,YAAMC,gBAAgBD,KAAKE,KAAL,CAAW,GAAX,CAAtB;AACA,YAAIL,QAAQE,KAAZ;AACA,YAAII,cAAJ;;AAEA,aAAKA,QAAQ,CAAb,EAAgBA,QAAQF,cAAcG,MAAtC,EAA8CD,OAA9C,EAAuD;AACnD,gBAAME,WAAWJ,cAAcE,KAAd,CAAjB;;AAEA,gBAAIG,OAAOC,cAAP,CAAsBC,IAAtB,CAA2BX,KAA3B,EAAkCQ,QAAlC,CAAJ,EAAiD;AAC7CR,wBAAQA,MAAMQ,QAAN,CAAR;AACH,aAFD,MAEO;AACHjB,wBAAQC,MAAR,0CAAsDW,IAAtD;AACA;AACH;AACJ;;AAED,eAAQG,UAAUF,cAAcG,MAAzB,GAAmCP,KAAnC,GAA2C,IAAlD;AACH,KAjBD;;AAmBA,WAAO;AAAA,eAAS;AAAA,mBAAQ,kBAAU;AAC9B,oBAAMY,YAAYC,MAAMC,QAAN,EAAlB;AACA,oBAAMC,SAASC,KAAKC,MAAL,CAAf;AACA,oBAAMC,YAAYL,MAAMC,QAAN,EAAlB;;AAEAL,uBAAOU,IAAP,CAAY9B,KAAZ,EAAmB+B,OAAnB,CAA2B,uBAAe;AACtC,wBAAMC,UAAUpB,QAAQW,SAAR,EAAmBU,WAAnB,CAAhB;AACA,wBAAMC,UAAUtB,QAAQiB,SAAR,EAAmBI,WAAnB,CAAhB;AACA,wBAAMpB,QAAQb,MAAMiC,WAAN,CAAd;AACA,wBAAME,gBAAgBtB,MAAMsB,aAAN,IAAuBjC,QAAQK,oBAArD;AACA,wBAAM6B,cAAcvB,MAAMuB,WAAN,IAAqBlC,QAAQQ,kBAAjD;;AAEA,wBAAI,CAACyB,cAAcH,OAAd,EAAuBE,OAAvB,CAAL,EAAsC;AAClC,4BAAIE,YAAYF,OAAZ,CAAJ,EAA0B;AACtBhC,oCAAQI,SAAR,CAAkBO,MAAMwB,IAAxB,EAA8BC,KAAKC,SAAL,CAAeL,OAAf,CAA9B,EAAuD,CAAvD;AACH,yBAFD,MAEO;AACHhC,oCAAQI,SAAR,CAAkBO,MAAMwB,IAAxB,EAA8BC,KAAKC,SAAL,CAAeL,OAAf,CAA9B;AACH;AACJ;AACJ,iBAdD;;AAgBA,uBAAOR,MAAP;AACH,aAtBe;AAAA,SAAT;AAAA,KAAP;AAuBH,CAnDD;;kBAqDe3B,sB","file":"reduxCookiesMiddleware.js","sourcesContent":["import setCookie from './cookieApi';\n\n/**\n * Middleware to persist state in cookies.\n * @param {Object} paths\n * @param {Object} customOptions\n */\nconst reduxCookiesMiddleware = (paths = {}, customOptions = {}) => {\n const options = {\n logger: console.error,\n setCookie,\n defaultEqualityCheck: (a, b) => (a === b),\n defaultDeleteCheck: (value) => (typeof value === 'undefined'),\n ...customOptions\n };\n\n const _getVal = (state, path) => {\n const pathPartsList = path.split('.');\n let value = state;\n let index;\n\n for (index = 0; index < pathPartsList.length; index++) {\n const pathPart = pathPartsList[index];\n\n if (Object.hasOwnProperty.call(value, pathPart)) {\n value = value[pathPart];\n } else {\n options.logger(`state not found at store.getState().${path}`);\n break;\n }\n }\n\n return (index === pathPartsList.length) ? value : null;\n };\n\n return store => next => action => {\n const prevState = store.getState();\n const result = next(action);\n const nextState = store.getState();\n\n Object.keys(paths).forEach(pathToState => {\n const prevVal = _getVal(prevState, pathToState);\n const nextVal = _getVal(nextState, pathToState);\n const state = paths[pathToState];\n const equalityCheck = state.equalityCheck || options.defaultEqualityCheck;\n const deleteCheck = state.deleteCheck || options.defaultDeleteCheck;\n\n if (!equalityCheck(prevVal, nextVal)) {\n if (deleteCheck(nextVal)) {\n options.setCookie(state.name, JSON.stringify(nextVal), 0);\n } else {\n options.setCookie(state.name, JSON.stringify(nextVal));\n }\n }\n });\n\n return result;\n };\n};\n\nexport default reduxCookiesMiddleware;\n"]} \ No newline at end of file diff --git a/package.json b/package.json index f3af2ae..ac4e70b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "middleware", "react" ], - "main": "dist/index.js", + "main": "lib/index.js", "homepage": "https://github.com/grofers/redux-cookies-middleware", "bugs": { "url": "https://github.com/grofers/redux-cookies-middleware/issues", @@ -24,11 +24,11 @@ "url": "https://github.com/grofers/redux-cookies-middleware.git" }, "scripts": { - "clear:dist": "rm -rf dist && mkdir dist", - "build": "npm run clear:dist && babel src --out-dir dist --source-maps", + "clear:lib": "rm -rf lib && mkdir lib", + "build": "npm run clear:lib && babel src --out-dir lib --source-maps", "postinstall": "npm run build", "test": "karma start karma.conf.js --log-level debug", - "lint": "eslint . --ext .js --ext .jsx -f node_modules/eslint-detailed-reporter/lib/detailed.js -o ./eslint/report.html" + "lint": "eslint . --ext .js -f node_modules/eslint-detailed-reporter/lib/detailed.js -o ./eslint/report.html" }, "devDependencies": { "babel-core": "^6.25.0", @@ -40,7 +40,6 @@ "eslint-detailed-reporter": "^0.7.2", "eslint-plugin-babel": "^3.3.0", "eslint-plugin-import": "^1.14.0", - "eslint-plugin-jsx-a11y": "^2.1.0", "eslint-plugin-react": "^6.1.2", "istanbul": "^0.4.5", "jasmine": "^2.6.0", diff --git a/src/cookieApi.jsx b/src/cookieApi.js similarity index 100% rename from src/cookieApi.jsx rename to src/cookieApi.js diff --git a/src/getStateFromCookies.jsx b/src/getStateFromCookies.js similarity index 100% rename from src/getStateFromCookies.jsx rename to src/getStateFromCookies.js diff --git a/src/index.jsx b/src/index.js similarity index 100% rename from src/index.jsx rename to src/index.js diff --git a/src/reduxCookiesMiddleware.jsx b/src/reduxCookiesMiddleware.js similarity index 100% rename from src/reduxCookiesMiddleware.jsx rename to src/reduxCookiesMiddleware.js diff --git a/yarn.lock b/yarn.lock index 9f9c48d..dfeff35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -94,11 +94,11 @@ ansi-styles@^2.2.1: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" dependencies: - arrify "^1.0.0" micromatch "^2.1.5" + normalize-path "^2.0.0" aproba@^1.0.3: version "1.1.2" @@ -817,8 +817,8 @@ babel-register@^6.24.1: source-map-support "^0.4.2" babel-runtime@^6.18.0, babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" @@ -897,8 +897,8 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + version "1.9.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b" blob@0.0.4: version "0.0.4" @@ -1068,9 +1068,9 @@ camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" caseless@~0.11.0: version "0.11.0" @@ -1120,8 +1120,8 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: safe-buffer "^5.0.1" circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" cli-cursor@^1.0.1: version "1.0.2" @@ -1291,6 +1291,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1328,10 +1336,6 @@ d@1: dependencies: es5-ext "^0.10.9" -damerau-levenshtein@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1416,10 +1420,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.0, depd@~1.1.0: +depd@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" +depd@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -1445,13 +1453,20 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -doctrine@1.3.x, doctrine@^1.2.2: +doctrine@1.3.x: version "1.3.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" dependencies: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" @@ -1468,6 +1483,10 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" @@ -1541,14 +1560,14 @@ engine.io@1.8.3: engine.io-parser "1.3.2" ws "1.1.2" -enhanced-resolve@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" object-assign "^4.0.1" - tapable "^0.2.5" + tapable "^0.2.7" ent@~2.2.0: version "2.2.0" @@ -1716,14 +1735,6 @@ eslint-plugin-import@^1.14.0: pkg-dir "^1.0.0" pkg-up "^1.0.0" -eslint-plugin-jsx-a11y@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz#4e35cb71b8a7db702ac415c806eb8e8d9ea6c65d" - dependencies: - damerau-levenshtein "^1.0.0" - jsx-ast-utils "^1.0.0" - object-assign "^4.0.1" - eslint-plugin-react@^6.1.2: version "6.10.3" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" @@ -1835,6 +1846,18 @@ evp_bytestokey@^1.0.0: dependencies: create-hash "^1.1.1" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -1962,7 +1985,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: @@ -2084,6 +2107,10 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2124,6 +2151,13 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +global@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + globals@^9.0.0, globals@^9.14.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -2193,6 +2227,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" @@ -2493,7 +2531,7 @@ is-resolvable@^1.0.0: dependencies: tryit "^1.0.1" -is-stream@^1.0.1: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2554,17 +2592,17 @@ istanbul@^0.4.0, istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -jasmine-core@~2.6.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.4.tgz#dec926cd0a9fa287fb6db5c755fa487e74cecac5" +jasmine-core@~2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.7.0.tgz#50ff8c4f92d8ef5c0b2c1b846dd263ed85152091" jasmine@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.6.0.tgz#6b22e70883e8e589d456346153b4d206ddbe217f" + version "2.7.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.7.0.tgz#5cf0bb4e594b4600bb4235560366212ac5aea1b2" dependencies: exit "^0.1.2" glob "^7.0.6" - jasmine-core "~2.6.0" + jasmine-core "~2.7.0" js-cookie@^2.1.4: version "2.1.4" @@ -2575,8 +2613,8 @@ js-tokens@^3.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" js-yaml@3.x, js-yaml@^3.5.1: - version "3.9.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce" + version "3.9.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0" dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -2594,8 +2632,8 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" json-loader@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" json-schema-traverse@^0.3.0: version "0.3.1" @@ -2646,7 +2684,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -jsx-ast-utils@^1.0.0, jsx-ast-utils@^1.3.4: +jsx-ast-utils@^1.3.4: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" @@ -2775,6 +2813,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -2859,6 +2906,13 @@ lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + make-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" @@ -2873,6 +2927,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -2920,20 +2980,30 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + version "2.1.16" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" dependencies: - mime-db "~1.27.0" + mime-db "~1.29.0" mime@^1.3.4: version "1.3.6" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -3060,12 +3130,18 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -3164,11 +3240,13 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: + execa "^0.7.0" lcid "^1.0.0" + mem "^1.1.0" os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" @@ -3189,6 +3267,10 @@ output-file-sync@^1.1.0: mkdirp "^0.5.1" object-assign "^4.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + p-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" @@ -3272,6 +3354,10 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -3280,6 +3366,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pbkdf2@^3.0.3: version "3.0.12" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" @@ -3368,6 +3460,10 @@ process@^0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + progress@^1.1.8, progress@~1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" @@ -3376,6 +3472,10 @@ prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + public-encrypt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" @@ -3455,6 +3555,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -3463,6 +3570,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + 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.2, readable-stream@^2.2.6: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" @@ -3723,8 +3838,8 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" "semver@2 || 3 || 4 || 5", semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" semver@~4.3.3: version "4.3.6" @@ -3752,6 +3867,16 @@ sha.js@^2.4.0, sha.js@^2.4.8: dependencies: inherits "^2.0.1" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + shelljs@^0.7.5: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" @@ -3958,6 +4083,10 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -3978,6 +4107,12 @@ supports-color@^3.1.0: dependencies: has-flag "^1.0.0" +supports-color@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836" + dependencies: + has-flag "^2.0.0" + symbol-observable@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" @@ -3993,9 +4128,9 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tapable@^0.2.5, tapable@~0.2.5: - version "0.2.6" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" +tapable@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.7.tgz#e46c0daacbb2b8a98b9b0cea0f4052105817ed5c" tar-pack@^3.4.0: version "3.4.0" @@ -4030,10 +4165,15 @@ through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + version "2.0.3" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.3.tgz#41fd0bdc926a5feedc33a17a8e1f7d491925f7fc" dependencies: + global "^4.3.2" setimmediate "^1.0.4" tmp@0.0.31, tmp@0.0.x: @@ -4220,13 +4360,14 @@ watchpack@^1.4.0: graceful-fs "^4.1.2" webpack-dev-middleware@^1.0.11: - version "1.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz#09691d0973a30ad1f82ac73a12e2087f0a4754f9" + version "1.12.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" dependencies: memory-fs "~0.4.1" mime "^1.3.4" path-is-absolute "^1.0.0" range-parser "^1.0.3" + time-stamp "^2.0.0" webpack-sources@^1.0.1: version "1.0.1" @@ -4236,15 +4377,15 @@ webpack-sources@^1.0.1: source-map "~0.5.3" webpack@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.3.0.tgz#ce2f9e076566aba91f74887133a883fd7da187bc" + version "3.4.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.4.1.tgz#4c3f4f3fb318155a4db0cb6a36ff05c5697418f4" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" ajv "^5.1.5" ajv-keywords "^2.0.0" async "^2.1.2" - enhanced-resolve "^3.3.0" + enhanced-resolve "^3.4.0" escope "^3.6.0" interpret "^1.0.0" json-loader "^0.5.4" @@ -4255,18 +4396,24 @@ webpack@^3.3.0: mkdirp "~0.5.0" node-libs-browser "^2.0.0" source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" + supports-color "^4.2.1" + tapable "^0.2.7" uglifyjs-webpack-plugin "^0.4.6" watchpack "^1.4.0" webpack-sources "^1.0.1" - yargs "^6.0.0" + yargs "^8.0.2" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.1.1, which@^1.2.1, which@~1.2.10: +which@^1.1.1, which@^1.2.1, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@~1.2.10: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: @@ -4334,29 +4481,33 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" -yargs@^6.0.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" cliui "^3.2.0" decamelize "^1.1.1" get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" + string-width "^2.0.0" + which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^4.2.0" + yargs-parser "^7.0.0" yargs@~3.10.0: version "3.10.0"