diff --git a/package.json b/package.json
index 128cb710f7a4..cbdeccd2c6de 100644
--- a/package.json
+++ b/package.json
@@ -41,7 +41,6 @@
"setupFiles": [
"./setupTests.js"
],
- "mapCoverage": true,
"coverageReporters": [
"lcov"
],
@@ -75,7 +74,7 @@
"babel": "^6.5.2",
"babel-cli": "^6.18.0",
"babel-core": "^6.23.1",
- "babel-jest": "^21.2.0",
+ "babel-jest": "^22.0.0",
"babel-loader": "^7.0.0",
"babel-plugin-lodash": "^3.2.0",
"babel-plugin-module-resolver": "^3.0.0",
@@ -102,8 +101,8 @@
"file-loader": "^1.1.4",
"identity-obj-proxy": "^3.0.0",
"imports-loader": "^0.7.1",
- "jest": "^21.2.1",
- "jest-cli": "^21.2.1",
+ "jest": "^22.0.0",
+ "jest-cli": "^22.0.0",
"lint-staged": "^3.3.1",
"npm-check": "^5.2.3",
"postcss-cssnext": "^3.0.2",
diff --git a/src/actions/__tests__/config.spec.js b/src/actions/__tests__/config.spec.js
index 3ff97f0f883a..f32f2d441eb3 100644
--- a/src/actions/__tests__/config.spec.js
+++ b/src/actions/__tests__/config.spec.js
@@ -1,61 +1,64 @@
+import { fromJS } from 'immutable';
import { applyDefaults, validateConfig } from '../config';
describe('config', () => {
describe('applyDefaults', () => {
it('should set publish_mode if not set', () => {
- expect(applyDefaults({
+ const config = fromJS({
foo: 'bar',
media_folder: 'path/to/media',
- })).toEqual({
- foo: 'bar',
- publish_mode: 'simple',
- media_folder: 'path/to/media',
public_folder: '/path/to/media',
});
+ expect(
+ applyDefaults(config)
+ ).toEqual(
+ config.set('publish_mode', 'simple')
+ );
});
it('should set publish_mode from config', () => {
- expect(applyDefaults({
- foo: 'bar',
- publish_mode: 'complex',
- media_folder: 'path/to/media',
- })).toEqual({
+ const config = fromJS({
foo: 'bar',
publish_mode: 'complex',
media_folder: 'path/to/media',
public_folder: '/path/to/media',
});
+ expect(
+ applyDefaults(config)
+ ).toEqual(
+ config
+ );
});
it('should set public_folder based on media_folder if not set', () => {
- expect(applyDefaults({
+ expect(applyDefaults(fromJS({
foo: 'bar',
media_folder: 'path/to/media',
- })).toEqual({
+ }))).toEqual(fromJS({
foo: 'bar',
publish_mode: 'simple',
media_folder: 'path/to/media',
public_folder: '/path/to/media',
- });
+ }));
});
it('should not overwrite public_folder if set', () => {
- expect(applyDefaults({
+ expect(applyDefaults(fromJS({
foo: 'bar',
media_folder: 'path/to/media',
public_folder: '/publib/path',
- })).toEqual({
+ }))).toEqual(fromJS({
foo: 'bar',
publish_mode: 'simple',
media_folder: 'path/to/media',
public_folder: '/publib/path',
- });
+ }));
});
});
describe('validateConfig', () => {
it('should return the config if no errors', () => {
- const config = { foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [{}] };
+ const config = fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [{}] });
expect(
validateConfig(config)
).toEqual(config);
@@ -63,55 +66,55 @@ describe('config', () => {
it('should throw if backend is not defined in config', () => {
expect(() => {
- validateConfig({ foo: 'bar' });
+ validateConfig(fromJS({ foo: 'bar' }));
}).toThrowError('Error in configuration file: A `backend` wasn\'t found. Check your config.yml file.');
});
it('should throw if backend name is not defined in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: {} });
+ validateConfig(fromJS({ foo: 'bar', backend: {} }));
}).toThrowError('Error in configuration file: A `backend.name` wasn\'t found. Check your config.yml file.');
});
it('should throw if backend name is not a string in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: { } } });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: { } } }));
}).toThrowError('Error in configuration file: Your `backend.name` must be a string. Check your config.yml file.');
});
it('should throw if media_folder is not defined in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' } });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' } }));
}).toThrowError('Error in configuration file: A `media_folder` wasn\'t found. Check your config.yml file.');
});
it('should throw if media_folder is not a string in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' }, media_folder: {} });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: {} }));
}).toThrowError('Error in configuration file: Your `media_folder` must be a string. Check your config.yml file.');
});
it('should throw if collections is not defined in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz' });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz' }));
}).toThrowError('Error in configuration file: A `collections` wasn\'t found. Check your config.yml file.');
});
it('should throw if collections not an array in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: {} });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: {} }));
}).toThrowError('Error in configuration file: Your `collections` must be an array with at least one element. Check your config.yml file.');
});
it('should throw if collections is an empty array in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [] });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [] }));
}).toThrowError('Error in configuration file: Your `collections` must be an array with at least one element. Check your config.yml file.');
});
it('should throw if collections is an array with a single null element in config', () => {
expect(() => {
- validateConfig({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [null] });
+ validateConfig(fromJS({ foo: 'bar', backend: { name: 'bar' }, media_folder: 'baz', collections: [null] }));
}).toThrowError('Error in configuration file: Your `collections` must be an array with at least one element. Check your config.yml file.');
});
});
diff --git a/src/actions/config.js b/src/actions/config.js
index 3dd7bde851d0..becbe783cfa7 100644
--- a/src/actions/config.js
+++ b/src/actions/config.js
@@ -1,50 +1,63 @@
import yaml from "js-yaml";
-import { set, defaultsDeep, get } from "lodash";
+import { Map, List, fromJS } from "immutable";
+import { trimStart, flow } from "lodash";
import { authenticateUser } from "Actions/auth";
import * as publishModes from "Constants/publishModes";
export const CONFIG_REQUEST = "CONFIG_REQUEST";
export const CONFIG_SUCCESS = "CONFIG_SUCCESS";
export const CONFIG_FAILURE = "CONFIG_FAILURE";
+export const CONFIG_MERGE = "CONFIG_MERGE";
const defaults = {
publish_mode: publishModes.SIMPLE,
};
export function applyDefaults(config) {
- // Make sure there is a public folder
- set(defaults,
- "public_folder",
- config.media_folder.charAt(0) === "/" ? config.media_folder : `/${ config.media_folder }`);
-
- return defaultsDeep(config, defaults);
+ return Map(defaults)
+ .mergeDeep(config)
+ .withMutations(map => {
+ /**
+ * Use media_folder as default public_folder.
+ */
+ const defaultPublicFolder = `/${trimStart(map.get('media_folder'), '/')}`;
+ if (!map.get('public_folder')) {
+ map.set('public_folder', defaultPublicFolder);
+ }
+ });
}
export function validateConfig(config) {
- if (!get(config, 'backend')) {
+ if (!config.get('backend')) {
throw new Error("Error in configuration file: A `backend` wasn't found. Check your config.yml file.");
}
- if (!get(config, ['backend', 'name'])) {
+ if (!config.getIn(['backend', 'name'])) {
throw new Error("Error in configuration file: A `backend.name` wasn't found. Check your config.yml file.");
}
- if (typeof config.backend.name !== 'string') {
+ if (typeof config.getIn(['backend', 'name']) !== 'string') {
throw new Error("Error in configuration file: Your `backend.name` must be a string. Check your config.yml file.");
}
- if (!get(config, 'media_folder')) {
+ if (!config.get('media_folder')) {
throw new Error("Error in configuration file: A `media_folder` wasn\'t found. Check your config.yml file.");
}
- if (typeof config.media_folder !== 'string') {
+ if (typeof config.get('media_folder') !== 'string') {
throw new Error("Error in configuration file: Your `media_folder` must be a string. Check your config.yml file.");
}
- if (!get(config, 'collections')) {
+ if (!config.get('collections')) {
throw new Error("Error in configuration file: A `collections` wasn\'t found. Check your config.yml file.");
}
- if (!Array.isArray(config.collections) || config.collections.length === 0 || !config.collections[0]) {
+ const collections = config.get('collections');
+ if (!List.isList(collections) || collections.isEmpty() || !collections.first()) {
throw new Error("Error in configuration file: Your `collections` must be an array with at least one element. Check your config.yml file.");
}
return config;
}
+function mergePreloadedConfig(preloadedConfig, loadedConfig) {
+ const map = fromJS(loadedConfig) || Map();
+ return preloadedConfig ? preloadedConfig.mergeDeep(map) : map;
+}
+
function parseConfig(data) {
const config = yaml.safeLoad(data);
if (typeof CMS_ENV === "string" && config[CMS_ENV]) {
@@ -82,29 +95,40 @@ export function configDidLoad(config) {
};
}
+export function mergeConfig(config) {
+ return { type: CONFIG_MERGE, payload: config };
+}
+
export function loadConfig() {
if (window.CMS_CONFIG) {
- return configDidLoad(window.CMS_CONFIG);
+ return configDidLoad(fromJS(window.CMS_CONFIG));
}
- return (dispatch) => {
+ return async (dispatch, getState) => {
dispatch(configLoading());
- fetch("config.yml", { credentials: 'same-origin' })
- .then((response) => {
- if (response.status !== 200) {
+ try {
+ const preloadedConfig = getState().config;
+ const response = await fetch('config.yml', { credentials: 'same-origin' })
+ const requestSuccess = response.status === 200;
+
+ if (!preloadedConfig && !requestSuccess) {
throw new Error(`Failed to load config.yml (${ response.status })`);
}
- return response.text();
- })
- .then(parseConfig)
- .then(validateConfig)
- .then(applyDefaults)
- .then((config) => {
+
+ const loadedConfig = parseConfig(requestSuccess ? await response.text() : '');
+
+ /**
+ * Merge any existing configuration so the result can be validated.
+ */
+ const mergedConfig = mergePreloadedConfig(preloadedConfig, loadedConfig)
+ const config = flow(validateConfig, applyDefaults)(mergedConfig);
+
dispatch(configDidLoad(config));
dispatch(authenticateUser());
- })
- .catch((err) => {
+ }
+ catch(err) {
dispatch(configFailed(err));
- });
+ throw(err)
+ }
};
}
diff --git a/src/bootstrap.js b/src/bootstrap.js
new file mode 100644
index 000000000000..1061ec4274eb
--- /dev/null
+++ b/src/bootstrap.js
@@ -0,0 +1,67 @@
+import React from 'react';
+import { render } from 'react-dom';
+import { Provider } from 'react-redux';
+import { Route } from 'react-router-dom';
+import { ConnectedRouter } from 'react-router-redux';
+import history from 'Routing/history';
+import configureStore from 'Redux/configureStore';
+import { mergeConfig } from 'Actions/config';
+import { setStore } from 'ValueObjects/AssetProxy';
+import { ErrorBoundary } from 'UI'
+import App from 'App/App';
+import 'EditorWidgets';
+import 'MarkdownPlugins';
+import './index.css';
+
+function bootstrap({ config }) {
+ /**
+ * Log the version number.
+ */
+ console.log(`Netlify CMS version ${NETLIFY_CMS_VERSION}`);
+
+ /**
+ * Create mount element dynamically.
+ */
+ const el = document.createElement('div');
+ el.id = 'nc-root';
+ document.body.appendChild(el);
+
+ /**
+ * Configure Redux store.
+ */
+ const store = configureStore();
+
+ /**
+ * Dispatch config to store if received. This config will be merged into
+ * config.yml if it exists, and any portion that produces a conflict will be
+ * overwritten.
+ */
+ if (config) {
+ store.dispatch(mergeConfig(config));
+ }
+
+ /**
+ * Pass initial state into AssetProxy factory.
+ */
+ setStore(store);
+
+ /**
+ * Create connected root component.
+ */
+ const Root = () => (
+
+
+
+
+
+
+
+ );
+
+ /**
+ * Render application root.
+ */
+ render(, el);
+}
+
+export default bootstrap;
diff --git a/src/components/App/App.js b/src/components/App/App.js
index 7afdde449669..6dcf11be3137 100644
--- a/src/components/App/App.js
+++ b/src/components/App/App.js
@@ -53,6 +53,7 @@ class App extends React.Component {
The config.yml
file could not be loaded or failed to parse properly.
Error message: {config.get('error')}
+
Check your console for details.
);
}
@@ -105,7 +106,6 @@ class App extends React.Component {
openMediaLibrary,
} = this.props;
-
if (config === null) {
return null;
}
diff --git a/src/index.js b/src/index.js
index e801e7c99197..e127bc091e5d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,54 +1,16 @@
-import React from 'react';
-import createReactClass from 'create-react-class';
-import { render } from 'react-dom';
-import { Provider } from 'react-redux';
-import { Route } from 'react-router-dom';
-import { ConnectedRouter } from 'react-router-redux';
-import history from 'Routing/history';
-import configureStore from 'Redux/configureStore';
-import { setStore } from 'ValueObjects/AssetProxy';
-import { ErrorBoundary } from 'UI'
-import registry from 'Lib/registry';
-import App from 'App/App';
-import 'EditorWidgets';
-import 'MarkdownPlugins';
-import './index.css';
-
-/**
- * Log the version number.
- */
-console.log(`Netlify CMS version ${NETLIFY_CMS_VERSION}`);
-
-/**
- * Create mount element dynamically.
- */
-const el = document.createElement('div');
-el.id = 'nc-root';
-document.body.appendChild(el);
-
-/**
- * Configure Redux store.
- */
-const store = configureStore();
-setStore(store);
-
/**
- * Create connected root component.
+ * This module provides a self-initializing CMS instance with API hooks added to
+ * the `window` object.
*/
-const Root = () => (
-
-
-
-
-
-
-
-);
+import React from 'react';
+import bootstrap from './bootstrap';
+import registry from 'Lib/registry';
+import createReactClass from 'create-react-class';
/**
- * Render application root.
+ * Load the app.
*/
-render(, el);
+bootstrap();
/**
* Add extension hooks to global scope.
diff --git a/src/init.js b/src/init.js
new file mode 100644
index 000000000000..1bf0f676ac6c
--- /dev/null
+++ b/src/init.js
@@ -0,0 +1,7 @@
+/**
+ * This module provides manual initialization and registry hooks.
+ */
+import bootstrap from './bootstrap';
+import registry from 'Lib/registry';
+
+export { bootstrap as init, registry };
diff --git a/src/reducers/__tests__/collections.spec.js b/src/reducers/__tests__/collections.spec.js
index b65f5c757f3c..5919aa15422c 100644
--- a/src/reducers/__tests__/collections.spec.js
+++ b/src/reducers/__tests__/collections.spec.js
@@ -13,7 +13,7 @@ describe('collections', () => {
it('should load the collections from the config', () => {
expect(
- collections(undefined, configLoaded({
+ collections(undefined, configLoaded(fromJS({
collections: [
{
name: 'posts',
@@ -21,7 +21,7 @@ describe('collections', () => {
fields: [{ name: 'title', widget: 'string' }],
},
],
- }))
+ })))
).toEqual(
OrderedMap({
posts: fromJS({
diff --git a/src/reducers/__tests__/config.spec.js b/src/reducers/__tests__/config.spec.js
index 1b8ebe702733..7aa4d87b745d 100644
--- a/src/reducers/__tests__/config.spec.js
+++ b/src/reducers/__tests__/config.spec.js
@@ -1,21 +1,21 @@
-import Immutable from 'immutable';
+import { Map } from 'immutable';
import { configLoaded, configLoading, configFailed } from 'Actions/config';
-import config from '../config';
+import config from 'Reducers/config';
describe('config', () => {
it('should handle an empty state', () => {
expect(
config(undefined, {})
).toEqual(
- null
+ Map({ isFetching: true })
);
});
it('should handle an update', () => {
expect(
- config(Immutable.Map({ a: 'b', c: 'd' }), configLoaded({ a: 'changed', e: 'new' }))
+ config(Map({ a: 'b', c: 'd' }), configLoaded(Map({ a: 'changed', e: 'new' })))
).toEqual(
- Immutable.Map({ a: 'changed', e: 'new' })
+ Map({ a: 'changed', e: 'new' })
);
});
@@ -23,15 +23,15 @@ describe('config', () => {
expect(
config(undefined, configLoading())
).toEqual(
- Immutable.Map({ isFetching: true })
+ Map({ isFetching: true })
);
});
it('should handle an error', () => {
expect(
- config(Immutable.Map({ isFetching: true }), configFailed(new Error('Config could not be loaded')))
+ config(Map(), configFailed(new Error('Config could not be loaded')))
).toEqual(
- Immutable.Map({ error: 'Error: Config could not be loaded' })
+ Map({ error: 'Error: Config could not be loaded' })
);
});
});
diff --git a/src/reducers/collections.js b/src/reducers/collections.js
index 9f798baf9a37..3a1abaf1f45b 100644
--- a/src/reducers/collections.js
+++ b/src/reducers/collections.js
@@ -1,4 +1,4 @@
-import { OrderedMap, fromJS } from 'immutable';
+import { List } from 'immutable';
import { has, get, escapeRegExp } from 'lodash';
import consoleError from 'Lib/consoleError';
import { CONFIG_SUCCESS } from 'Actions/config';
@@ -7,42 +7,50 @@ import { INFERABLE_FIELDS } from 'Constants/fieldInference';
import { formatByExtension, formatToExtension, supportedFormats, frontmatterFormats } from 'Formats/formats';
const collections = (state = null, action) => {
- const configCollections = action.payload && action.payload.collections;
switch (action.type) {
case CONFIG_SUCCESS:
- return OrderedMap().withMutations((map) => {
- (configCollections || []).forEach((configCollection) => {
- validateCollection(configCollection);
- if (has(configCollection, 'folder')) {
- configCollection.type = FOLDER; // eslint-disable-line no-param-reassign
- } else if (has(configCollection, 'files')) {
- configCollection.type = FILES; // eslint-disable-line no-param-reassign
+ const configCollections = action.payload ? action.payload.get('collections') : List();
+ configCollections.forEach(validateCollection)
+ return configCollections
+ .toOrderedMap()
+ .map(collection => {
+ if (collection.has('folder')) {
+ return collection.set('type', FOLDER);
}
- map.set(configCollection.name, fromJS(configCollection));
- });
- });
+ if (collection.has('files')) {
+ return collection.set('type', FILES);
+ }
+ })
+ .mapKeys((key, collection) => collection.get('name'));
default:
return state;
}
};
function validateCollection(configCollection) {
- const collectionName = get(configCollection, 'name');
- if (!has(configCollection, 'folder') && !has(configCollection, 'files')) {
- throw new Error(`Unknown collection type for collection "${ collectionName }". Collections can be either Folder based or File based.`);
+ const {
+ name,
+ folder,
+ files,
+ format,
+ extension,
+ frontmatter_delimiter: delimiter
+ } = configCollection.toJS();
+
+ if (!folder && !files) {
+ throw new Error(`Unknown collection type for collection "${name}". Collections can be either Folder based or File based.`);
}
- if (has(configCollection, 'format') && !supportedFormats.includes(get(configCollection, 'format'))) {
- throw new Error(`Unknown collection format for collection "${ collectionName }". Supported formats are ${ supportedFormats.join(',') }`);
+ if (format && !supportedFormats.includes(format)) {
+ throw new Error(`Unknown collection format for collection "${name}". Supported formats are ${supportedFormats.join(',')}`);
}
- if (!has(configCollection, 'format') && has(configCollection, 'extension') && !formatByExtension(get(configCollection, 'extension'))) {
+ if (!format && extension && !formatByExtension(extension)) {
// Cannot infer format from extension.
- throw new Error(`Please set a format for collection "${ collectionName }". Supported formats are ${ supportedFormats.join(',') }`);
+ throw new Error(`Please set a format for collection "${name}". Supported formats are ${supportedFormats.join(',')}`);
}
- if (has(configCollection, 'frontmatter_delimiter') && !frontmatterFormats.includes(get(configCollection, 'format'))) {
+ if (delimiter && !frontmatterFormats.includes(format)) {
// Cannot set custom delimiter without explicit and proper frontmatter format declaration
- throw new Error(`Please set a proper frontmatter format for collection "${ collectionName }" to use a custom delimiter. Supported frontmatter formats are yaml-frontmatter, toml-frontmatter, and json-frontmatter.`);
+ throw new Error(`Please set a proper frontmatter format for collection "${name}" to use a custom delimiter. Supported frontmatter formats are yaml-frontmatter, toml-frontmatter, and json-frontmatter.`);
}
-
}
const selectors = {
diff --git a/src/reducers/config.js b/src/reducers/config.js
index e9ed7f2d8878..2de09e47ab3a 100644
--- a/src/reducers/config.js
+++ b/src/reducers/config.js
@@ -1,14 +1,21 @@
-import Immutable from 'immutable';
-import { CONFIG_REQUEST, CONFIG_SUCCESS, CONFIG_FAILURE } from 'Actions/config';
+import { Map } from 'immutable';
+import { CONFIG_REQUEST, CONFIG_SUCCESS, CONFIG_FAILURE, CONFIG_MERGE } from 'Actions/config';
-const config = (state = null, action) => {
+const config = (state = Map({ isFetching: true }), action) => {
switch (action.type) {
+ case CONFIG_MERGE:
+ return state.mergeDeep(action.payload);
case CONFIG_REQUEST:
- return Immutable.Map({ isFetching: true });
+ return state.set('isFetching', true);
case CONFIG_SUCCESS:
- return Immutable.fromJS(action.payload);
+ /**
+ * The loadConfig action merges any existing config into the loaded config
+ * before firing this action (so the resulting config can be validated),
+ * so we don't have to merge it here.
+ */
+ return action.payload.delete('isFetching');
case CONFIG_FAILURE:
- return Immutable.Map({ error: action.payload.toString() });
+ return Map({ error: action.payload.toString() });
default:
return state;
}
diff --git a/src/reducers/integrations.js b/src/reducers/integrations.js
index 3bf34f378023..0b35e3f3bc76 100644
--- a/src/reducers/integrations.js
+++ b/src/reducers/integrations.js
@@ -1,10 +1,10 @@
-import { fromJS } from 'immutable';
+import { fromJS, List } from 'immutable';
import { CONFIG_SUCCESS } from 'Actions/config';
const integrations = (state = null, action) => {
switch (action.type) {
case CONFIG_SUCCESS:
- const integrations = action.payload.integrations || [];
+ const integrations = action.payload.get('integrations').toJS() || [];
const newState = integrations.reduce((acc, integration) => {
const { hooks, collections, provider, ...providerData } = integration;
acc.providers[provider] = { ...providerData };
diff --git a/webpack.dev.js b/webpack.dev.js
index 3e145fd6a855..c458037fed90 100644
--- a/webpack.dev.js
+++ b/webpack.dev.js
@@ -13,6 +13,7 @@ module.exports = merge.smart(require('./webpack.base.js'), {
`webpack-dev-server/client?http://${ HOST }:${ PORT }/`,
'./index',
],
+ init: './init',
},
output: {
path: path.join(__dirname, 'dist'),
diff --git a/webpack.prod.js b/webpack.prod.js
index b198252462b6..db665304521a 100644
--- a/webpack.prod.js
+++ b/webpack.prod.js
@@ -8,6 +8,7 @@ const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = merge.smart(require('./webpack.base.js'), {
entry: {
cms: './index',
+ init: './init',
},
output: {
path: path.join(__dirname, 'dist'),
diff --git a/yarn.lock b/yarn.lock
index d920d6a2b34b..75ea86b80b73 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,20 @@
# yarn lockfile v1
+"@babel/code-frame@^7.0.0-beta.35":
+ version "7.0.0-beta.40"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6"
+ dependencies:
+ "@babel/highlight" "7.0.0-beta.40"
+
+"@babel/highlight@7.0.0-beta.40":
+ version "7.0.0-beta.40"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255"
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
"@types/inline-style-prefixer@^3.0.0":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz#8541e636b029124b747952e9a28848286d2b5bf6"
@@ -21,7 +35,7 @@ JSONStream@^0.8.4:
jsonparse "0.0.5"
through ">=2.2.7 <3"
-abab@^1.0.3:
+abab@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
@@ -42,11 +56,11 @@ acorn-dynamic-import@^2.0.0:
dependencies:
acorn "^4.0.3"
-acorn-globals@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+acorn-globals@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538"
dependencies:
- acorn "^4.0.4"
+ acorn "^5.0.0"
acorn-jsx@^3.0.0:
version "3.0.1"
@@ -62,7 +76,7 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-acorn@^4.0.3, acorn@^4.0.4:
+acorn@^4.0.3:
version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
@@ -70,6 +84,10 @@ acorn@^5.0.0, acorn@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
+acorn@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298"
+
ajv-keywords@^1.0.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@@ -308,6 +326,10 @@ async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+async-limiter@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+
async@^1.4.0, async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@@ -547,12 +569,12 @@ babel-helpers@^6.24.1:
babel-runtime "^6.22.0"
babel-template "^6.24.1"
-babel-jest@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.2.0.tgz#2ce059519a9374a2c46f2455b6fbef5ad75d863e"
+babel-jest@^22.0.0, babel-jest@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.1.tgz#ff53ebca45957347f27ff4666a31499fbb4c4ddd"
dependencies:
- babel-plugin-istanbul "^4.0.0"
- babel-preset-jest "^21.2.0"
+ babel-plugin-istanbul "^4.1.5"
+ babel-preset-jest "^22.4.1"
babel-loader@^7.0.0:
version "7.1.2"
@@ -574,7 +596,7 @@ babel-plugin-check-es2015-constants@^6.22.0:
dependencies:
babel-runtime "^6.22.0"
-babel-plugin-istanbul@^4.0.0:
+babel-plugin-istanbul@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e"
dependencies:
@@ -582,9 +604,9 @@ babel-plugin-istanbul@^4.0.0:
istanbul-lib-instrument "^1.7.5"
test-exclude "^4.1.1"
-babel-plugin-jest-hoist@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006"
+babel-plugin-jest-hoist@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz#d712fe5da8b6965f3191dacddbefdbdf4fb66d63"
babel-plugin-lodash@^3.2.0:
version "3.3.2"
@@ -955,11 +977,11 @@ babel-preset-flow@^6.23.0:
dependencies:
babel-plugin-transform-flow-strip-types "^6.22.0"
-babel-preset-jest@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz#ff9d2bce08abd98e8a36d9a8a5189b9173b85638"
+babel-preset-jest@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a"
dependencies:
- babel-plugin-jest-hoist "^21.2.0"
+ babel-plugin-jest-hoist "^22.4.1"
babel-plugin-syntax-object-rest-spread "^6.13.0"
babel-preset-react@^6.23.0:
@@ -1180,6 +1202,10 @@ brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+browser-process-hrtime@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
+
browser-resolve@^1.11.2:
version "1.11.2"
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
@@ -1547,6 +1573,14 @@ cliui@^3.0.3, cliui@^3.2.0:
strip-ansi "^3.0.1"
wrap-ansi "^2.0.0"
+cliui@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc"
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
clone-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.0.tgz#eae0a2413f55c0942f818c229fefce845d7f3b1c"
@@ -1740,7 +1774,7 @@ content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
-content-type-parser@^1.0.1:
+content-type-parser@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
@@ -2291,6 +2325,10 @@ detect-libc@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1"
+detect-newline@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+
detect-node@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
@@ -2399,6 +2437,12 @@ domelementtype@~1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+domexception@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
+ dependencies:
+ webidl-conversions "^4.0.2"
+
domhandler@^2.3.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259"
@@ -2585,6 +2629,16 @@ es-abstract@^1.5.0, es-abstract@^1.6.1, es-abstract@^1.7.0:
is-callable "^1.1.3"
is-regex "^1.0.4"
+es-abstract@^1.5.1:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
es-to-primitive@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
@@ -2665,16 +2719,16 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-escodegen@^1.6.1:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852"
+escodegen@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
dependencies:
esprima "^3.1.3"
estraverse "^4.2.0"
esutils "^2.0.2"
optionator "^0.8.1"
optionalDependencies:
- source-map "~0.5.6"
+ source-map "~0.6.1"
escope@^3.6.0:
version "3.6.0"
@@ -2963,6 +3017,10 @@ exit-hook@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -2981,16 +3039,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies:
homedir-polyfill "^1.0.1"
-expect@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b"
+expect@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.0.tgz#371edf1ae15b83b5bf5ec34b42f1584660a36c16"
dependencies:
ansi-styles "^3.2.0"
- jest-diff "^21.2.1"
- jest-get-type "^21.2.0"
- jest-matcher-utils "^21.2.1"
- jest-message-util "^21.2.1"
- jest-regex-util "^21.2.0"
+ jest-diff "^22.4.0"
+ jest-get-type "^22.1.0"
+ jest-matcher-utils "^22.4.0"
+ jest-message-util "^22.4.0"
+ jest-regex-util "^22.1.0"
exports-loader@^0.6.4:
version "0.6.4"
@@ -3821,7 +3879,7 @@ html-comment-regex@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
-html-encoding-sniffer@^1.0.1:
+html-encoding-sniffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
dependencies:
@@ -3970,6 +4028,13 @@ import-local@^0.1.1:
pkg-dir "^2.0.0"
resolve-cwd "^2.0.0"
+import-local@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
+ dependencies:
+ pkg-dir "^2.0.0"
+ resolve-cwd "^2.0.0"
+
imports-loader@^0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.1.tgz#f204b5f34702a32c1db7d48d89d5e867a0441253"
@@ -4234,6 +4299,10 @@ is-function@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
+is-generator-fn@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a"
+
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
@@ -4467,33 +4536,37 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-istanbul-api@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620"
+istanbul-api@^1.1.14:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.2.tgz#e17cd519dd5ec4141197f246fdf380b75487f3b1"
dependencies:
async "^2.1.4"
fileset "^2.0.2"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.1.2"
istanbul-lib-hook "^1.1.0"
- istanbul-lib-instrument "^1.9.1"
- istanbul-lib-report "^1.1.2"
- istanbul-lib-source-maps "^1.2.2"
- istanbul-reports "^1.1.3"
+ istanbul-lib-instrument "^1.9.2"
+ istanbul-lib-report "^1.1.3"
+ istanbul-lib-source-maps "^1.2.3"
+ istanbul-reports "^1.1.4"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
-istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1:
+istanbul-lib-coverage@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
+istanbul-lib-coverage@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz#4113c8ff6b7a40a1ef7350b01016331f63afde14"
+
istanbul-lib-hook@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b"
dependencies:
append-transform "^0.4.0"
-istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1:
+istanbul-lib-instrument@^1.7.5:
version "1.9.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e"
dependencies:
@@ -4505,255 +4578,301 @@ istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-ins
istanbul-lib-coverage "^1.1.1"
semver "^5.3.0"
-istanbul-lib-report@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425"
+istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.2:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz#84905bf47f7e0b401d6b840da7bad67086b4aab6"
dependencies:
- istanbul-lib-coverage "^1.1.1"
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.18.0"
+ istanbul-lib-coverage "^1.1.2"
+ semver "^5.3.0"
+
+istanbul-lib-report@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259"
+ dependencies:
+ istanbul-lib-coverage "^1.1.2"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
-istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c"
+istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6"
dependencies:
debug "^3.1.0"
- istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-coverage "^1.1.2"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
-istanbul-reports@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10"
+istanbul-reports@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.4.tgz#5ccba5e22b7b5a5d91d5e0a830f89be334bf97bd"
dependencies:
handlebars "^4.0.3"
-jest-changed-files@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.2.0.tgz#5dbeecad42f5d88b482334902ce1cba6d9798d29"
+jest-changed-files@^22.2.0:
+ version "22.2.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.2.0.tgz#517610c4a8ca0925bdc88b0ca53bd678aa8d019e"
dependencies:
throat "^4.0.0"
-jest-cli@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.2.1.tgz#9c528b6629d651911138d228bdb033c157ec8c00"
+jest-cli@^22.0.0, jest-cli@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.2.tgz#e6546dc651e13d164481aa3e76e53ac4f4edab06"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.1"
+ exit "^0.1.2"
glob "^7.1.2"
graceful-fs "^4.1.11"
+ import-local "^1.0.0"
is-ci "^1.0.10"
- istanbul-api "^1.1.1"
- istanbul-lib-coverage "^1.0.1"
- istanbul-lib-instrument "^1.4.2"
- istanbul-lib-source-maps "^1.1.0"
- jest-changed-files "^21.2.0"
- jest-config "^21.2.1"
- jest-environment-jsdom "^21.2.1"
- jest-haste-map "^21.2.0"
- jest-message-util "^21.2.1"
- jest-regex-util "^21.2.0"
- jest-resolve-dependencies "^21.2.0"
- jest-runner "^21.2.1"
- jest-runtime "^21.2.1"
- jest-snapshot "^21.2.1"
- jest-util "^21.2.1"
+ istanbul-api "^1.1.14"
+ istanbul-lib-coverage "^1.1.1"
+ istanbul-lib-instrument "^1.8.0"
+ istanbul-lib-source-maps "^1.2.1"
+ jest-changed-files "^22.2.0"
+ jest-config "^22.4.2"
+ jest-environment-jsdom "^22.4.1"
+ jest-get-type "^22.1.0"
+ jest-haste-map "^22.4.2"
+ jest-message-util "^22.4.0"
+ jest-regex-util "^22.1.0"
+ jest-resolve-dependencies "^22.1.0"
+ jest-runner "^22.4.2"
+ jest-runtime "^22.4.2"
+ jest-snapshot "^22.4.0"
+ jest-util "^22.4.1"
+ jest-validate "^22.4.2"
+ jest-worker "^22.2.2"
micromatch "^2.3.11"
- node-notifier "^5.0.2"
- pify "^3.0.0"
+ node-notifier "^5.2.1"
+ realpath-native "^1.0.0"
+ rimraf "^2.5.4"
slash "^1.0.0"
string-length "^2.0.0"
strip-ansi "^4.0.0"
which "^1.2.12"
- worker-farm "^1.3.1"
- yargs "^9.0.0"
+ yargs "^10.0.3"
-jest-config@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.2.1.tgz#c7586c79ead0bcc1f38c401e55f964f13bf2a480"
+jest-config@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.2.tgz#580ba5819bf81a5e48f4fd470e8b81834f45c855"
dependencies:
chalk "^2.0.1"
glob "^7.1.1"
- jest-environment-jsdom "^21.2.1"
- jest-environment-node "^21.2.1"
- jest-get-type "^21.2.0"
- jest-jasmine2 "^21.2.1"
- jest-regex-util "^21.2.0"
- jest-resolve "^21.2.0"
- jest-util "^21.2.1"
- jest-validate "^21.2.1"
- pretty-format "^21.2.1"
-
-jest-diff@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f"
+ jest-environment-jsdom "^22.4.1"
+ jest-environment-node "^22.4.1"
+ jest-get-type "^22.1.0"
+ jest-jasmine2 "^22.4.2"
+ jest-regex-util "^22.1.0"
+ jest-resolve "^22.4.2"
+ jest-util "^22.4.1"
+ jest-validate "^22.4.2"
+ pretty-format "^22.4.0"
+
+jest-diff@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.0.tgz#384c2b78519ca44ca126382df53f134289232525"
dependencies:
chalk "^2.0.1"
diff "^3.2.0"
- jest-get-type "^21.2.0"
- pretty-format "^21.2.1"
+ jest-get-type "^22.1.0"
+ pretty-format "^22.4.0"
-jest-docblock@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
+jest-docblock@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8"
+ dependencies:
+ detect-newline "^2.1.0"
-jest-environment-jsdom@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz#38d9980c8259b2a608ec232deee6289a60d9d5b4"
+jest-environment-jsdom@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.1.tgz#754f408872441740100d3917e5ec40c74de6447f"
dependencies:
- jest-mock "^21.2.0"
- jest-util "^21.2.1"
- jsdom "^9.12.0"
+ jest-mock "^22.2.0"
+ jest-util "^22.4.1"
+ jsdom "^11.5.1"
-jest-environment-node@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.2.1.tgz#98c67df5663c7fbe20f6e792ac2272c740d3b8c8"
+jest-environment-node@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.1.tgz#418850eb654596b8d6e36c2021cbedbc23df8e16"
dependencies:
- jest-mock "^21.2.0"
- jest-util "^21.2.1"
+ jest-mock "^22.2.0"
+ jest-util "^22.4.1"
-jest-get-type@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23"
+jest-get-type@^22.1.0:
+ version "22.1.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9"
-jest-haste-map@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.2.0.tgz#1363f0a8bb4338f24f001806571eff7a4b2ff3d8"
+jest-haste-map@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4"
dependencies:
fb-watchman "^2.0.0"
graceful-fs "^4.1.11"
- jest-docblock "^21.2.0"
+ jest-docblock "^22.4.0"
+ jest-serializer "^22.4.0"
+ jest-worker "^22.2.2"
micromatch "^2.3.11"
sane "^2.0.0"
- worker-farm "^1.3.1"
-jest-jasmine2@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz#9cc6fc108accfa97efebce10c4308548a4ea7592"
+jest-jasmine2@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.2.tgz#dfd3d259579ed6f52510d8f1ab692808f0d40691"
dependencies:
chalk "^2.0.1"
- expect "^21.2.1"
+ co "^4.6.0"
+ expect "^22.4.0"
graceful-fs "^4.1.11"
- jest-diff "^21.2.1"
- jest-matcher-utils "^21.2.1"
- jest-message-util "^21.2.1"
- jest-snapshot "^21.2.1"
- p-cancelable "^0.3.0"
+ is-generator-fn "^1.0.0"
+ jest-diff "^22.4.0"
+ jest-matcher-utils "^22.4.0"
+ jest-message-util "^22.4.0"
+ jest-snapshot "^22.4.0"
+ jest-util "^22.4.1"
+ source-map-support "^0.5.0"
+
+jest-leak-detector@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.0.tgz#64da77f05b001c96d2062226e079f89989c4aa2f"
+ dependencies:
+ pretty-format "^22.4.0"
-jest-matcher-utils@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64"
+jest-matcher-utils@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz#d55f5faf2270462736bdf7c7485ee931c9d4b6a1"
dependencies:
chalk "^2.0.1"
- jest-get-type "^21.2.0"
- pretty-format "^21.2.1"
+ jest-get-type "^22.1.0"
+ pretty-format "^22.4.0"
-jest-message-util@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe"
+jest-message-util@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.0.tgz#e3d861df16d2fee60cb2bc8feac2188a42579642"
dependencies:
+ "@babel/code-frame" "^7.0.0-beta.35"
chalk "^2.0.1"
micromatch "^2.3.11"
slash "^1.0.0"
+ stack-utils "^1.0.1"
-jest-mock@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.2.0.tgz#7eb0770e7317968165f61ea2a7281131534b3c0f"
+jest-mock@^22.2.0:
+ version "22.2.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7"
-jest-regex-util@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530"
+jest-regex-util@^22.1.0:
+ version "22.1.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53"
-jest-resolve-dependencies@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz#9e231e371e1a736a1ad4e4b9a843bc72bfe03d09"
+jest-resolve-dependencies@^22.1.0:
+ version "22.1.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31"
dependencies:
- jest-regex-util "^21.2.0"
+ jest-regex-util "^22.1.0"
-jest-resolve@^21.2.0:
- version "21.2.0"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.2.0.tgz#068913ad2ba6a20218e5fd32471f3874005de3a6"
+jest-resolve@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.2.tgz#25d88aa4147462c9c1c6a1ba16250d3794c24d00"
dependencies:
browser-resolve "^1.11.2"
chalk "^2.0.1"
- is-builtin-module "^1.0.0"
-jest-runner@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.2.1.tgz#194732e3e518bfb3d7cbfc0fd5871246c7e1a467"
- dependencies:
- jest-config "^21.2.1"
- jest-docblock "^21.2.0"
- jest-haste-map "^21.2.0"
- jest-jasmine2 "^21.2.1"
- jest-message-util "^21.2.1"
- jest-runtime "^21.2.1"
- jest-util "^21.2.1"
- pify "^3.0.0"
+jest-runner@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.2.tgz#19390ea9d99f768973e16f95a1efa351c0017e87"
+ dependencies:
+ exit "^0.1.2"
+ jest-config "^22.4.2"
+ jest-docblock "^22.4.0"
+ jest-haste-map "^22.4.2"
+ jest-jasmine2 "^22.4.2"
+ jest-leak-detector "^22.4.0"
+ jest-message-util "^22.4.0"
+ jest-runtime "^22.4.2"
+ jest-util "^22.4.1"
+ jest-worker "^22.2.2"
throat "^4.0.0"
- worker-farm "^1.3.1"
-jest-runtime@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.2.1.tgz#99dce15309c670442eee2ebe1ff53a3cbdbbb73e"
+jest-runtime@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.2.tgz#0de0444f65ce15ee4f2e0055133fc7c17b9168f3"
dependencies:
babel-core "^6.0.0"
- babel-jest "^21.2.0"
- babel-plugin-istanbul "^4.0.0"
+ babel-jest "^22.4.1"
+ babel-plugin-istanbul "^4.1.5"
chalk "^2.0.1"
convert-source-map "^1.4.0"
+ exit "^0.1.2"
graceful-fs "^4.1.11"
- jest-config "^21.2.1"
- jest-haste-map "^21.2.0"
- jest-regex-util "^21.2.0"
- jest-resolve "^21.2.0"
- jest-util "^21.2.1"
+ jest-config "^22.4.2"
+ jest-haste-map "^22.4.2"
+ jest-regex-util "^22.1.0"
+ jest-resolve "^22.4.2"
+ jest-util "^22.4.1"
+ jest-validate "^22.4.2"
json-stable-stringify "^1.0.1"
micromatch "^2.3.11"
+ realpath-native "^1.0.0"
slash "^1.0.0"
strip-bom "3.0.0"
write-file-atomic "^2.1.0"
- yargs "^9.0.0"
+ yargs "^10.0.3"
-jest-snapshot@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.2.1.tgz#29e49f16202416e47343e757e5eff948c07fd7b0"
+jest-serializer@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566"
+
+jest-snapshot@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.0.tgz#03d3ce63f8fa7352388afc6a3c8b5ccc3a180ed7"
dependencies:
chalk "^2.0.1"
- jest-diff "^21.2.1"
- jest-matcher-utils "^21.2.1"
+ jest-diff "^22.4.0"
+ jest-matcher-utils "^22.4.0"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
- pretty-format "^21.2.1"
+ pretty-format "^22.4.0"
-jest-util@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.2.1.tgz#a274b2f726b0897494d694a6c3d6a61ab819bb78"
+jest-util@^22.4.1:
+ version "22.4.1"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.1.tgz#dd17c3bdb067f8e90591563ec0c42bf847dc249f"
dependencies:
callsites "^2.0.0"
chalk "^2.0.1"
graceful-fs "^4.1.11"
- jest-message-util "^21.2.1"
- jest-mock "^21.2.0"
- jest-validate "^21.2.1"
+ is-ci "^1.0.10"
+ jest-message-util "^22.4.0"
mkdirp "^0.5.1"
+ source-map "^0.6.0"
-jest-validate@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7"
+jest-validate@^22.4.2:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.2.tgz#e789a4e056173bf97fe797a2df2d52105c57d4f4"
dependencies:
chalk "^2.0.1"
- jest-get-type "^21.2.0"
+ jest-config "^22.4.2"
+ jest-get-type "^22.1.0"
leven "^2.1.0"
- pretty-format "^21.2.1"
+ pretty-format "^22.4.0"
-jest@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/jest/-/jest-21.2.1.tgz#c964e0b47383768a1438e3ccf3c3d470327604e1"
+jest-worker@^22.2.2:
+ version "22.2.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390"
dependencies:
- jest-cli "^21.2.1"
+ merge-stream "^1.0.1"
+
+jest@^22.0.0:
+ version "22.4.2"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.2.tgz#34012834a49bf1bdd3bc783850ab44e4499afc20"
+ dependencies:
+ import-local "^1.0.0"
+ jest-cli "^22.4.2"
js-base64@^2.1.9:
version "2.3.2"
@@ -4789,29 +4908,36 @@ jschardet@^1.4.2:
version "1.6.0"
resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678"
-jsdom@^9.12.0:
- version "9.12.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
+jsdom@^11.5.1:
+ version "11.6.2"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.2.tgz#25d1ef332d48adf77fc5221fe2619967923f16bb"
dependencies:
- abab "^1.0.3"
- acorn "^4.0.4"
- acorn-globals "^3.1.0"
+ abab "^1.0.4"
+ acorn "^5.3.0"
+ acorn-globals "^4.1.0"
array-equal "^1.0.0"
- content-type-parser "^1.0.1"
+ browser-process-hrtime "^0.1.2"
+ content-type-parser "^1.0.2"
cssom ">= 0.3.2 < 0.4.0"
cssstyle ">= 0.2.37 < 0.3.0"
- escodegen "^1.6.1"
- html-encoding-sniffer "^1.0.1"
- nwmatcher ">= 1.3.9 < 2.0.0"
- parse5 "^1.5.1"
- request "^2.79.0"
- sax "^1.2.1"
- symbol-tree "^3.2.1"
- tough-cookie "^2.3.2"
- webidl-conversions "^4.0.0"
- whatwg-encoding "^1.0.1"
- whatwg-url "^4.3.0"
- xml-name-validator "^2.0.1"
+ domexception "^1.0.0"
+ escodegen "^1.9.0"
+ html-encoding-sniffer "^1.0.2"
+ left-pad "^1.2.0"
+ nwmatcher "^1.4.3"
+ parse5 "4.0.0"
+ pn "^1.1.0"
+ request "^2.83.0"
+ request-promise-native "^1.0.5"
+ sax "^1.2.4"
+ symbol-tree "^3.2.2"
+ tough-cookie "^2.3.3"
+ w3c-hr-time "^1.0.1"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.3"
+ whatwg-url "^6.4.0"
+ ws "^4.0.0"
+ xml-name-validator "^3.0.0"
jsesc@^1.3.0:
version "1.3.0"
@@ -4952,6 +5078,10 @@ ldjson-stream@^1.2.1:
split2 "^0.2.1"
through2 "^0.6.1"
+left-pad@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee"
+
leven@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
@@ -5151,6 +5281,10 @@ lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+
lodash.template@^4.2.4:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
@@ -5361,6 +5495,12 @@ merge-options@0.0.64:
dependencies:
is-plain-obj "^1.1.0"
+merge-stream@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
+ dependencies:
+ readable-stream "^2.0.1"
+
merge@^1.1.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
@@ -5609,14 +5749,14 @@ node-libs-browser@^2.0.0:
util "^0.10.3"
vm-browserify "0.0.4"
-node-notifier@^5.0.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff"
+node-notifier@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea"
dependencies:
growly "^1.3.0"
- semver "^5.3.0"
- shellwords "^0.1.0"
- which "^1.2.12"
+ semver "^5.4.1"
+ shellwords "^0.1.1"
+ which "^1.3.0"
node-pre-gyp@^0.6.39:
version "0.6.39"
@@ -5759,7 +5899,7 @@ number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-"nwmatcher@>= 1.3.9 < 2.0.0":
+nwmatcher@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
@@ -5804,6 +5944,13 @@ object.entries@^1.0.4:
function-bind "^1.1.0"
has "^1.0.1"
+object.getownpropertydescriptors@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.1"
+
object.omit@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -5938,10 +6085,6 @@ output-file-sync@^1.1.2:
mkdirp "^0.5.1"
object-assign "^4.1.0"
-p-cancelable@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
-
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -6025,9 +6168,9 @@ parse-passwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
-parse5@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
+parse5@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
parse5@^2.1.5:
version "2.2.3"
@@ -6193,6 +6336,10 @@ pluralize@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
+pn@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
+
portfinder@^1.0.9:
version "1.0.13"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
@@ -6994,9 +7141,9 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-pretty-format@^21.2.1:
- version "21.2.1"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36"
+pretty-format@^22.4.0:
+ version "22.4.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.0.tgz#237b1f7e1c50ed03bc65c03ccc29d7c8bb7beb94"
dependencies:
ansi-regex "^3.0.0"
ansi-styles "^3.2.0"
@@ -7087,6 +7234,10 @@ punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+punycode@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -7493,6 +7644,12 @@ readline2@^1.0.1:
is-fullwidth-code-point "^1.0.0"
mute-stream "0.0.5"
+realpath-native@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0"
+ dependencies:
+ util.promisify "^1.0.0"
+
recast@^0.10.1:
version "0.10.43"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.10.43.tgz#b95d50f6d60761a5f6252e15d80678168491ce7f"
@@ -7735,6 +7892,20 @@ replace-ext@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+request-promise-core@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
+ dependencies:
+ lodash "^4.13.1"
+
+request-promise-native@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
+ dependencies:
+ request-promise-core "1.1.1"
+ stealthy-require "^1.1.0"
+ tough-cookie ">=2.3.3"
+
request@2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
@@ -7762,7 +7933,7 @@ request@2.81.0:
tunnel-agent "^0.6.0"
uuid "^3.0.0"
-request@^2.72.0, request@^2.79.0:
+request@^2.72.0, request@^2.83.0:
version "2.83.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
dependencies:
@@ -7993,7 +8164,7 @@ sanitize-filename@^1.6.1:
dependencies:
truncate-utf8-bytes "^1.0.0"
-sax@^1.2.1, sax@~1.2.1:
+sax@^1.2.4, sax@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -8035,6 +8206,10 @@ semver-diff@^2.0.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+semver@^5.4.1:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+
send@0.16.1:
version "0.16.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3"
@@ -8123,7 +8298,7 @@ shelljs@^0.7.5:
interpret "^1.0.0"
rechoir "^0.6.2"
-shellwords@^0.1.0:
+shellwords@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
@@ -8271,13 +8446,19 @@ source-map-support@^0.4.15:
dependencies:
source-map "^0.5.6"
+source-map-support@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76"
+ dependencies:
+ source-map "^0.6.0"
+
source-map@0.1.31:
version "0.1.31"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.31.tgz#9f704d0d69d9e138a81badf6ebb4fde33d151c61"
dependencies:
amdefine ">=0.0.4"
-source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.6:
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
@@ -8287,7 +8468,7 @@ source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.2:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.6.1, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -8372,6 +8553,10 @@ ssri@^5.0.0:
dependencies:
safe-buffer "^5.1.0"
+stack-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620"
+
stackframe@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4"
@@ -8392,6 +8577,10 @@ stdin@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e"
+stealthy-require@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+
stream-browserify@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
@@ -8744,7 +8933,7 @@ symbol-observable@^1.0.1, symbol-observable@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
-symbol-tree@^3.2.1:
+symbol-tree@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
@@ -8941,15 +9130,23 @@ topbar@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/topbar/-/topbar-0.1.3.tgz#c9ef8776dc4469f7840e6416f4136ddeccf4b7c6"
-tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3:
+tough-cookie@>=2.3.3, tough-cookie@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
+ dependencies:
+ punycode "^1.4.1"
+
+tough-cookie@~2.3.0, tough-cookie@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
dependencies:
punycode "^1.4.1"
-tr46@~0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+tr46@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ dependencies:
+ punycode "^2.1.0"
trim-lines@^1.0.0:
version "1.1.0"
@@ -9251,6 +9448,13 @@ util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+util.promisify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
util@0.10.3, util@^0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
@@ -9331,6 +9535,12 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
+w3c-hr-time@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
+ dependencies:
+ browser-process-hrtime "^0.1.2"
+
walkdir@0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532"
@@ -9368,11 +9578,7 @@ wbuf@^1.1.0, wbuf@^1.7.2:
dependencies:
minimalistic-assert "^1.0.0"
-webidl-conversions@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-
-webidl-conversions@^4.0.0:
+webidl-conversions@^4.0.1, webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
@@ -9481,7 +9687,7 @@ what-input@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/what-input/-/what-input-5.0.3.tgz#340471c6157d592b61ac9d42a611941a110dfec2"
-whatwg-encoding@^1.0.1:
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3"
dependencies:
@@ -9491,12 +9697,13 @@ whatwg-fetch@>=0.10.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
-whatwg-url@^4.3.0:
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0"
+whatwg-url@^6.4.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08"
dependencies:
- tr46 "~0.0.3"
- webidl-conversions "^3.0.0"
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.0"
+ webidl-conversions "^4.0.1"
whet.extend@~0.9.9:
version "0.9.9"
@@ -9510,7 +9717,7 @@ 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.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.8, which@^1.2.9:
+which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.8, which@^1.2.9, which@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
dependencies:
@@ -9552,7 +9759,7 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-worker-farm@^1.3.1, worker-farm@^1.4.1:
+worker-farm@^1.4.1:
version "1.5.2"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae"
dependencies:
@@ -9588,6 +9795,13 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
+ws@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289"
+ dependencies:
+ async-limiter "~1.0.0"
+ safe-buffer "~5.1.0"
+
x-is-function@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e"
@@ -9600,9 +9814,9 @@ xdg-basedir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
-xml-name-validator@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
version "4.0.1"
@@ -9635,10 +9849,33 @@ yargs-parser@^7.0.0:
dependencies:
camelcase "^4.1.0"
+yargs-parser@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
+ dependencies:
+ camelcase "^4.1.0"
+
yargs@^1.2.6:
version "1.3.3"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.3.3.tgz#054de8b61f22eefdb7207059eaef9d6b83fb931a"
+yargs@^10.0.3:
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5"
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.1.1"
+ find-up "^2.1.0"
+ get-caller-file "^1.0.1"
+ os-locale "^2.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^8.1.0"
+
yargs@^3.5.4:
version "3.32.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
@@ -9706,24 +9943,6 @@ yargs@^8.0.2:
y18n "^3.2.1"
yargs-parser "^7.0.0"
-yargs@^9.0.0:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c"
- dependencies:
- camelcase "^4.1.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^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 "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^7.0.0"
-
yargs@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"