{
const { container, getByText } = renderWithProvider(
);
diff --git a/jest.config.js b/jest.config.js
index 4694ba5..16a0efb 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -7,8 +7,8 @@ module.export = {
moduleFileExtensions: ["js", "jsx", "json", "node"],
testPathIgnorePatterns: ["/node_modules/"],
setupFilesAfterEnv: [
- //"@testing-library/react/cleanup-after-each",
- //"@testing-library/jest-dom/extend-expect"
+ // "@testing-library/react/cleanup-after-each",
+ // "@testing-library/jest-dom/extend-expect"
// setupFiles before the tests are ran
]
};
diff --git a/lib/react-toasted.js b/lib/react-toasted.js
index 2cbdff8..dcb0aff 100644
--- a/lib/react-toasted.js
+++ b/lib/react-toasted.js
@@ -180,13 +180,11 @@ function _nonIterableSpread() {
var ToastedContext = React__default.createContext({});
-var position = ["toast-top-right", "toast-bottom-right", "toast-bottom-left", "toast-top-left", "toast-top-full-width", "toast-bottom-full-width", "toast-top-center", "toast-bottom-center"];
-
var ToastProgress = function ToastProgress(props) {
return props.percent > 0 && React__default.createElement("div", {
className: "toast-progress",
style: {
- width: parseInt(props.percent, 10) + "%"
+ width: "".concat(parseInt(props.percent, 10), "%")
}
});
};
@@ -209,13 +207,13 @@ var IntervalTimeManager = function IntervalTimeManager(params) {
stepTime: params.stepTime || 50,
callbackFunctions: params.callbackFunctions || {},
callback: function callback() {
- this.times["callback"] = this.getTime();
+ this.times.callback = this.getTime();
this.remaning = this.remaning - this.stepTime;
this.estimated = this.estimated + this.stepTime;
this.callCallbackFN("callback");
if (this.remaning <= 0) {
- return this.finish();
+ this.finish();
}
},
getTime: function getTime() {
@@ -225,45 +223,35 @@ var IntervalTimeManager = function IntervalTimeManager(params) {
return Math.floor(this.remaning / this.totalTime * 100);
},
start: function start() {
- this.times["started"] = this.getTime();
+ this.times.started = this.getTime();
this.callCallbackFN("before:start");
this.remaning = this.totalTime;
-
- this._setupInterval();
-
+ this.setupInterval();
this.callCallbackFN("after:start");
},
finish: function finish() {
- this.times["finished"] = this.getTime();
+ this.times.finished = this.getTime();
this.callCallbackFN("before:finish");
-
- this._clearInterval(this.id);
-
+ this.clearInterval(this.id);
this.callCallbackFN("after:finish");
},
stop: function stop() {
- this.times["stoped"] = this.getTime(); // People can stop manualy
+ this.times.stoped = this.getTime(); // People can stop manualy
this.callCallbackFN("before:stop");
-
- this._clearInterval(this.id);
-
+ this.clearInterval(this.id);
this.callCallbackFN("after:stop");
},
pause: function pause() {
- this.times["paused"] = this.getTime();
+ this.times.paused = this.getTime();
this.callCallbackFN("before:pause");
-
- this._clearInterval(this.id);
-
+ this.clearInterval(this.id);
this.callCallbackFN("after:pause");
},
resume: function resume() {
- this.times["resumed"] = this.getTime();
+ this.times.resumed = this.getTime();
this.callCallbackFN("before:resume");
-
- this._setupInterval();
-
+ this.setupInterval();
this.callCallbackFN("after:resume");
},
callCallbackFN: function callCallbackFN(type) {
@@ -272,10 +260,20 @@ var IntervalTimeManager = function IntervalTimeManager(params) {
this.callbackFunctions[type]();
}
},
- _clearInterval: function _clearInterval() {
+ clearInterval: function (_clearInterval) {
+ function clearInterval() {
+ return _clearInterval.apply(this, arguments);
+ }
+
+ clearInterval.toString = function () {
+ return _clearInterval.toString();
+ };
+
+ return clearInterval;
+ }(function () {
clearInterval(this.id);
- },
- _setupInterval: function _setupInterval() {
+ }),
+ setupInterval: function setupInterval() {
var _this = this;
this.id = setInterval(function () {
@@ -290,29 +288,52 @@ var Toast =
function (_Component) {
_inherits(Toast, _Component);
- function Toast(props) {
+ function Toast() {
+ var _getPrototypeOf2;
+
var _this;
_classCallCheck(this, Toast);
- _this = _possibleConstructorReturn(this, _getPrototypeOf(Toast).call(this, props));
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Toast)).call.apply(_getPrototypeOf2, [this].concat(args)));
+
+ _defineProperty(_assertThisInitialized(_this), "state", {
+ percent: 0,
+ showProgressBar: false
+ });
+
+ _defineProperty(_assertThisInitialized(_this), "progressBarTimer", null);
+
+ _defineProperty(_assertThisInitialized(_this), "timeoutTimer", null);
_defineProperty(_assertThisInitialized(_this), "getPercent", function () {
- if (_this.props.progressBarValue !== 0) {
- return _this.props.progressBarValue;
+ var progressBarValue = _this.props.progressBarValue;
+ var percent = _this.state.percent;
+
+ if (progressBarValue !== 0) {
+ return progressBarValue;
}
- return _this.state.percent;
+ return percent;
});
_defineProperty(_assertThisInitialized(_this), "onClick", function () {
- if (_this.props.onClick) {
- _this.props.onClick();
+ var _this$props = _this.props,
+ onClick = _this$props.onClick,
+ removeOnClick = _this$props.removeOnClick,
+ _remove = _this$props._remove;
+
+ if (onClick) {
+ onClick();
}
- if (_this.props.removeOnClick) {
- if (typeof _this.props._remove !== "undefined") {
- _this.props._remove(_this.props);
+ if (removeOnClick) {
+ if (typeof _remove === "function") {
+ _remove(_this.props);
}
}
});
@@ -326,8 +347,10 @@ function (_Component) {
_this.timeoutTimer.pause();
}
- if (_this.props.onMouseOver) {
- _this.props.onMouseOver();
+ var onMouseOver = _this.props.onMouseOver;
+
+ if (onMouseOver) {
+ onMouseOver();
}
});
@@ -340,25 +363,24 @@ function (_Component) {
_this.timeoutTimer.resume();
}
- if (_this.props.onMouseOut) {
- _this.props.onMouseOut();
+ var onMouseOut = _this.props.onMouseOut;
+
+ if (onMouseOut) {
+ onMouseOut();
}
});
- _this.progressBarTimer = null;
- _this.timeoutTimer = null;
- _this.state = {
- percent: 0,
- showProgressBar: false
- };
return _this;
}
_createClass(Toast, [{
key: "componentDidMount",
value: function componentDidMount() {
- if (this.props.onCreated) {
- this.props.onCreated();
+ this.setupProgressBarAndTimer();
+ var onCreated = this.props.onCreated;
+
+ if (onCreated) {
+ onCreated();
}
if (this.progressBarTimer != null) {
@@ -372,8 +394,10 @@ function (_Component) {
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
- if (this.props.onDestroyed) {
- this.props.onDestroyed();
+ var onDestroyed = this.props.onDestroyed;
+
+ if (onDestroyed) {
+ onDestroyed();
}
if (this.progressBarTimer != null) {
@@ -385,18 +409,24 @@ function (_Component) {
}
}
}, {
- key: "componentWillMount",
- value: function componentWillMount() {
+ key: "setupProgressBarAndTimer",
+ value: function setupProgressBarAndTimer() {
var _this2 = this;
- if (this.props.timeout !== 0) {
+ var _this$props2 = this.props,
+ timeout = _this$props2.timeout,
+ _remove = _this$props2._remove,
+ progressBar = _this$props2.progressBar,
+ progressBarValue = _this$props2.progressBarValue;
+
+ if (timeout !== 0) {
// SetUP timeout Manager
this.timeoutTimer = IntervalTimeManager({
- totalTime: this.props.timeout,
+ totalTime: timeout,
callbackFunctions: {
"after:finish": function afterFinish() {
- if (typeof _this2.props._remove !== "undefined") {
- _this2.props._remove(_this2.props);
+ if (typeof _remove === "function") {
+ _remove(_this2.props);
} // console.log("Timeout Fired");
},
@@ -408,15 +438,15 @@ function (_Component) {
}
}); // SetUP progressbar Time Manager
- if (this.props.progressBar !== false) {
+ if (progressBar !== false) {
this.setState({
showProgressBar: true
});
this.progressBarTimer = IntervalTimeManager({
- totalTime: this.props.timeout
+ totalTime: timeout
});
}
- } else if (this.props.progressBar !== false && this.props.progressBarValue !== 0) {
+ } else if (progressBar !== false && progressBarValue !== 0) {
this.setState({
showProgressBar: true
});
@@ -425,27 +455,35 @@ function (_Component) {
}, {
key: "render",
value: function render() {
+ var _this$props3 = this.props,
+ title = _this$props3.title,
+ msg = _this$props3.msg,
+ style = _this$props3.style,
+ classNames = _this$props3.classNames,
+ type = _this$props3.type;
+ var showProgressBar = this.state.showProgressBar;
return React__default.createElement("div", {
- style: _objectSpread2({}, this.props.style),
- className: ["toast", "toast-" + this.props.type].concat(this.props.classNames).join(" "),
+ style: _objectSpread2({}, style),
+ className: ["toast", "toast-".concat(type)].concat(classNames).join(" "),
onClick: this.onClick,
onMouseOver: this.onMouseOver,
- onMouseOut: this.onMouseOut
- }, this.state.showProgressBar && React__default.createElement(ToastProgress, {
+ onFocus: this.onMouseOver,
+ onMouseOut: this.onMouseOut,
+ onBlur: this.onMouseOut,
+ role: "presentation"
+ }, showProgressBar && React__default.createElement(ToastProgress, {
percent: this.getPercent()
- }), this.props.title !== "" && React__default.createElement("div", {
+ }), title !== "" && React__default.createElement("div", {
className: "toast-title"
- }, this.props.title), React__default.createElement("div", {
+ }, title), React__default.createElement("div", {
className: "toast-message"
- }, this.props.msg));
+ }, msg));
}
}]);
return Toast;
}(React.Component);
-_defineProperty(Toast, "displayName", "Toast");
-
Toast.defaultProps = {
type: "success",
title: "",
@@ -460,14 +498,15 @@ Toast.defaultProps = {
onDestroyed: false,
timeout: 5000,
progressBar: true,
- progressBarValue: 0
+ progressBarValue: 0,
+ _remove: false
};
Toast.propTypes = {
/** Toast Title */
title: PropsType.string,
/** Toast Message */
- msg: PropsType.string.isRequired,
+ msg: PropsType.string,
/** Toast Injected Class Names */
classNames: PropsType.array,
@@ -475,11 +514,8 @@ Toast.propTypes = {
/** Toast Injected Style */
style: PropsType.object,
- /** Toast Position */
- position: PropsType.string.isRequired,
-
/** Toast Type */
- type: PropsType.oneOf(["success", "warning", "error", "info"]).isRequired,
+ type: PropsType.oneOf(["success", "warning", "error", "info"]),
/* Close Toast When it clicked */
removeOnClick: PropsType.bool,
@@ -506,19 +542,25 @@ Toast.propTypes = {
progressBar: PropsType.bool,
/** Static Progress Bar Value */
- progressBarValue: PropsType.number
+ progressBarValue: PropsType.number,
+
+ /** Toast onDestroyed event function */
+ _remove: PropsType.oneOfType([PropsType.bool, PropsType.func])
};
+Toast.displayName = "Toast";
var lastId = 0;
var newID = (function () {
- lastId++;
+ lastId += 1;
return lastId;
});
+var position = ["toast-top-right", "toast-bottom-right", "toast-bottom-left", "toast-top-left", "toast-top-full-width", "toast-bottom-full-width", "toast-top-center", "toast-bottom-center"];
+
var generateList = function generateList(positions) {
var list = {};
- for (var i = 0; i <= positions.length - 1; i++) {
+ for (var i = 0; i <= positions.length - 1; i += 1) {
list[positions[i]] = [];
}
@@ -555,14 +597,14 @@ var removeToast = function removeToast(item) {
var nameList = Object.keys(savedNames);
if (indexList.includes(item.index)) {
- for (var i = 0; i <= nameList.length - 1; i++) {
+ for (var i = 0; i <= nameList.length - 1; i += 1) {
var name = nameList[i];
if (savedNames[name] === item.index) {
delete savedNames[name];
}
}
- } //delete list[item.position][item.index];
+ } // delete list[item.position][item.index];
return {
@@ -575,7 +617,7 @@ var findToastByIndex = function findToastByIndex(list, index) {
var item = [];
var positions = Object.keys(list);
- for (var i = 0; i <= positions.length - 1; i++) {
+ for (var i = 0; i <= positions.length - 1; i += 1) {
var position = positions[i];
item = list[position].filter(function (toast) {
return toast.index === index;
@@ -594,18 +636,30 @@ var ToastContainer =
function (_Component) {
_inherits(ToastContainer, _Component);
- function ToastContainer(props) {
+ function ToastContainer() {
+ var _getPrototypeOf2;
+
var _this;
_classCallCheck(this, ToastContainer);
- _this = _possibleConstructorReturn(this, _getPrototypeOf(ToastContainer).call(this, props));
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ToastContainer)).call.apply(_getPrototypeOf2, [this].concat(args)));
+
+ _defineProperty(_assertThisInitialized(_this), "state", {
+ list: {},
+ positions: [],
+ savedNames: {}
+ });
_defineProperty(_assertThisInitialized(_this), "processObjectData", function (data) {
var newData = {}; // if Object
if (_typeof(data) !== "object") {
- newData["msg"] = data.toString();
+ newData.msg = data.toString();
} else if (typeof data.msg === "undefined") {
throw Error("msg cannot be blank");
} else {
@@ -615,38 +669,44 @@ function (_Component) {
var options = ["classNames", "position", "newestOnTop", "type", "timeout", "progressBar", "progressBarValue", "removeOnClick", "preventDuplicates", "style"];
+ var all = _this.props;
options.forEach(function (key) {
if (typeof newData[key] === "undefined") {
- newData[key] = _this.props["default".concat(key.charAt(0).toUpperCase()).concat(key.slice(1))];
+ newData[key] = all["default".concat(key.charAt(0).toUpperCase()).concat(key.slice(1))];
}
});
return newData;
});
_defineProperty(_assertThisInitialized(_this), "removeAll", function () {
+ var defaultPositions = _this.props.defaultPositions;
+
_this.setState({
- list: generateList(_this.props.defaultPositions),
+ list: generateList(defaultPositions),
savedNames: {}
});
});
_defineProperty(_assertThisInitialized(_this), "remove", function (data) {
- var item = []; // if is it an object
+ var item = [];
+ var _this$state = _this.state,
+ list = _this$state.list,
+ savedNames = _this$state.savedNames; // if is it an object
if (_typeof(data) === "object") {
if (typeof data.position !== "undefined") {
- item = _this.state.list[data.position].filter(function (toast) {
+ item = list[data.position].filter(function (toast) {
return toast.index === data.index;
});
} else if (typeof data.index !== "undefined") {
- item = findToastByIndex(_objectSpread2({}, _this.state.list), data.index);
+ item = findToastByIndex(_objectSpread2({}, list), data.index);
} else {
throw Error("Invalid Data Format for remove Toast ".concat(data.toString()));
}
} else if ( // if is it a toast name
- typeof data === "string" && typeof _this.state.savedNames[data] !== "undefined") {
- var index = _this.state.savedNames[data];
- item = findToastByIndex(_objectSpread2({}, _this.state.list), index);
+ typeof data === "string" && typeof savedNames[data] !== "undefined") {
+ var index = savedNames[data];
+ item = findToastByIndex(_objectSpread2({}, list), index);
}
if (item.length !== 0) {
@@ -656,27 +716,30 @@ function (_Component) {
_defineProperty(_assertThisInitialized(_this), "addToast", function (data) {
var found = [];
+ var _this$state2 = _this.state,
+ list = _this$state2.list,
+ positions = _this$state2.positions;
if (data.preventDuplicates) {
- found = _this.state.list[data.position].filter(function (toast) {
+ found = list[data.position].filter(function (toast) {
return toast.title === data.title && toast.msg === data.msg;
});
if (found.length > 0) {
return {
- index: found[0]["index"]
+ index: found[0].index
};
}
} // We can use props-type but they might use custom position list.
- if (!_this.state.positions.includes(data.position)) {
+ if (!positions.includes(data.position)) {
throw Error("Invalid Toast Position ".concat(data.position));
}
var newData = _objectSpread2({}, data);
- newData["index"] = newID();
+ newData.index = newID();
_this.setState(addToast(newData));
@@ -686,12 +749,12 @@ function (_Component) {
});
_defineProperty(_assertThisInitialized(_this), "add", function (d) {
- return _this._addData(_this.processObjectData(d));
+ return _this.addData(_this.processObjectData(d));
});
- _defineProperty(_assertThisInitialized(_this), "_addData", function (data) {
+ _defineProperty(_assertThisInitialized(_this), "addData", function (data) {
if (_typeof(data) !== "object") {
- throw Error("_addData accept only Object", data.toString());
+ throw Error("addData accept only Object", data.toString());
}
return _this.addToast(data);
@@ -700,68 +763,73 @@ function (_Component) {
_defineProperty(_assertThisInitialized(_this), "e", function (msg, title) {
var data = _this.processObjectData(msg);
- data["type"] = "error";
+ data.type = "error";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return _this._addData(data);
+ return _this.addData(data);
});
_defineProperty(_assertThisInitialized(_this), "s", function (msg, title) {
var data = _this.processObjectData(msg);
- data["type"] = "success";
+ data.type = "success";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return _this._addData(data);
+ return _this.addData(data);
});
_defineProperty(_assertThisInitialized(_this), "w", function (msg, title) {
var data = _this.processObjectData(msg);
- data["type"] = "warning";
+ data.type = "warning";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return _this._addData(data);
+ return _this.addData(data);
});
_defineProperty(_assertThisInitialized(_this), "i", function (msg, title) {
var data = _this.processObjectData(msg);
- data["type"] = "info";
+ data.type = "info";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return _this._addData(data);
+ return _this.addData(data);
});
- _this.state = {
- list: generateList(props.defaultPositions),
- positions: props.defaultPositions,
- savedNames: {}
- };
return _this;
}
_createClass(ToastContainer, [{
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ var defaultPositions = this.props.defaultPositions;
+ this.setState({
+ list: generateList(defaultPositions),
+ positions: defaultPositions,
+ savedNames: {}
+ });
+ }
+ }, {
key: "render",
value: function render() {
var _this2 = this;
- //console.log("render provider");
- var _this$state = this.state,
- positions = _this$state.positions,
- list = _this$state.list;
+ // console.log("render provider");
+ var _this$state3 = this.state,
+ positions = _this$state3.positions,
+ list = _this$state3.list;
return React__default.createElement(React__default.Fragment, null, positions.map(function (position) {
return React__default.createElement("div", {
className: "toast-container ".concat(position),
@@ -779,8 +847,6 @@ function (_Component) {
return ToastContainer;
}(React.Component);
-_defineProperty(ToastContainer, "displayName", "ToastContainer");
-
ToastContainer.defaultProps = {
defaultClassNames: [],
defaultPosition: "toast-top-right",
@@ -795,18 +861,19 @@ ToastContainer.defaultProps = {
defaultPositions: position
};
ToastContainer.propTypes = {
- defaultPositions: PropsType.array.isRequired,
- defaultPosition: PropsType.string.isRequired,
- defaultNewestOnTop: PropsType.bool.isRequired,
+ defaultPositions: PropsType.array,
+ defaultPosition: PropsType.string,
+ defaultNewestOnTop: PropsType.bool,
defaultClassNames: PropsType.array,
defaultStyle: PropsType.object,
- defaultType: PropsType.oneOf(["success", "warning", "error", "info"]).isRequired,
+ defaultType: PropsType.oneOf(["success", "warning", "error", "info"]),
defaultRemoveOnClick: PropsType.bool,
defaultTimeout: PropsType.number,
defaultProgressBar: PropsType.bool,
defaultProgressBarValue: PropsType.number,
defaultPreventDuplicates: PropsType.bool
};
+ToastContainer.displayName = "ToastContainer";
var Provider =
/*#__PURE__*/
@@ -860,7 +927,6 @@ function (_React$Component) {
return _this.container.current.removeAll();
});
- _this.state = {};
_this.container = React__default.createRef();
return _this;
}
@@ -868,6 +934,8 @@ function (_React$Component) {
_createClass(Provider, [{
key: "render",
value: function render() {
+ // eslint-disable-next-line
+ var children = this.props.children;
return React__default.createElement(React__default.Fragment, null, React__default.createElement(ToastContainer, _extends({
ref: this.container
}, this.props)), React__default.createElement(ToastedContext.Provider, {
@@ -880,30 +948,36 @@ function (_React$Component) {
remove: this.remove,
removeAll: this.removeAll
}
- }, this.props.children));
+ }, children));
}
}]);
return Provider;
}(React__default.Component);
-_defineProperty(Provider, "displayName", "Provider");
+Provider.displayName = "Provider";
-var Consumer = function Consumer(props) {
- return React__default.createElement(ToastedContext.Consumer, null, props.children);
+var Consumer = function Consumer(_ref) {
+ var children = _ref.children;
+ return React__default.createElement(ToastedContext.Consumer, null, children);
};
+Consumer.propTypes = {
+ children: PropsType.elementType.isRequired
+};
Consumer.displayName = "Consumer";
-var withToasted = function withToasted(Component) {
- return function (props) {
+function withToasted(Component) {
+ return function WrappedWithToast(props) {
return React__default.createElement(ToastedContext.Consumer, null, function (toasted) {
return React__default.createElement(Component, _extends({}, props, {
toasted: toasted
}));
});
};
-};
+}
+
+withToasted.displayName = "withToasted";
exports.Consumer = Consumer;
exports.Provider = Provider;
diff --git a/package.json b/package.json
index 93abb77..bbb5e34 100755
--- a/package.json
+++ b/package.json
@@ -10,34 +10,49 @@
"toastr"
],
"main": "lib/react-toasted.js",
- "dependencies": {},
+ "dependencies": {
+ "react": "^16.0.0",
+ "prop-types": "^15.7.2"
+ },
"devDependencies": {
"@babel/cli": "^7.5.5",
"@babel/core": "^7.5.5",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@babel/preset-react": "^7.0.0",
- "storybook-addon-jsx": "^7.1.5",
- "storybook-readme": "^5.0.6",
"@storybook/addon-actions": "^5.1.10",
"@storybook/addon-info": "^5.1.10",
"@storybook/addon-knobs": "^5.1.10",
"@storybook/addons": "^5.1.10",
"@storybook/react": "^5.1.10",
"@storybook/storybook-deployer": "^2.8.1",
- "babel-loader": "^8.0.6",
"@testing-library/jest-dom": "^4.0.0",
"@testing-library/react": "^8.0.9",
+ "@typescript-eslint/eslint-plugin": "1.x",
+ "@typescript-eslint/parser": "1.x",
+ "animate.css": "^3.7.2",
+ "babel-eslint": "10.x",
"babel-jest": "^24.8.0",
+ "babel-loader": "^8.0.6",
+ "eslint": "6.x",
+ "eslint-config-airbnb": "^18.0.0",
+ "eslint-config-prettier": "^6.0.0",
+ "eslint-config-react-app": "^5.0.0",
+ "eslint-plugin-flowtype": "3.x",
+ "eslint-plugin-import": "2.x",
+ "eslint-plugin-jsx-a11y": "6.x",
+ "eslint-plugin-prettier": "^3.1.0",
+ "eslint-plugin-react": "7.x",
+ "eslint-plugin-react-hooks": "1.x",
"jest": "^24.8.0",
- "react": "^16.8.6",
+ "node-sass": "^4.12.0",
+ "prettier": "^1.18.2",
"react-dom": "^16.9.0",
- "prop-types": "^15.7.2",
"rollup": "^1.19.3",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-scss": "^1.0.2",
- "node-sass": "^4.12.0",
- "animate.css": "^3.7.2"
+ "storybook-addon-jsx": "^7.1.5",
+ "storybook-readme": "^5.0.6"
},
"files": [
"lib/react-toasted.js",
@@ -48,6 +63,8 @@
"build": "rollup -c;rm lib/style.js",
"clear": "rm lib/*",
"test": "jest",
+ "lint": "eslint src/*.js src/components/*.js src/utils/*.js __tests__/*.js --fix",
+ "format": "prettier src/*.js src/components/*.js src/utils/*.js __tests__/*.js --write",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook",
"deploy-storybook": "storybook-to-ghpages"
diff --git a/src/components/Toast.js b/src/components/Toast.js
index 849ba1d..d923804 100755
--- a/src/components/Toast.js
+++ b/src/components/Toast.js
@@ -1,26 +1,20 @@
import React, { Component } from "react";
+import PropsType from "prop-types";
import ToastProgress from "./ToastProgress";
import IntervalTimeManager from "../utils/IntervalTimeManager";
-import PropsType from "prop-types";
+
class Toast extends Component {
- constructor(props) {
- super(props);
+ state = { percent: 0, showProgressBar: false };
+
+ progressBarTimer = null;
+
+ timeoutTimer = null;
- this.progressBarTimer = null;
- this.timeoutTimer = null;
- this.state = { percent: 0, showProgressBar: false };
- }
- static displayName = "Toast";
- getPercent = () => {
- if (this.props.progressBarValue !== 0) {
- return this.props.progressBarValue;
- }
- return this.state.percent;
- };
componentDidMount() {
this.setupProgressBarAndTimer();
- if (this.props.onCreated) {
- this.props.onCreated();
+ const { onCreated } = this.props;
+ if (onCreated) {
+ onCreated();
}
if (this.progressBarTimer != null) {
this.progressBarTimer.start();
@@ -31,8 +25,9 @@ class Toast extends Component {
}
componentWillUnmount() {
- if (this.props.onDestroyed) {
- this.props.onDestroyed();
+ const { onDestroyed } = this.props;
+ if (onDestroyed) {
+ onDestroyed();
}
if (this.progressBarTimer != null) {
this.progressBarTimer.stop();
@@ -41,15 +36,26 @@ class Toast extends Component {
this.timeoutTimer.stop();
}
}
+
+ getPercent = () => {
+ const { progressBarValue } = this.props;
+ const { percent } = this.state;
+ if (progressBarValue !== 0) {
+ return progressBarValue;
+ }
+ return percent;
+ };
+
setupProgressBarAndTimer() {
- if (this.props.timeout !== 0) {
+ const { timeout, _remove, progressBar, progressBarValue } = this.props;
+ if (timeout !== 0) {
// SetUP timeout Manager
this.timeoutTimer = IntervalTimeManager({
- totalTime: this.props.timeout,
+ totalTime: timeout,
callbackFunctions: {
"after:finish": () => {
- if (typeof this.props._remove !== "undefined") {
- this.props._remove(this.props);
+ if (typeof _remove === "function") {
+ _remove(this.props);
}
// console.log("Timeout Fired");
},
@@ -61,33 +67,33 @@ class Toast extends Component {
}
});
// SetUP progressbar Time Manager
- if (this.props.progressBar !== false) {
+ if (progressBar !== false) {
this.setState({
showProgressBar: true
});
this.progressBarTimer = IntervalTimeManager({
- totalTime: this.props.timeout
+ totalTime: timeout
});
}
- } else if (
- this.props.progressBar !== false &&
- this.props.progressBarValue !== 0
- ) {
+ } else if (progressBar !== false && progressBarValue !== 0) {
this.setState({
showProgressBar: true
});
}
}
+
onClick = () => {
- if (this.props.onClick) {
- this.props.onClick();
+ const { onClick, removeOnClick, _remove } = this.props;
+ if (onClick) {
+ onClick();
}
- if (this.props.removeOnClick) {
- if (typeof this.props._remove !== "undefined") {
- this.props._remove(this.props);
+ if (removeOnClick) {
+ if (typeof _remove === "function") {
+ _remove(this.props);
}
}
};
+
onMouseOver = () => {
if (this.progressBarTimer != null) {
this.progressBarTimer.pause();
@@ -95,10 +101,12 @@ class Toast extends Component {
if (this.timeoutTimer != null) {
this.timeoutTimer.pause();
}
- if (this.props.onMouseOver) {
- this.props.onMouseOver();
+ const { onMouseOver } = this.props;
+ if (onMouseOver) {
+ onMouseOver();
}
};
+
onMouseOut = () => {
if (this.progressBarTimer != null) {
this.progressBarTimer.resume();
@@ -106,30 +114,31 @@ class Toast extends Component {
if (this.timeoutTimer != null) {
this.timeoutTimer.resume();
}
- if (this.props.onMouseOut) {
- this.props.onMouseOut();
+ const { onMouseOut } = this.props;
+ if (onMouseOut) {
+ onMouseOut();
}
};
+
render() {
+ const { title, msg, style, classNames, type } = this.props;
+ const { showProgressBar } = this.state;
return (
- {this.state.showProgressBar && (
-
- )}
- {this.props.title !== "" && (
-
{this.props.title}
- )}
-
{this.props.msg}
+ {showProgressBar &&
}
+ {title !== "" &&
{title}
}
+
{msg}
);
}
@@ -148,21 +157,20 @@ Toast.defaultProps = {
onDestroyed: false,
timeout: 5000,
progressBar: true,
- progressBarValue: 0
+ progressBarValue: 0,
+ _remove: false
};
Toast.propTypes = {
/** Toast Title */
title: PropsType.string,
/** Toast Message */
- msg: PropsType.string.isRequired,
+ msg: PropsType.string,
/** Toast Injected Class Names */
classNames: PropsType.array,
/** Toast Injected Style */
style: PropsType.object,
- /** Toast Position */
- position: PropsType.string.isRequired,
/** Toast Type */
- type: PropsType.oneOf(["success", "warning", "error", "info"]).isRequired,
+ type: PropsType.oneOf(["success", "warning", "error", "info"]),
/* Close Toast When it clicked */
removeOnClick: PropsType.bool,
/** Toast onClick event */
@@ -180,6 +188,9 @@ Toast.propTypes = {
/** Show Progress Bar? */
progressBar: PropsType.bool,
/** Static Progress Bar Value */
- progressBarValue: PropsType.number
+ progressBarValue: PropsType.number,
+ /** Toast onDestroyed event function */
+ _remove: PropsType.oneOfType([PropsType.bool, PropsType.func])
};
+Toast.displayName = "Toast";
export default Toast;
diff --git a/src/components/ToastContainer.js b/src/components/ToastContainer.js
index 5384e9f..50499ea 100755
--- a/src/components/ToastContainer.js
+++ b/src/components/ToastContainer.js
@@ -1,8 +1,8 @@
import React, { Component } from "react";
import PropsType from "prop-types";
-import positions from "../positions";
import Toast from "./Toast";
import newID from "../utils/newid";
+import basePositions from "../positions";
// for manupulation state
import {
generateList,
@@ -12,21 +12,26 @@ import {
} from "../utils/helper";
class ToastContainer extends Component {
- constructor(props) {
- super(props);
- this.state = {
- list: generateList(props.defaultPositions),
- positions: props.defaultPositions,
+ state = {
+ list: {},
+ positions: [],
+ savedNames: {}
+ };
+
+ componentDidMount() {
+ const { defaultPositions } = this.props;
+ this.setState({
+ list: generateList(defaultPositions),
+ positions: defaultPositions,
savedNames: {}
- };
+ });
}
- static displayName = "ToastContainer";
processObjectData = data => {
let newData = {};
// if Object
if (typeof data !== "object") {
- newData["msg"] = data.toString();
+ newData.msg = data.toString();
} else if (typeof data.msg === "undefined") {
throw Error("msg cannot be blank");
} else {
@@ -35,7 +40,7 @@ class ToastContainer extends Component {
}
// if String
- let options = [
+ const options = [
"classNames",
"position",
"newestOnTop",
@@ -47,115 +52,128 @@ class ToastContainer extends Component {
"preventDuplicates",
"style"
];
+ const all = this.props;
options.forEach(key => {
if (typeof newData[key] === "undefined") {
- newData[key] = this.props[
- `default${key.charAt(0).toUpperCase()}${key.slice(1)}`
- ];
+ newData[key] =
+ all[`default${key.charAt(0).toUpperCase()}${key.slice(1)}`];
}
});
return newData;
};
+
removeAll = () => {
+ const { defaultPositions } = this.props;
this.setState({
- list: generateList(this.props.defaultPositions),
+ list: generateList(defaultPositions),
savedNames: {}
});
};
+
remove = data => {
let item = [];
+ const { list, savedNames } = this.state;
+
// if is it an object
if (typeof data === "object") {
if (typeof data.position !== "undefined") {
- item = this.state.list[data.position].filter(toast => {
+ item = list[data.position].filter(toast => {
return toast.index === data.index;
});
} else if (typeof data.index !== "undefined") {
- item = findToastByIndex({ ...this.state.list }, data.index);
+ item = findToastByIndex({ ...list }, data.index);
} else {
throw Error(`Invalid Data Format for remove Toast ${data.toString()}`);
}
} else if (
// if is it a toast name
typeof data === "string" &&
- typeof this.state.savedNames[data] !== "undefined"
+ typeof savedNames[data] !== "undefined"
) {
- let index = this.state.savedNames[data];
- item = findToastByIndex({ ...this.state.list }, index);
+ const index = savedNames[data];
+ item = findToastByIndex({ ...list }, index);
}
if (item.length !== 0) {
this.setState(removeToast(item[0]));
}
};
+
addToast = data => {
- var found = [];
+ let found = [];
+ const { list, positions } = this.state;
if (data.preventDuplicates) {
- found = this.state.list[data.position].filter(toast => {
+ found = list[data.position].filter(toast => {
return toast.title === data.title && toast.msg === data.msg;
});
if (found.length > 0) {
- return { index: found[0]["index"] };
+ return { index: found[0].index };
}
}
// We can use props-type but they might use custom position list.
- if (!this.state.positions.includes(data.position)) {
+ if (!positions.includes(data.position)) {
throw Error(`Invalid Toast Position ${data.position}`);
}
- let newData = { ...data };
- newData["index"] = newID();
+ const newData = { ...data };
+ newData.index = newID();
this.setState(addToast(newData));
return {
index: newData.index
};
};
+
add = d => {
- return this._addData(this.processObjectData(d));
+ return this.addData(this.processObjectData(d));
};
- _addData = data => {
+
+ addData = data => {
if (typeof data !== "object") {
- throw Error("_addData accept only Object", data.toString());
+ throw Error("addData accept only Object", data.toString());
}
return this.addToast(data);
};
+
e = (msg, title) => {
- var data = this.processObjectData(msg);
- data["type"] = "error";
+ const data = this.processObjectData(msg);
+ data.type = "error";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return this._addData(data);
+ return this.addData(data);
};
+
s = (msg, title) => {
- var data = this.processObjectData(msg);
- data["type"] = "success";
+ const data = this.processObjectData(msg);
+ data.type = "success";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return this._addData(data);
+ return this.addData(data);
};
+
w = (msg, title) => {
- var data = this.processObjectData(msg);
- data["type"] = "warning";
+ const data = this.processObjectData(msg);
+ data.type = "warning";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return this._addData(data);
+ return this.addData(data);
};
+
i = (msg, title) => {
- var data = this.processObjectData(msg);
- data["type"] = "info";
+ const data = this.processObjectData(msg);
+ data.type = "info";
if (typeof title !== "undefined") {
- data["title"] = title;
+ data.title = title;
}
- return this._addData(data);
+ return this.addData(data);
};
render() {
- //console.log("render provider");
- let { positions, list } = this.state;
+ // console.log("render provider");
+ const { positions, list } = this.state;
return (
{positions.map(position => (
@@ -183,21 +201,21 @@ ToastContainer.defaultProps = {
defaultProgressBarValue: 0,
defaultPreventDuplicates: false,
defaultStyle: {},
- defaultPositions: positions
+ defaultPositions: basePositions
};
ToastContainer.propTypes = {
- defaultPositions: PropsType.array.isRequired,
- defaultPosition: PropsType.string.isRequired,
- defaultNewestOnTop: PropsType.bool.isRequired,
+ defaultPositions: PropsType.array,
+ defaultPosition: PropsType.string,
+ defaultNewestOnTop: PropsType.bool,
defaultClassNames: PropsType.array,
defaultStyle: PropsType.object,
- defaultType: PropsType.oneOf(["success", "warning", "error", "info"])
- .isRequired,
+ defaultType: PropsType.oneOf(["success", "warning", "error", "info"]),
defaultRemoveOnClick: PropsType.bool,
defaultTimeout: PropsType.number,
defaultProgressBar: PropsType.bool,
defaultProgressBarValue: PropsType.number,
defaultPreventDuplicates: PropsType.bool
};
+ToastContainer.displayName = "ToastContainer";
export default ToastContainer;
diff --git a/src/components/ToastProgress.js b/src/components/ToastProgress.js
index b58e75e..a0a5f5b 100755
--- a/src/components/ToastProgress.js
+++ b/src/components/ToastProgress.js
@@ -1,11 +1,12 @@
import React from "react";
import PropsType from "prop-types";
+
const ToastProgress = props => {
return (
props.percent > 0 && (
)
);
diff --git a/src/consumer.js b/src/consumer.js
index d39927b..4404a41 100755
--- a/src/consumer.js
+++ b/src/consumer.js
@@ -1,8 +1,12 @@
import React from "react";
+import PropTypes from "prop-types";
import ToastedContext from "./context";
-//const Consumer = ToastedContext.Consumer;
-const Consumer = props => {
- return {props.children};
+// const Consumer = ToastedContext.Consumer;
+const Consumer = ({ children }) => {
+ return {children};
+};
+Consumer.propTypes = {
+ children: PropTypes.elementType.isRequired
};
Consumer.displayName = "Consumer";
export default Consumer;
diff --git a/src/context.js b/src/context.js
index 753553e..3cd2b7f 100755
--- a/src/context.js
+++ b/src/context.js
@@ -1,3 +1,4 @@
import React from "react";
+
const ToastedContext = React.createContext({});
export default ToastedContext;
diff --git a/src/provider.js b/src/provider.js
index 33f5bce..75e199e 100755
--- a/src/provider.js
+++ b/src/provider.js
@@ -5,36 +5,43 @@ import ToastContainer from "./components/ToastContainer";
class Provider extends React.Component {
constructor(props) {
super(props);
- this.state = {};
this.container = React.createRef();
}
- static displayName = "Provider";
s = (...params) => {
return this.container.current.s(...params);
};
+
i = (...params) => {
return this.container.current.i(...params);
};
+
w = (...params) => {
return this.container.current.w(...params);
};
+
e = (...params) => {
return this.container.current.e(...params);
};
+
add = (...params) => {
return this.container.current.add(...params);
};
+
remove = (...params) => {
return this.container.current.remove(...params);
};
+
removeAll = () => {
return this.container.current.removeAll();
};
+
render() {
+ // eslint-disable-next-line
+ const { children } = this.props;
return (
- {/*We could avoid react.js re-render.*/}
+ {/* We could avoid react.js re-render. */}
- {this.props.children}
+ {children}
);
}
}
-
+Provider.displayName = "Provider";
export default Provider;
diff --git a/src/utils/IntervalTimeManager.js b/src/utils/IntervalTimeManager.js
index 03795ec..4ed84a5 100755
--- a/src/utils/IntervalTimeManager.js
+++ b/src/utils/IntervalTimeManager.js
@@ -7,7 +7,7 @@ const IntervalTimeManager = params => ({
stepTime: params.stepTime || 50,
callbackFunctions: params.callbackFunctions || {},
callback() {
- this.times["callback"] = this.getTime();
+ this.times.callback = this.getTime();
this.remaning = this.remaning - this.stepTime;
this.estimated = this.estimated + this.stepTime;
@@ -15,7 +15,7 @@ const IntervalTimeManager = params => ({
this.callCallbackFN("callback");
if (this.remaning <= 0) {
- return this.finish();
+ this.finish();
}
},
getTime() {
@@ -25,35 +25,35 @@ const IntervalTimeManager = params => ({
return Math.floor((this.remaning / this.totalTime) * 100);
},
start() {
- this.times["started"] = this.getTime();
+ this.times.started = this.getTime();
this.callCallbackFN("before:start");
this.remaning = this.totalTime;
- this._setupInterval();
+ this.setupInterval();
this.callCallbackFN("after:start");
},
finish() {
- this.times["finished"] = this.getTime();
+ this.times.finished = this.getTime();
this.callCallbackFN("before:finish");
- this._clearInterval(this.id);
+ this.clearInterval(this.id);
this.callCallbackFN("after:finish");
},
stop() {
- this.times["stoped"] = this.getTime();
+ this.times.stoped = this.getTime();
// People can stop manualy
this.callCallbackFN("before:stop");
- this._clearInterval(this.id);
+ this.clearInterval(this.id);
this.callCallbackFN("after:stop");
},
pause() {
- this.times["paused"] = this.getTime();
+ this.times.paused = this.getTime();
this.callCallbackFN("before:pause");
- this._clearInterval(this.id);
+ this.clearInterval(this.id);
this.callCallbackFN("after:pause");
},
resume() {
- this.times["resumed"] = this.getTime();
+ this.times.resumed = this.getTime();
this.callCallbackFN("before:resume");
- this._setupInterval();
+ this.setupInterval();
this.callCallbackFN("after:resume");
},
callCallbackFN(type) {
@@ -62,10 +62,10 @@ const IntervalTimeManager = params => ({
this.callbackFunctions[type]();
}
},
- _clearInterval() {
+ clearInterval() {
clearInterval(this.id);
},
- _setupInterval() {
+ setupInterval() {
this.id = setInterval(() => {
this.callback();
}, this.stepTime);
diff --git a/src/utils/helper.js b/src/utils/helper.js
index 672f734..a4f2d78 100755
--- a/src/utils/helper.js
+++ b/src/utils/helper.js
@@ -1,6 +1,6 @@
export const generateList = positions => {
- let list = {};
- for (var i = 0; i <= positions.length - 1; i++) {
+ const list = {};
+ for (let i = 0; i <= positions.length - 1; i += 1) {
list[positions[i]] = [];
}
return list;
@@ -9,7 +9,7 @@ export const generateList = positions => {
// hhttps://twitter.com/dan_abramov/status/824308413559668744
export const addToast = newData => {
return state => {
- let { list, savedNames } = state;
+ const { list, savedNames } = state;
if (typeof newData.name !== "undefined") {
savedNames[newData.name] = newData.index;
}
@@ -23,31 +23,31 @@ export const addToast = newData => {
};
export const removeToast = item => {
return state => {
- let list = { ...state.list };
- let savedNames = { ...state.savedNames };
+ const list = { ...state.list };
+ const savedNames = { ...state.savedNames };
list[item.position] = list[item.position].filter(toast => {
return toast.index !== item.index;
});
- let indexList = Object.values(savedNames);
- let nameList = Object.keys(savedNames);
+ const indexList = Object.values(savedNames);
+ const nameList = Object.keys(savedNames);
if (indexList.includes(item.index)) {
- for (let i = 0; i <= nameList.length - 1; i++) {
- let name = nameList[i];
+ for (let i = 0; i <= nameList.length - 1; i += 1) {
+ const name = nameList[i];
if (savedNames[name] === item.index) {
delete savedNames[name];
}
}
}
- //delete list[item.position][item.index];
+ // delete list[item.position][item.index];
return { list, savedNames };
};
};
export const findToastByIndex = (list, index) => {
let item = [];
- let positions = Object.keys(list);
- for (let i = 0; i <= positions.length - 1; i++) {
- let position = positions[i];
+ const positions = Object.keys(list);
+ for (let i = 0; i <= positions.length - 1; i += 1) {
+ const position = positions[i];
item = list[position].filter(toast => toast.index === index);
if (item.length !== 0) {
break;
diff --git a/src/utils/newid.js b/src/utils/newid.js
index 7966745..d9d2025 100755
--- a/src/utils/newid.js
+++ b/src/utils/newid.js
@@ -1,6 +1,5 @@
let lastId = 0;
-
export default () => {
- lastId++;
+ lastId += 1;
return lastId;
};
diff --git a/src/withToasted.js b/src/withToasted.js
index 513808e..9fef44f 100755
--- a/src/withToasted.js
+++ b/src/withToasted.js
@@ -1,12 +1,14 @@
import React from "react";
import ToastedContext from "./context";
-const withToasted = Component => {
- return props => (
-
- {toasted => }
-
- );
-};
-
+function withToasted(Component) {
+ return function WrappedWithToast(props) {
+ return (
+
+ {toasted => }
+
+ );
+ };
+}
+withToasted.displayName = "withToasted";
export default withToasted;
diff --git a/stories/gettingStarted.stories.js b/stories/gettingStarted.stories.js
index 8038003..630959d 100644
--- a/stories/gettingStarted.stories.js
+++ b/stories/gettingStarted.stories.js
@@ -1,87 +1,55 @@
-import React from "react";
-import marked from "marked";
-import { storiesOf, setAddon } from "@storybook/react";
-import { action } from "@storybook/addon-actions";
+import { storiesOf } from "@storybook/react";
+import installation from "../docs/installation.md";
+import importStyle from "../docs/importStyle.md";
+import configureDefaults from "../docs/configureDefaults.md";
+import simpleInstallation from "../docs/simpleInstallation.md";
+import howtouseit from "../docs/howtouseit.md";
+import functions from "../docs/functions.md";
require("../lib/react-toasted.css");
require("animate.css");
storiesOf("Getting Started", module)
- //.addDecorator(withKnobs)
- .add(
- "Installation",
- () => {
- return;
- },
- {
- readme: {
- // Show readme before story
- content: require("../docs/installation.md").default
- // Show readme at the addons panel
- //sidebar: importStyle
- }
+ // .addDecorator(withKnobs)
+ .add("Installation", () => {}, {
+ readme: {
+ // Show readme before story
+ content: installation
+ // Show readme at the addons panel
+ // sidebar: importStyle
}
- )
- .add(
- "Import Style File",
- () => {
- return;
- },
- {
- readme: {
- // Show readme before story
- content: require("../docs/importStyle.md").default
- }
+ })
+ .add("Import Style File", () => {}, {
+ readme: {
+ // Show readme before story
+ content: importStyle
}
- )
- .add(
- "Configure Defaults",
- () => {
- return;
- },
- {
- readme: {
- // Show readme before story
- content: require("../docs/configureDefaults.md").default
- }
+ })
+ .add("Configure Defaults", () => {}, {
+ readme: {
+ // Show readme before story
+ content: configureDefaults
}
- )
- .add(
- "Simple Installation",
- () => {
- return;
- },
- {
- readme: {
- // Show readme before story
- content: require("../docs/simpleInstallation.md").default
- }
+ })
+ .add("Simple Installation", () => {}, {
+ readme: {
+ // Show readme before story
+ content: simpleInstallation
}
- )
- .add(
- "How To Use It?",
- () => {
- return;
- },
- {
- readme: {
- content: require("../docs/howtouseit.md").default
- }
+ })
+ .add("How To Use It?", () => {}, {
+ readme: {
+ content: howtouseit
}
- )
- .add(
- "Functions",
- () => {
- return;
- },
- {
- readme: {
- content: require("../docs/functions.md").default
- }
+ })
+ .add("Functions", () => {}, {
+ readme: {
+ content: functions
}
- )
+ })
.add("Demo & Example", () => {}, {
readme: {
- content: `I made a sample project. You can access from [Here](https://codesandbox.io/s/react-toasted-demo-fvbm7)`
+ content: `I made a sample project.
+ You can access from [Here](https://codesandbox.io/s/react-toasted-demo-fvbm7)`
}
});
diff --git a/stories/toast.stories.js b/stories/toast.stories.js
index cc30fe0..fb9962c 100644
--- a/stories/toast.stories.js
+++ b/stories/toast.stories.js
@@ -4,7 +4,6 @@ import { action } from "@storybook/addon-actions";
import { withInfo } from "@storybook/addon-info";
import JSXAddon from "storybook-addon-jsx";
-setAddon(JSXAddon);
import {
withKnobs,
@@ -19,12 +18,23 @@ import {
import { Toast, Provider, Consumer, ToastContainer } from "../src/index";
import positions from "../src/positions";
+import toastOptions from "../docs/toastOptions.md";
+
+setAddon(JSXAddon);
+
require("../lib/react-toasted.css");
require("animate.css");
const BasicButton = props => {
- return ;
+ // eslint-disable-next-line
+ const { children } = props.children;
+ return (
+
+ );
};
+
const types = ["success", "warning", "error", "info"];
const actions = {
onClick: action("onClicked"),
@@ -36,8 +46,8 @@ const actions = {
// TODO: I need to force rerender stories when timeout changed.
storiesOf("Toast", module)
.addDecorator(story => {
- let props = story();
- let className = `toast-container ${props.position}`;
+ const props = story();
+ const className = `toast-container ${props.position}`;
return (
@@ -69,7 +79,7 @@ storiesOf("Toast", module)
{
readme: {
// Show readme before story
- sidebar: require("../docs/toastOptions.md").default
+ sidebar: toastOptions
}
}
);
diff --git a/src/utils/test-utils.js b/test-utils/index.js
similarity index 96%
rename from src/utils/test-utils.js
rename to test-utils/index.js
index 6359bf4..e2bc436 100644
--- a/src/utils/test-utils.js
+++ b/test-utils/index.js
@@ -1,6 +1,6 @@
import React, { useContext } from "react";
import { render } from "@testing-library/react";
-import ToastedContext, { Provider, Consumer, withToasted } from "../index";
+import ToastedContext, { Provider, Consumer, withToasted } from "../src/index";
export const SampleConsumerUseContext = () => {
// Acces toast from context
@@ -10,9 +10,10 @@ export const SampleConsumerUseContext = () => {
export class SampleConsumerContextType extends React.Component {
// use toasted contextType
static contextType = ToastedContext;
+
render() {
// get toasted from context
- let toasted = this.context;
+ const toasted = this.context;
return ;
}
}
@@ -77,7 +78,7 @@ export const ProviderWrapper = ({ children }) => {
defaultProgressBarValue: 0,
defaultPreventDuplicates: false,
defaultStyle: {}
- //defaultPositions: positions
+ // defaultPositions: positions
}}
>
{children}
diff --git a/yarn.lock b/yarn.lock
index 7156175..141f555 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -277,7 +277,7 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5":
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5":
version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b"
integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==
@@ -945,7 +945,7 @@
"@babel/parser" "^7.4.4"
"@babel/types" "^7.4.4"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5":
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5":
version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb"
integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==
@@ -1842,6 +1842,11 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/eslint-visitor-keys@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
+ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
+
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
@@ -1867,6 +1872,11 @@
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*"
+"@types/json-schema@^7.0.3":
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
+ integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+
"@types/node@^12.6.9":
version "12.7.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.1.tgz#3b5c3a26393c19b400844ac422bd0f631a94d69d"
@@ -1887,6 +1897,44 @@
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916"
integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==
+"@typescript-eslint/eslint-plugin@1.x":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f"
+ integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "1.13.0"
+ eslint-utils "^1.3.1"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^2.0.1"
+ tsutils "^3.7.0"
+
+"@typescript-eslint/experimental-utils@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e"
+ integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/typescript-estree" "1.13.0"
+ eslint-scope "^4.0.0"
+
+"@typescript-eslint/parser@1.x":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355"
+ integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==
+ dependencies:
+ "@types/eslint-visitor-keys" "^1.0.0"
+ "@typescript-eslint/experimental-utils" "1.13.0"
+ "@typescript-eslint/typescript-estree" "1.13.0"
+ eslint-visitor-keys "^1.0.0"
+
+"@typescript-eslint/typescript-estree@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e"
+ integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==
+ dependencies:
+ lodash.unescape "4.0.1"
+ semver "5.5.0"
+
"@webassemblyjs/ast@1.8.5":
version "1.8.5"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
@@ -2069,6 +2117,11 @@ acorn-globals@^4.1.0:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-jsx@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
+ integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
+
acorn-walk@^6.0.1:
version "6.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
@@ -2079,7 +2132,7 @@ acorn@^5.5.3:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
-acorn@^6.0.1, acorn@^6.2.1:
+acorn@^6.0.1, acorn@^6.0.7, acorn@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51"
integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==
@@ -2127,7 +2180,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da"
integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==
-ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5:
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
version "6.10.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
@@ -2234,7 +2287,7 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
-aria-query@3.0.0:
+aria-query@3.0.0, aria-query@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=
@@ -2379,7 +2432,7 @@ assign-symbols@^1.0.0:
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-ast-types-flow@0.0.7:
+ast-types-flow@0.0.7, ast-types-flow@^0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
@@ -2459,6 +2512,13 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+axobject-query@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9"
+ integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==
+ dependencies:
+ ast-types-flow "0.0.7"
+
babel-code-frame@^6.22.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -2468,6 +2528,18 @@ babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.2"
+babel-eslint@10.x:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456"
+ integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ eslint-scope "3.7.1"
+ eslint-visitor-keys "^1.0.0"
+
babel-helper-evaluate-path@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c"
@@ -3249,7 +3321,7 @@ chai@^4.2.0:
pathval "^1.1.0"
type-detect "^4.0.5"
-chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2:
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -3546,6 +3618,11 @@ config-chain@^1.1.12:
ini "^1.3.4"
proto-list "~1.2.1"
+confusing-browser-globals@^1.0.7, confusing-browser-globals@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3"
+ integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg==
+
console-browserify@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
@@ -3563,6 +3640,11 @@ constants-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
content-disposition@0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
@@ -3905,6 +3987,11 @@ cyclist@~0.2.2:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+damerau-levenshtein@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414"
+ integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==
+
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@@ -3926,7 +4013,7 @@ date-now@^0.1.4:
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -3940,7 +4027,7 @@ debug@3.2.6, debug@^3.2.5, debug@^3.2.6:
dependencies:
ms "^2.1.1"
-debug@^4.1.0, debug@^4.1.1:
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
@@ -4101,6 +4188,21 @@ dir-glob@2.0.0:
arrify "^1.0.1"
path-type "^3.0.0"
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -4280,7 +4382,7 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
-emoji-regex@^7.0.1:
+emoji-regex@^7.0.1, emoji-regex@^7.0.2:
version "7.0.3"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
@@ -4420,7 +4522,129 @@ escodegen@^1.9.1:
optionalDependencies:
source-map "~0.6.1"
-eslint-scope@^4.0.3:
+eslint-config-airbnb-base@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17"
+ integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==
+ dependencies:
+ confusing-browser-globals "^1.0.7"
+ object.assign "^4.1.0"
+ object.entries "^1.1.0"
+
+eslint-config-airbnb@^18.0.0:
+ version "18.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.0.0.tgz#47a50107484b7776b7541fcac4308abbeee1c102"
+ integrity sha512-C9p7TGMuefhUWPuiObkfF9pytgAA2293bk1n0h7FdazazHNtzATTGkVv7V0gZt1/FTzdCfwWhjGSbRz/KR89og==
+ dependencies:
+ eslint-config-airbnb-base "^14.0.0"
+ object.assign "^4.1.0"
+ object.entries "^1.1.0"
+
+eslint-config-prettier@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#f429a53bde9fc7660e6353910fd996d6284d3c25"
+ integrity sha512-vDrcCFE3+2ixNT5H83g28bO/uYAwibJxerXPj+E7op4qzBCsAV36QfvdAyVOoNxKAH2Os/e01T/2x++V0LPukA==
+ dependencies:
+ get-stdin "^6.0.0"
+
+eslint-config-react-app@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.0.0.tgz#b3639e96fccc24eaaa63c92fc2f4358f79f22fb2"
+ integrity sha512-d3hbvu14J1Iy7N+XvrMOMXmw32iIGGIHqg7DK0RqA6UxKOix+Z53fuQ/uf2NqasSse3uHUNB1EvuZ8Iw2bzd3g==
+ dependencies:
+ confusing-browser-globals "^1.0.8"
+
+eslint-import-resolver-node@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
+ integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.5.0"
+
+eslint-module-utils@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c"
+ integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==
+ dependencies:
+ debug "^2.6.8"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-flowtype@3.x:
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c"
+ integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==
+ dependencies:
+ lodash "^4.17.15"
+
+eslint-plugin-import@2.x:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
+ dependencies:
+ array-includes "^3.0.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.2"
+ eslint-module-utils "^2.4.0"
+ has "^1.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.0"
+ read-pkg-up "^2.0.0"
+ resolve "^1.11.0"
+
+eslint-plugin-jsx-a11y@6.x:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa"
+ integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==
+ dependencies:
+ "@babel/runtime" "^7.4.5"
+ aria-query "^3.0.0"
+ array-includes "^3.0.3"
+ ast-types-flow "^0.0.7"
+ axobject-query "^2.0.2"
+ damerau-levenshtein "^1.0.4"
+ emoji-regex "^7.0.2"
+ has "^1.0.3"
+ jsx-ast-utils "^2.2.1"
+
+eslint-plugin-prettier@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d"
+ integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+eslint-plugin-react-hooks@1.x:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04"
+ integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==
+
+eslint-plugin-react@7.x:
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13"
+ integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==
+ dependencies:
+ array-includes "^3.0.3"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.1.0"
+ object.entries "^1.1.0"
+ object.fromentries "^2.0.0"
+ object.values "^1.1.0"
+ prop-types "^15.7.2"
+ resolve "^1.10.1"
+
+eslint-scope@3.7.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
+ integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^4.0.0, eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
@@ -4428,6 +4652,78 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint-scope@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
+ integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c"
+ integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==
+ dependencies:
+ eslint-visitor-keys "^1.0.0"
+
+eslint-visitor-keys@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
+ integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
+
+eslint@6.x:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646"
+ integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^6.0.0"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^11.7.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^6.4.1"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^6.1.2"
+ strip-ansi "^5.2.0"
+ strip-json-comments "^3.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6"
+ integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==
+ dependencies:
+ acorn "^6.0.7"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
esprima@^3.1.3, esprima@~3.1.0:
version "3.1.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -4438,6 +4734,13 @@ esprima@^4.0.0, esprima@~4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
esrecurse@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
@@ -4445,7 +4748,7 @@ esrecurse@^4.1.0:
dependencies:
estraverse "^4.1.0"
-estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
@@ -4645,6 +4948,11 @@ fast-deep-equal@^2.0.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+fast-diff@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
fast-glob@^2.0.2:
version "2.2.7"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
@@ -4718,6 +5026,13 @@ figures@^2.0.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
file-loader@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa"
@@ -4801,7 +5116,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"
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
@@ -4816,6 +5131,15 @@ find-up@^4.0.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
flat@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2"
@@ -4823,6 +5147,11 @@ flat@^4.1.0:
dependencies:
is-buffer "~2.0.3"
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
flush-write-stream@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
@@ -4991,6 +5320,11 @@ function.prototype.name@^1.1.0:
functions-have-names "^1.1.1"
is-callable "^1.1.4"
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
functions-have-names@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.1.1.tgz#79d35927f07b8e7103d819fed475b64ccf7225ea"
@@ -5047,6 +5381,11 @@ get-stdin@^4.0.1:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
get-stream@3.0.0, get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -5095,6 +5434,13 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
+glob-parent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
+ integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
+ dependencies:
+ is-glob "^4.0.1"
+
glob-to-regexp@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
@@ -5148,7 +5494,7 @@ global@^4.3.2:
min-document "^2.19.0"
process "^0.11.10"
-globals@^11.1.0:
+globals@^11.1.0, globals@^11.7.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
@@ -5567,6 +5913,11 @@ ignore@^3.3.5:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
immer@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d"
@@ -5587,6 +5938,14 @@ import-fresh@^2.0.0:
caller-path "^2.0.0"
resolve-from "^3.0.0"
+import-fresh@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
+ integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
import-from@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
@@ -5681,7 +6040,7 @@ inquirer@6.2.2:
strip-ansi "^5.0.0"
through "^2.3.6"
-inquirer@^6.2.0:
+inquirer@^6.2.0, inquirer@^6.4.1:
version "6.5.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42"
integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==
@@ -5909,7 +6268,7 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-glob@^4.0.0:
+is-glob@^4.0.0, is-glob@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
@@ -6579,6 +6938,11 @@ json-schema@0.2.3:
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
@@ -6632,6 +6996,14 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb"
+ integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==
+ dependencies:
+ array-includes "^3.0.3"
+ object.assign "^4.1.0"
+
keyv@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373"
@@ -6727,7 +7099,7 @@ leven@^2.1.0:
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
-levn@~0.3.0:
+levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
@@ -6746,6 +7118,16 @@ 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"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@@ -6833,7 +7215,12 @@ lodash.toarray@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
-lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@~4.17.10:
+lodash.unescape@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+ integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
+
+lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@~4.17.10:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -7742,7 +8129,7 @@ object.entries@^1.1.0:
function-bind "^1.1.1"
has "^1.0.3"
-"object.fromentries@^2.0.0 || ^1.0.0":
+object.fromentries@^2.0.0, "object.fromentries@^2.0.0 || ^1.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
@@ -7820,7 +8207,7 @@ optimist@^0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
-optionator@^0.8.1:
+optionator@^0.8.1, optionator@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
@@ -8006,6 +8393,13 @@ param-case@2.1.x, param-case@^2.1.1:
dependencies:
no-case "^2.2.0"
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
parse-asn1@^5.0.0:
version "5.1.4"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
@@ -8150,6 +8544,13 @@ 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"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -8217,6 +8618,13 @@ pirates@^4.0.1:
dependencies:
node-modules-regexp "^1.0.0"
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
@@ -8367,6 +8775,18 @@ prepend-http@^2.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^1.18.2:
+ version "1.18.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
+ integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
+
pretty-error@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
@@ -8417,6 +8837,11 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
promise-inflight@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -8932,6 +9357,14 @@ 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"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
read-pkg-up@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
@@ -8949,6 +9382,15 @@ 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"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -9131,6 +9573,11 @@ regexp.prototype.flags@^1.2.0:
dependencies:
define-properties "^1.1.2"
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
regexpu-core@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
@@ -9272,6 +9719,11 @@ resolve-from@^3.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
resolve-from@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
@@ -9287,7 +9739,7 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.8.1:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
version "1.12.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
@@ -9314,7 +9766,7 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
@@ -9479,7 +9931,12 @@ select@^1.1.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
-semver@^6.0.0, semver@^6.1.1, semver@^6.3.0:
+semver@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+ integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
+
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -9668,6 +10125,15 @@ slash@^2.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -10035,7 +10501,7 @@ stringify-object@3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0:
+strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
@@ -10092,6 +10558,11 @@ strip-json-comments@2.0.1, strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+strip-json-comments@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
+ integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+
style-loader@^0.23.1:
version "0.23.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
@@ -10177,6 +10648,16 @@ symbol.prototype.description@^1.0.0:
dependencies:
has-symbols "^1.0.0"
+table@^5.2.3:
+ version "5.4.5"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.5.tgz#c8f4ea2d8fee08c0027fac27b0ec0a4fe01dfa42"
+ integrity sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
tapable@^1.0.0, tapable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
@@ -10258,7 +10739,7 @@ test-exclude@^5.2.3:
read-pkg-up "^4.0.0"
require-main-filename "^2.0.0"
-text-table@0.2.0:
+text-table@0.2.0, text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
@@ -10412,11 +10893,18 @@ ts-pnp@^1.1.2:
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552"
integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA==
-tslib@^1.9.0:
+tslib@^1.8.1, tslib@^1.9.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+tsutils@^3.7.0:
+ version "3.17.1"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
+ integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
+ dependencies:
+ tslib "^1.8.1"
+
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -10671,6 +11159,11 @@ uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+v8-compile-cache@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
+ integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
+
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -10941,6 +11434,13 @@ write-file-atomic@2.4.1:
imurmurhash "^0.1.4"
signal-exit "^3.0.2"
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
ws@^5.2.0:
version "5.2.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"