From f799f727b2cae3229031e805c513c96298b5bb54 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Fri, 17 Aug 2018 17:02:53 -0700 Subject: [PATCH] Add and enforce class properties --- .babelrc | 2 +- .eslintrc | 6 +- js/components/ContextMenuTarget.js | 10 +- js/components/ContextMenuWrapper.js | 15 +- js/components/DropTarget.js | 14 +- js/components/MainWindow/Marquee.js | 5 +- js/components/MainWindow/index.js | 14 +- js/components/MilkdropWindow/Milkdrop.js | 7 +- js/components/MilkdropWindow/PresetOverlay.js | 7 +- js/components/MilkdropWindow/index.js | 15 +- js/components/PlaylistWindow/PlaylistMenu.js | 5 +- js/components/PlaylistWindow/TrackCell.js | 9 +- js/components/PlaylistWindow/TrackList.js | 9 +- js/components/PlaylistWindow/index.js | 9 +- js/components/ResizeTarget.js | 9 +- js/components/WindowManager.js | 14 +- package.json | 3 + yarn.lock | 138 +++++++++++++++++- 18 files changed, 187 insertions(+), 104 deletions(-) diff --git a/.babelrc b/.babelrc index 40e48a13..642e40f5 100644 --- a/.babelrc +++ b/.babelrc @@ -19,7 +19,7 @@ ], "react" ], - "plugins": ["transform-object-rest-spread"], + "plugins": ["transform-object-rest-spread", "transform-class-properties"], "env": { "test": { "presets": ["react"], diff --git a/.eslintrc b/.eslintrc index e88a27c2..1f8899d4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,4 +1,5 @@ { + "parser": "babel-eslint", "parserOptions": { "ecmaVersion": 8, "sourceType": "module", @@ -7,7 +8,7 @@ "experimentalObjectRestSpread": true } }, - "plugins": ["react", "prettier", "import"], + "plugins": ["react", "prettier", "import", "no-constructor-bind"], "settings": { "react": { "version": "15.2" @@ -128,6 +129,7 @@ "import/no-extraneous-dependencies": "error", "import/no-named-as-default-member": "error", "import/no-unresolved": "error", - "import/order": "error" + "import/order": "error", + "no-constructor-bind/no-constructor-bind": "error" } } diff --git a/js/components/ContextMenuTarget.js b/js/components/ContextMenuTarget.js index f19a126a..8ef17c3a 100644 --- a/js/components/ContextMenuTarget.js +++ b/js/components/ContextMenuTarget.js @@ -6,8 +6,6 @@ export default class ContextMenuTarget extends React.Component { constructor(props) { super(props); this.state = { selected: false }; - this._handleHandleClick = this._handleHandleClick.bind(this); - this._handleGlobalClick = this._handleGlobalClick.bind(this); } componentDidMount() { @@ -18,11 +16,11 @@ export default class ContextMenuTarget extends React.Component { document.removeEventListener("click", this._handleGlobalClick); } - _handleHandleClick() { + _handleHandleClick = () => { this.setState({ selected: !this.state.selected }); - } + }; - _handleGlobalClick(e) { + _handleGlobalClick = e => { if ( this.state.selected && // Not sure how, but it's possible for this to get called when handleNode is null/undefined. @@ -32,7 +30,7 @@ export default class ContextMenuTarget extends React.Component { ) { this.setState({ selected: false }); } - } + }; _offset() { if (!this.handleNode) { diff --git a/js/components/ContextMenuWrapper.js b/js/components/ContextMenuWrapper.js index 30b8cbe0..ce665138 100644 --- a/js/components/ContextMenuWrapper.js +++ b/js/components/ContextMenuWrapper.js @@ -10,9 +10,6 @@ export default class ContextMenuWraper extends React.Component { offsetTop: null, offsetLeft: null }; - this._handleRightClick = this._handleRightClick.bind(this); - this._handleGlobalClick = this._handleGlobalClick.bind(this); - this._handleGlobalRightClick = this._handleGlobalRightClick.bind(this); } componentWillUnmount() { @@ -28,18 +25,18 @@ export default class ContextMenuWraper extends React.Component { ); } - _handleGlobalRightClick() { + _handleGlobalRightClick = () => { this._closeMenu(); - } + }; - _handleGlobalClick(e) { + _handleGlobalClick = e => { if (e.button === 2) { return; } this._closeMenu(); - } + }; - _handleRightClick(e) { + _handleRightClick = e => { const { pageX, pageY } = e; this.setState({ selected: true, @@ -54,7 +51,7 @@ export default class ContextMenuWraper extends React.Component { document.body.addEventListener("contextmenu", this._handleGlobalRightClick); e.preventDefault(); e.stopPropagation(); - } + }; render() { const { children, renderContents, ...passThroughProps } = this.props; diff --git a/js/components/DropTarget.js b/js/components/DropTarget.js index 5b732d7b..67d32080 100644 --- a/js/components/DropTarget.js +++ b/js/components/DropTarget.js @@ -1,12 +1,6 @@ import React from "react"; export default class DropTarget extends React.Component { - constructor(props) { - super(props); - this.handleDrop = this.handleDrop.bind(this); - this._ref = this._ref.bind(this); - } - supress(e) { e.stopPropagation(); e.preventDefault(); @@ -14,18 +8,18 @@ export default class DropTarget extends React.Component { e.dataTransfer.effectAllowed = "link"; } - handleDrop(e) { + handleDrop = e => { this.supress(e); if (!this._node) { return; } const { x, y } = this._node.getBoundingClientRect(); this.props.handleDrop(e, { x, y }); - } + }; - _ref(node) { + _ref = node => { this._node = node; - } + }; render() { const { diff --git a/js/components/MainWindow/Marquee.js b/js/components/MainWindow/Marquee.js index 99bf4f3c..c0c90987 100644 --- a/js/components/MainWindow/Marquee.js +++ b/js/components/MainWindow/Marquee.js @@ -73,7 +73,6 @@ class Marquee extends React.Component { constructor(props) { super(props); this.state = { stepping: true, dragOffset: 0 }; - this.handleMouseDown = this.handleMouseDown.bind(this); this.stepHandle = null; } @@ -91,7 +90,7 @@ class Marquee extends React.Component { } } - handleMouseDown(e) { + handleMouseDown = e => { const xStart = e.clientX; this.setState({ stepping: false }); const handleMouseMove = ee => { @@ -110,7 +109,7 @@ class Marquee extends React.Component { document.addEventListener("mousemove", handleMouseMove); document.addEventListener("mouseup", handleMouseUp); - } + }; render() { const { text, marqueeStep } = this.props; diff --git a/js/components/MainWindow/index.js b/js/components/MainWindow/index.js index 41f1194c..43637f1e 100644 --- a/js/components/MainWindow/index.js +++ b/js/components/MainWindow/index.js @@ -40,19 +40,13 @@ import MainVolume from "./MainVolume"; import "../../../css/main-window.css"; export class MainWindow extends React.Component { - constructor(props) { - super(props); - this._handleClick = this._handleClick.bind(this); - this._handleDrop = this._handleDrop.bind(this); - } - - _handleClick() { + _handleClick = () => { this.props.setFocus(); - } + }; - _handleDrop(e) { + _handleDrop = e => { this.props.loadFilesFromReferences(e); - } + }; render() { const { diff --git a/js/components/MilkdropWindow/Milkdrop.js b/js/components/MilkdropWindow/Milkdrop.js index b0352eb4..629dc2b6 100644 --- a/js/components/MilkdropWindow/Milkdrop.js +++ b/js/components/MilkdropWindow/Milkdrop.js @@ -12,9 +12,6 @@ export default class Milkdrop extends React.Component { isFullscreen: false, presetOverlay: false }; - this._handleFocusedKeyboardInput = this._handleFocusedKeyboardInput.bind( - this - ); } async componentDidMount() { @@ -92,7 +89,7 @@ export default class Milkdrop extends React.Component { } } - _handleFocusedKeyboardInput(e) { + _handleFocusedKeyboardInput = e => { switch (e.keyCode) { case 32: // spacebar this._nextPreset(USER_PRESET_TRANSITION_SECONDS); @@ -116,7 +113,7 @@ export default class Milkdrop extends React.Component { this._restartCycling(); break; } - } + }; async _nextPreset(blendTime) { this.selectPreset(await this.props.presets.next(), blendTime); diff --git a/js/components/MilkdropWindow/PresetOverlay.js b/js/components/MilkdropWindow/PresetOverlay.js index 91e61f46..1cb28f03 100644 --- a/js/components/MilkdropWindow/PresetOverlay.js +++ b/js/components/MilkdropWindow/PresetOverlay.js @@ -4,9 +4,6 @@ class PresetOverlay extends React.Component { constructor(props) { super(props); this.state = { presetIdx: Math.max(props.currentPreset, 0) }; - this._handleFocusedKeyboardInput = this._handleFocusedKeyboardInput.bind( - this - ); } componentDidMount() { @@ -21,7 +18,7 @@ class PresetOverlay extends React.Component { } } - _handleFocusedKeyboardInput(e) { + _handleFocusedKeyboardInput = e => { switch (e.keyCode) { case 38: // up arrow this.setState({ presetIdx: Math.max(this.state.presetIdx - 1, 0) }); @@ -45,7 +42,7 @@ class PresetOverlay extends React.Component { e.stopPropagation(); break; } - } + }; render() { if (!this.props.presetKeys) { diff --git a/js/components/MilkdropWindow/index.js b/js/components/MilkdropWindow/index.js index 6bf38a1f..7e4cc611 100644 --- a/js/components/MilkdropWindow/index.js +++ b/js/components/MilkdropWindow/index.js @@ -26,9 +26,6 @@ class PresetsLoader extends React.Component { isFullscreen: false, desktop: false }; - this._handleFullscreenChange = this._handleFullscreenChange.bind(this); - this._handleRequestFullsceen = this._handleRequestFullsceen.bind(this); - this._toggleDesktop = this._toggleDesktop.bind(this); } isHidden() { @@ -57,11 +54,11 @@ class PresetsLoader extends React.Component { screenfull.off("change", this._handleFullscreenChange); } - _handleFullscreenChange() { + _handleFullscreenChange = () => { this.setState({ isFullscreen: screenfull.isFullscreen }); - } + }; - _toggleDesktop() { + _toggleDesktop = () => { if (this.state.desktop) { this.props.showWindow(this.props.windowId); this.setState({ desktop: false }); @@ -69,9 +66,9 @@ class PresetsLoader extends React.Component { this.props.hideWindow(this.props.windowId); this.setState({ desktop: true }); } - } + }; - _handleRequestFullsceen() { + _handleRequestFullsceen = () => { if (screenfull.enabled) { if (!screenfull.isFullscreen) { screenfull.request(this._wrapperNode); @@ -79,7 +76,7 @@ class PresetsLoader extends React.Component { screenfull.exit(); } } - } + }; _renderMilkdrop(size) { const { butterchurn, presets, initialPreset } = this.state; diff --git a/js/components/PlaylistWindow/PlaylistMenu.js b/js/components/PlaylistWindow/PlaylistMenu.js index d7da8823..e82a993f 100644 --- a/js/components/PlaylistWindow/PlaylistMenu.js +++ b/js/components/PlaylistWindow/PlaylistMenu.js @@ -44,10 +44,9 @@ export default class PlaylistMenu extends React.Component { constructor(props) { super(props); this.state = { selected: false }; - this._handleClick = this._handleClick.bind(this); } - _handleClick(e) { + _handleClick = e => { const { target } = e; const { selected } = this.state; if (selected) { @@ -76,7 +75,7 @@ export default class PlaylistMenu extends React.Component { }); this.setState({ selected: true }); - } + }; render() { return ( diff --git a/js/components/PlaylistWindow/TrackCell.js b/js/components/PlaylistWindow/TrackCell.js index 24519a15..326e24e7 100644 --- a/js/components/PlaylistWindow/TrackCell.js +++ b/js/components/PlaylistWindow/TrackCell.js @@ -10,12 +10,7 @@ import { import { getCurrentTrackId, getSkinPlaylistStyle } from "../../selectors"; class TrackCell extends React.Component { - constructor(props) { - super(props); - this._onMouseDown = this._onMouseDown.bind(this); - } - - _onMouseDown(e) { + _onMouseDown = e => { if (e.shiftKey) { this.props.shiftClick(e); return; @@ -29,7 +24,7 @@ class TrackCell extends React.Component { } this.props.handleMoveClick(e); - } + }; render() { const { diff --git a/js/components/PlaylistWindow/TrackList.js b/js/components/PlaylistWindow/TrackList.js index 603f6fc1..20228d25 100644 --- a/js/components/PlaylistWindow/TrackList.js +++ b/js/components/PlaylistWindow/TrackList.js @@ -18,11 +18,6 @@ function getNumberLength(number) { } class TrackList extends React.Component { - constructor(props) { - super(props); - this._handleMoveClick = this._handleMoveClick.bind(this); - } - _renderTracks(format) { return this.props.trackIds.map((id, i) => ( { if (!this._node) { return; } @@ -61,7 +56,7 @@ class TrackList extends React.Component { window.removeEventListener("mousemove", handleMouseMove); }); window.addEventListener("mousemove", handleMouseMove); - } + }; render() { const { tracks, offset } = this.props; diff --git a/js/components/PlaylistWindow/index.js b/js/components/PlaylistWindow/index.js index cad3d82d..0d4136ae 100644 --- a/js/components/PlaylistWindow/index.js +++ b/js/components/PlaylistWindow/index.js @@ -38,12 +38,7 @@ import ScrollBar from "./ScrollBar"; import "../../../css/playlist-window.css"; class PlaylistWindow extends React.Component { - constructor(props) { - super(props); - this._handleDrop = this._handleDrop.bind(this); - } - - _handleDrop(e, targetCoords) { + _handleDrop = (e, targetCoords) => { const top = e.clientY - targetCoords.y; const atIndex = clamp( this.props.offset + Math.round((top - 23) / TRACK_HEIGHT), @@ -51,7 +46,7 @@ class PlaylistWindow extends React.Component { this.props.maxTrackIndex + 1 ); this.props.loadFilesFromReferences(e, atIndex); - } + }; render() { const { diff --git a/js/components/ResizeTarget.js b/js/components/ResizeTarget.js index 23d07018..f4e946df 100644 --- a/js/components/ResizeTarget.js +++ b/js/components/ResizeTarget.js @@ -6,12 +6,7 @@ import { } from "../constants"; export default class ResizeTarget extends React.Component { - constructor(props) { - super(props); - this.handleMouseDown = this.handleMouseDown.bind(this); - } - - handleMouseDown(e) { + handleMouseDown = e => { // Prevent dragging from highlighting text. e.preventDefault(); const [width, height] = this.props.currentSize; @@ -42,7 +37,7 @@ export default class ResizeTarget extends React.Component { window.addEventListener("mouseup", () => { window.removeEventListener("mousemove", handleMove); }); - } + }; render() { /* eslint-disable no-unused-vars */ diff --git a/js/components/WindowManager.js b/js/components/WindowManager.js index 5d4a1a20..367d38f6 100644 --- a/js/components/WindowManager.js +++ b/js/components/WindowManager.js @@ -24,17 +24,11 @@ const abuts = (a, b) => { }; class WindowManager extends React.Component { - constructor(props) { - super(props); - this.handleMouseDown = this.handleMouseDown.bind(this); - this.centerWindows = this.centerWindows.bind(this); - } - componentDidMount() { this.centerWindows(); } - centerWindows() { + centerWindows = () => { const { container } = this.props; const offsetLeft = container.offsetLeft; @@ -80,7 +74,7 @@ class WindowManager extends React.Component { this.props.updateWindowPositions(newPositions); } - } + }; movingAndStationaryNodes(key) { const windows = this.props.windowsInfo.filter( @@ -102,7 +96,7 @@ class WindowManager extends React.Component { return [moving, stationary]; } - handleMouseDown(key, e) { + handleMouseDown = (key, e) => { if (!e.target.classList.contains("draggable")) { return; } @@ -171,7 +165,7 @@ class WindowManager extends React.Component { window.addEventListener("mouseup", removeListeners); window.addEventListener("mousemove", handleMouseMove); - } + }; // Keys for the visible windows windowKeys() { diff --git a/package.json b/package.json index 23c2aee4..77c1bf26 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,10 @@ "babel": "^6.23.0", "babel-cli": "^6.14.0", "babel-core": "^6.21.0", + "babel-eslint": "^8.2.6", "babel-loader": "^7.1.1", "babel-plugin-remove-webpack": "^1.1.0", + "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-plugin-transform-object-rest-spread": "^6.20.2", "babel-plugin-transform-react-jsx": "^6.24.1", @@ -68,6 +70,7 @@ "eslint": "4.16.0", "eslint-config-prettier": "^2.3.0", "eslint-plugin-import": "^2.7.0", + "eslint-plugin-no-constructor-bind": "^1.2.1", "eslint-plugin-prettier": "^2.2.0", "eslint-plugin-react": "^7.7.0", "file-loader": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index 10b4fc80..88a6ab1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,56 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + dependencies: + "@babel/highlight" "7.0.0-beta.44" + "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" dependencies: "@babel/highlight" "7.0.0-beta.47" +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@babel/highlight@7.0.0-beta.47": version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" @@ -16,6 +60,38 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + "@types/node@*": version "10.1.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.1.0.tgz#2783ee1b6c47cbd4044f4a233976c1ac5fa9e942" @@ -431,6 +507,17 @@ babel-core@^6.21.0, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.6" +babel-eslint@^8.2.6: + version "8.2.6" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -601,6 +688,10 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" @@ -629,6 +720,15 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -989,6 +1089,10 @@ babel@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel/-/babel-6.23.0.tgz#d0d1e7d803e974765beea3232d4e153c0efb90f4" +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -2615,6 +2719,12 @@ eslint-plugin-import@^2.7.0: minimatch "^3.0.3" read-pkg-up "^2.0.0" +eslint-plugin-no-constructor-bind@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-constructor-bind/-/eslint-plugin-no-constructor-bind-1.2.1.tgz#1bb0237465aa90c3e44e0f7507a4d36b7b5153c1" + dependencies: + requireindex "~1.1.0" + eslint-plugin-prettier@^2.2.0: version "2.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" @@ -2631,7 +2741,7 @@ eslint-plugin-react@^7.7.0: jsx-ast-utils "^2.0.1" prop-types "^15.6.0" -eslint-scope@^3.7.1: +eslint-scope@3.7.1, eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: @@ -3421,6 +3531,10 @@ globals@^11.0.1: version "11.3.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" +globals@^11.1.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3940,6 +4054,12 @@ invariant@^2.0.0, invariant@^2.2.2: dependencies: loose-envify "^1.0.0" +invariant@^2.2.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + invariant@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" @@ -4753,6 +4873,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -5017,7 +5141,7 @@ lodash@3.x: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10: +lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.2.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -6941,6 +7065,10 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" +requireindex@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" + requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -7340,7 +7468,7 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -7784,6 +7912,10 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"