Bug 1474366 - Update Debugger Frontend v70. r=dwalsh
authorJason Laster <jason.laster.11@gmail.com>
Mon, 09 Jul 2018 13:43:13 -0400
changeset 480786 a3fcb581c0a26db5820a4e4b34cfa163eef0c733
parent 480785 fdb4ed369d2e00935c8bc3bcefd547f4cda44525
child 480787 9631474563f37d34ba1dffbf98d566804f3fbfc8
push id9719
push userffxbld-merge
push dateFri, 24 Aug 2018 17:49:46 +0000
treeherdermozilla-beta@719ec98fba77 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdwalsh
bugs1474366
milestone63.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1474366 - Update Debugger Frontend v70. r=dwalsh
devtools/client/debugger/new/README.mozilla
devtools/client/debugger/new/dist/debugger.css
devtools/client/debugger/new/src/actions/breakpoints.js
devtools/client/debugger/new/src/actions/breakpoints/addBreakpoint.js
devtools/client/debugger/new/src/actions/breakpoints/remapLocations.js
devtools/client/debugger/new/src/actions/breakpoints/syncBreakpoint.js
devtools/client/debugger/new/src/actions/index.js
devtools/client/debugger/new/src/actions/pause/mapFrames.js
devtools/client/debugger/new/src/actions/sources/newSources.js
devtools/client/debugger/new/src/actions/sources/prettyPrint.js
devtools/client/debugger/new/src/actions/sources/select.js
devtools/client/debugger/new/src/actions/ui.js
devtools/client/debugger/new/src/actions/utils/middleware/log.js
devtools/client/debugger/new/src/actions/utils/middleware/promise.js
devtools/client/debugger/new/src/client/firefox/create.js
devtools/client/debugger/new/src/client/index.js
devtools/client/debugger/new/src/components/Editor/CallSites.js
devtools/client/debugger/new/src/components/Editor/EditorMenu.js
devtools/client/debugger/new/src/components/Editor/GutterMenu.js
devtools/client/debugger/new/src/components/Editor/Tab.js
devtools/client/debugger/new/src/components/ProjectSearch.js
devtools/client/debugger/new/src/components/QuickOpenModal.js
devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
devtools/client/debugger/new/src/components/SecondaryPanes/EventListeners.js
devtools/client/debugger/new/src/components/shared/Button/CommandBarButton.js
devtools/client/debugger/new/src/reducers/ast.js
devtools/client/debugger/new/src/reducers/breakpoints.js
devtools/client/debugger/new/src/reducers/pause.js
devtools/client/debugger/new/src/reducers/replay.js
devtools/client/debugger/new/src/reducers/sources.js
devtools/client/debugger/new/src/selectors/getCallStackFrames.js
devtools/client/debugger/new/src/selectors/getRelativeSources.js
devtools/client/debugger/new/src/utils/bootstrap.js
devtools/client/debugger/new/src/utils/dbg.js
devtools/client/debugger/new/src/utils/editor/index.js
devtools/client/debugger/new/src/utils/pause/frames/annotateFrames.js
devtools/client/debugger/new/src/utils/pause/mapScopes/findGeneratedBindingFromPosition.js
devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
devtools/client/debugger/new/src/utils/pause/mapScopes/rangeMetadata.js
devtools/client/debugger/new/src/utils/pause/scopes/getScope.js
devtools/client/debugger/new/src/utils/quick-open.js
devtools/client/debugger/new/src/utils/sources-tree/getURL.js
devtools/client/debugger/new/src/utils/sources-tree/sortTree.js
devtools/client/debugger/new/src/utils/telemetry.js
devtools/client/debugger/new/src/workers/parser/findOutOfScopeLocations.js
devtools/client/debugger/new/src/workers/parser/getSymbols.js
devtools/client/debugger/new/src/workers/parser/steps.js
devtools/client/debugger/new/src/workers/parser/utils/ast.js
--- a/devtools/client/debugger/new/README.mozilla
+++ b/devtools/client/debugger/new/README.mozilla
@@ -1,13 +1,13 @@
 This is the debugger.html project output.
 See https://github.com/devtools-html/debugger.html
 
-Version 69
+Version 70
 
-Comparison: https://github.com/devtools-html/debugger.html/compare/release-68...release-69
+Comparison: https://github.com/devtools-html/debugger.html/compare/release-69...release-70
 
 Packages:
 - babel-plugin-transform-es2015-modules-commonjs @6.26.2
 - babel-preset-react @6.24.1
 - react @16.2.0
 - react-dom @16.2.0
 - webpack @3.11.0
--- a/devtools/client/debugger/new/dist/debugger.css
+++ b/devtools/client/debugger/new/dist/debugger.css
@@ -1883,23 +1883,23 @@ menuseparator {
   border: 1px solid var(--theme-body-color-inactive);
   border-radius: 2px;
 }
 
 .source-footer > .commands > .blackboxed > img.blackBox {
   background: var(--theme-highlight-blue);
 }
 
-.source-footer .blackbox-summary {
+.source-footer .blackbox-summary,
+.source-footer .mapped-source {
   color: var(--theme-body-color);
+  padding-left: 2.5px;
 }
 
 .source-footer .mapped-source {
-  color: var(--theme-body-color);
-  padding: 2.5px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
--- a/devtools/client/debugger/new/src/actions/breakpoints.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints.js
@@ -34,19 +34,25 @@ var _remapLocations = require("./breakpo
 var _remapLocations2 = _interopRequireDefault(_remapLocations);
 
 var _ast = require("../reducers/ast");
 
 var _syncBreakpoint = require("./breakpoints/syncBreakpoint");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+/**
+ * Redux actions for breakpoints
+ * @module actions/breakpoints
+ */
+// this will need to be changed so that addCLientBreakpoint is removed
 
 /**
  * Syncing a breakpoint add breakpoint information that is stored, and
  * contact the server for more data.
  *
  * @memberof actions/breakpoints
  * @static
  * @param {String} $1.sourceId String  value
@@ -183,20 +189,19 @@ function enableBreakpoint(location) {
   }) => {
     const breakpoint = (0, _selectors.getBreakpoint)(getState(), location);
 
     if (!breakpoint || breakpoint.loading) {
       return;
     } // To instantly reflect in the UI, we optimistically enable the breakpoint
 
 
-    const enabledBreakpoint = _objectSpread({}, breakpoint, {
+    const enabledBreakpoint = { ...breakpoint,
       disabled: false
-    });
-
+    };
     return dispatch({
       type: "ENABLE_BREAKPOINT",
       breakpoint: enabledBreakpoint,
       [_promise.PROMISE]: (0, _addBreakpoint2.default)(getState, client, sourceMaps, breakpoint)
     });
   };
 }
 /**
@@ -215,21 +220,19 @@ function disableBreakpoint(location) {
   }) => {
     const bp = (0, _selectors.getBreakpoint)(getState(), location);
 
     if (!bp || bp.loading) {
       return;
     }
 
     await client.removeBreakpoint(bp.generatedLocation);
-
-    const newBreakpoint = _objectSpread({}, bp, {
+    const newBreakpoint = { ...bp,
       disabled: true
-    });
-
+    };
     return dispatch({
       type: "DISABLE_BREAKPOINT",
       breakpoint: newBreakpoint
     });
   };
 }
 /**
  * Toggle All Breakpoints
@@ -246,27 +249,24 @@ function toggleAllBreakpoints(shouldDisa
     client
   }) => {
     const breakpoints = (0, _selectors.getBreakpoints)(getState());
     const modifiedBreakpoints = [];
 
     for (const [, breakpoint] of breakpoints) {
       if (shouldDisableBreakpoints) {
         await client.removeBreakpoint(breakpoint.generatedLocation);
-
-        const newBreakpoint = _objectSpread({}, breakpoint, {
+        const newBreakpoint = { ...breakpoint,
           disabled: true
-        });
-
+        };
         modifiedBreakpoints.push(newBreakpoint);
       } else {
-        const newBreakpoint = _objectSpread({}, breakpoint, {
+        const newBreakpoint = { ...breakpoint,
           disabled: false
-        });
-
+        };
         modifiedBreakpoints.push(newBreakpoint);
       }
     }
 
     if (shouldDisableBreakpoints) {
       return dispatch({
         type: "DISABLE_ALL_BREAKPOINTS",
         breakpoints: modifiedBreakpoints
@@ -379,21 +379,19 @@ function setBreakpointCondition(location
     }
 
     if (bp.disabled) {
       await dispatch(enableBreakpoint(location));
       bp.disabled = !bp.disabled;
     }
 
     await client.setBreakpointCondition(bp.id, location, condition, sourceMaps.isOriginalId(bp.location.sourceId));
-
-    const newBreakpoint = _objectSpread({}, bp, {
+    const newBreakpoint = { ...bp,
       condition
-    });
-
+    };
     (0, _breakpoint.assertBreakpoint)(newBreakpoint);
     return dispatch({
       type: "SET_BREAKPOINT_CONDITION",
       breakpoint: newBreakpoint
     });
   };
 }
 
--- a/devtools/client/debugger/new/src/actions/breakpoints/addBreakpoint.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints/addBreakpoint.js
@@ -8,39 +8,35 @@ exports.default = addBreakpoint;
 var _breakpoint = require("../../utils/breakpoint/index");
 
 var _selectors = require("../../selectors/index");
 
 var _sourceMaps = require("../../utils/source-maps");
 
 var _source = require("../../utils/source");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 async function addBreakpoint(getState, client, sourceMaps, breakpoint) {
   const state = getState();
   const source = (0, _selectors.getSource)(state, breakpoint.location.sourceId);
-
-  const location = _objectSpread({}, breakpoint.location, {
+  const location = { ...breakpoint.location,
     sourceUrl: source.url
-  });
-
+  };
   const generatedLocation = await (0, _sourceMaps.getGeneratedLocation)(state, source, location, sourceMaps);
   const generatedSource = (0, _selectors.getSource)(state, generatedLocation.sourceId);
   (0, _breakpoint.assertLocation)(location);
   (0, _breakpoint.assertLocation)(generatedLocation);
 
   if ((0, _breakpoint.breakpointExists)(state, location)) {
-    const newBreakpoint = _objectSpread({}, breakpoint, {
+    const newBreakpoint = { ...breakpoint,
       location,
       generatedLocation
-    });
-
+    };
     (0, _breakpoint.assertBreakpoint)(newBreakpoint);
     return {
       breakpoint: newBreakpoint
     };
   }
 
   const {
     id,
--- a/devtools/client/debugger/new/src/actions/breakpoints/remapLocations.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints/remapLocations.js
@@ -1,27 +1,23 @@
 "use strict";
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = remapLocations;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function remapLocations(breakpoints, sourceId, sourceMaps) {
   const sourceBreakpoints = breakpoints.map(async breakpoint => {
     if (breakpoint.location.sourceId !== sourceId) {
       return breakpoint;
     }
 
     const location = await sourceMaps.getOriginalLocation(breakpoint.location);
-    return _objectSpread({}, breakpoint, {
+    return { ...breakpoint,
       location
-    });
+    };
   });
   return Promise.all(sourceBreakpoints.valueSeq());
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/breakpoints/syncBreakpoint.js
+++ b/devtools/client/debugger/new/src/actions/breakpoints/syncBreakpoint.js
@@ -10,20 +10,19 @@ var _breakpoint = require("../../utils/b
 var _sourceMaps = require("../../utils/source-maps");
 
 var _source = require("../../utils/source");
 
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
 var _selectors = require("../../selectors/index");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 async function makeScopedLocation({
   name,
   offset
 }, location, source) {
   const scope = await (0, _breakpoint.findScopeByName)(source, name); // fallback onto the location line, if the scope is not found
   // note: we may at some point want to delete the breakpoint if the scope
   // disappears
 
@@ -32,23 +31,22 @@ async function makeScopedLocation({
     line,
     column: location.column,
     sourceUrl: source.url,
     sourceId: source.id
   };
 }
 
 function createSyncData(id, pendingBreakpoint, location, generatedLocation, previousLocation, text, originalText) {
-  const overrides = _objectSpread({}, pendingBreakpoint, {
+  const overrides = { ...pendingBreakpoint,
     generatedLocation,
     id,
     text,
     originalText
-  });
-
+  };
   const breakpoint = (0, _breakpoint.createBreakpoint)(location, overrides);
   (0, _breakpoint.assertBreakpoint)(breakpoint);
   return {
     breakpoint,
     previousLocation
   };
 } // we have three forms of syncing: disabled syncing, existing server syncing
 // and adding a new breakpoint
@@ -63,29 +61,26 @@ async function syncClientBreakpoint(getS
   if (!source) {
     return null;
   }
 
   const {
     location,
     astLocation
   } = pendingBreakpoint;
-
-  const previousLocation = _objectSpread({}, location, {
+  const previousLocation = { ...location,
     sourceId
-  });
-
+  };
   const scopedLocation = await makeScopedLocation(astLocation, previousLocation, source);
   const scopedGeneratedLocation = await (0, _sourceMaps.getGeneratedLocation)(getState(), source, scopedLocation, sourceMaps); // this is the generatedLocation of the pending breakpoint, with
   // the source id updated to reflect the new connection
 
-  const generatedLocation = _objectSpread({}, pendingBreakpoint.generatedLocation, {
+  const generatedLocation = { ...pendingBreakpoint.generatedLocation,
     sourceId: generatedSourceId
-  });
-
+  };
   const isSameLocation = !(0, _breakpoint.locationMoved)(generatedLocation, scopedGeneratedLocation);
   const existingClient = client.getBreakpointByLocation(generatedLocation);
   /** ******* CASE 1: No server change ***********/
   // early return if breakpoint is disabled or we are in the sameLocation
   // send update only to redux
 
   if (pendingBreakpoint.disabled || existingClient && isSameLocation) {
     const id = pendingBreakpoint.disabled ? "" : existingClient.id;
--- a/devtools/client/debugger/new/src/actions/index.js
+++ b/devtools/client/debugger/new/src/actions/index.js
@@ -69,13 +69,29 @@ var _toolbox = require("./toolbox");
 var toolbox = _interopRequireWildcard(_toolbox);
 
 var _preview = require("./preview");
 
 var preview = _interopRequireWildcard(_preview);
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-exports.default = _objectSpread({}, navigation, breakpoints, expressions, eventListeners, sources, pause, ui, fileSearch, ast, coverage, projectTextSearch, replay, quickOpen, sourceTree, debuggee, toolbox, preview);
\ No newline at end of file
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+exports.default = { ...navigation,
+  ...breakpoints,
+  ...expressions,
+  ...eventListeners,
+  ...sources,
+  ...pause,
+  ...ui,
+  ...fileSearch,
+  ...ast,
+  ...coverage,
+  ...projectTextSearch,
+  ...replay,
+  ...quickOpen,
+  ...sourceTree,
+  ...debuggee,
+  ...toolbox,
+  ...preview
+};
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/pause/mapFrames.js
+++ b/devtools/client/debugger/new/src/actions/pause/mapFrames.js
@@ -6,22 +6,21 @@ Object.defineProperty(exports, "__esModu
 exports.updateFrameLocation = updateFrameLocation;
 exports.mapDisplayNames = mapDisplayNames;
 exports.mapFrames = mapFrames;
 
 var _selectors = require("../../selectors/index");
 
 var _ast = require("../../utils/ast");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function updateFrameLocation(frame, sourceMaps) {
-  return sourceMaps.getOriginalLocation(frame.location).then(loc => _objectSpread({}, frame, {
+  return sourceMaps.getOriginalLocation(frame.location).then(loc => ({ ...frame,
     location: loc,
     generatedLocation: frame.generatedLocation || frame.location
   }));
 }
 
 function updateFrameLocations(frames, sourceMaps) {
   if (!frames || frames.length == 0) {
     return Promise.resolve(frames);
@@ -41,19 +40,19 @@ function mapDisplayNames(frames, getStat
 
     const originalFunction = (0, _ast.findClosestFunction)(symbols, frame.location);
 
     if (!originalFunction) {
       return frame;
     }
 
     const originalDisplayName = originalFunction.name;
-    return _objectSpread({}, frame, {
+    return { ...frame,
       originalDisplayName
-    });
+    };
   });
 }
 /**
  * Map call stack frame locations and display names to originals.
  * e.g.
  * 1. When the debuggee pauses
  * 2. When a source is pretty printed
  * 3. When symbols are loaded
--- a/devtools/client/debugger/new/src/actions/sources/newSources.js
+++ b/devtools/client/debugger/new/src/actions/sources/newSources.js
@@ -19,20 +19,24 @@ var _loadSourceText = require("./loadSou
 var _prettyPrint = require("./prettyPrint");
 
 var _sources = require("../sources/index");
 
 var _source = require("../../utils/source");
 
 var _selectors = require("../../selectors/index");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Redux actions for the sources state
+ * @module actions/sources
+ */
 function createOriginalSource(originalUrl, generatedSource, sourceMaps) {
   return {
     url: originalUrl,
     id: sourceMaps.generatedToOriginalId(generatedSource.id, originalUrl),
     isPrettyPrinted: false,
     isWasm: false,
     isBlackBoxed: false,
     loadedState: "unloaded"
@@ -77,19 +81,19 @@ function loadSourceMap(sourceId) {
     } catch (e) {
       console.error(e);
     }
 
     if (!urls) {
       // If this source doesn't have a sourcemap, enable it for pretty printing
       dispatch({
         type: "UPDATE_SOURCE",
-        source: _objectSpread({}, source, {
+        source: { ...source,
           sourceMapURL: ""
-        })
+        }
       });
       return;
     }
 
     return urls.map(url => createOriginalSource(url, source, sourceMaps));
   };
 } // If a request has been made to show this source, go ahead and
 // select it.
@@ -110,19 +114,19 @@ function checkSelectedSource(sourceId) {
     const pendingUrl = pendingLocation.url;
     const rawPendingUrl = (0, _source.getRawSourceURL)(pendingUrl);
 
     if (rawPendingUrl === source.url) {
       if ((0, _source.isPrettyURL)(pendingUrl)) {
         return await dispatch((0, _prettyPrint.togglePrettyPrint)(source.id));
       }
 
-      await dispatch((0, _sources.selectLocation)(_objectSpread({}, pendingLocation, {
+      await dispatch((0, _sources.selectLocation)({ ...pendingLocation,
         sourceId: source.id
-      })));
+      }));
     }
   };
 }
 
 function checkPendingBreakpoints(sourceId) {
   return async ({
     dispatch,
     getState
--- a/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
+++ b/devtools/client/debugger/new/src/actions/sources/prettyPrint.js
@@ -25,20 +25,19 @@ var _loadSourceText = require("./loadSou
 var _sources = require("../sources/index");
 
 var _pause = require("../pause/index");
 
 var _selectors = require("../../selectors/index");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function createPrettySource(sourceId) {
   return async ({
     dispatch,
     getState,
     sourceMaps
   }) => {
     const source = (0, _selectors.getSourceFromId)(getState(), sourceId);
     const url = (0, _source.getPrettySourceURL)(source.url);
@@ -59,22 +58,20 @@ function createPrettySource(sourceId) {
     const {
       code,
       mappings
     } = await (0, _prettyPrint.prettyPrint)({
       source,
       url
     });
     await sourceMaps.applySourceMap(source.id, url, code, mappings);
-
-    const loadedPrettySource = _objectSpread({}, prettySource, {
+    const loadedPrettySource = { ...prettySource,
       text: code,
       loadedState: "loaded"
-    });
-
+    };
     (0, _parser.setSource)(loadedPrettySource);
     dispatch({
       type: "UPDATE_SOURCE",
       source: loadedPrettySource
     });
     return prettySource;
   };
 }
@@ -116,23 +113,23 @@ function togglePrettyPrint(sourceId) {
     const options = {};
 
     if (selectedLocation) {
       options.location = await sourceMaps.getOriginalLocation(selectedLocation);
     }
 
     if (prettySource) {
       const _sourceId = prettySource.id;
-      return dispatch((0, _sources.selectLocation)(_objectSpread({}, options.location, {
+      return dispatch((0, _sources.selectLocation)({ ...options.location,
         sourceId: _sourceId
-      })));
+      }));
     }
 
     const newPrettySource = await dispatch(createPrettySource(sourceId));
     await dispatch((0, _breakpoints.remapBreakpoints)(sourceId));
     await dispatch((0, _pause.mapFrames)());
     await dispatch((0, _ast.setPausePoints)(newPrettySource.id));
     await dispatch((0, _ast.setSymbols)(newPrettySource.id));
-    return dispatch((0, _sources.selectLocation)(_objectSpread({}, options.location, {
+    return dispatch((0, _sources.selectLocation)({ ...options.location,
       sourceId: newPrettySource.id
-    })));
+    }));
   };
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/actions/sources/select.js
+++ b/devtools/client/debugger/new/src/actions/sources/select.js
@@ -29,20 +29,24 @@ var _prefs = require("../../utils/prefs"
 var _source = require("../../utils/source");
 
 var _location = require("../../utils/location");
 
 var _sourceMaps = require("../../utils/source-maps");
 
 var _selectors = require("../../selectors/index");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Redux actions for the sources state
+ * @module actions/sources
+ */
 const setSelectedLocation = exports.setSelectedLocation = (source, location) => ({
   type: "SET_SELECTED_LOCATION",
   source,
   location
 });
 
 const setPendingSelectedLocation = exports.setPendingSelectedLocation = (url, options) => ({
   type: "SET_PENDING_SELECTED_LOCATION",
@@ -68,19 +72,19 @@ function selectSourceURL(url, options = 
   return async ({
     dispatch,
     getState
   }) => {
     const source = (0, _selectors.getSourceByURL)(getState(), url);
 
     if (source) {
       const sourceId = source.id;
-      const location = (0, _location.createLocation)(_objectSpread({}, options.location, {
+      const location = (0, _location.createLocation)({ ...options.location,
         sourceId
-      }));
+      });
       await dispatch(selectLocation(location));
     } else {
       dispatch(setPendingSelectedLocation(url, options));
     }
   };
 }
 /**
  * @memberof actions/sources
@@ -105,16 +109,18 @@ function selectSource(sourceId) {
 
 
 function selectLocation(location) {
   return async ({
     dispatch,
     getState,
     client
   }) => {
+    const currentSource = (0, _selectors.getSelectedSource)(getState());
+
     if (!client) {
       // No connection, do nothing. This happens when the debugger is
       // shut down too fast and it tries to display a default source.
       return;
     }
 
     const source = (0, _selectors.getSource)(getState(), location.sourceId);
 
@@ -140,31 +146,39 @@ function selectLocation(location) {
     }
 
     if (_prefs.prefs.autoPrettyPrint && !(0, _selectors.getPrettySource)(getState(), loadedSource.id) && (0, _source.shouldPrettyPrint)(loadedSource) && (0, _source.isMinified)(loadedSource)) {
       await dispatch((0, _prettyPrint.togglePrettyPrint)(loadedSource.id));
       dispatch((0, _tabs.closeTab)(loadedSource.url));
     }
 
     dispatch((0, _ast.setSymbols)(loadedSource.id));
-    dispatch((0, _ast.setOutOfScopeLocations)());
+    dispatch((0, _ast.setOutOfScopeLocations)()); // If a new source is selected update the file search results
+
+    const newSource = (0, _selectors.getSelectedSource)(getState());
+
+    if (currentSource && currentSource !== newSource) {
+      dispatch((0, _ui.updateActiveFileSearch)());
+    }
   };
 }
 /**
  * @memberof actions/sources
  * @static
  */
 
 
 function selectSpecificLocation(location) {
   return async ({
     dispatch,
     getState,
     client
   }) => {
+    const currentSource = (0, _selectors.getSelectedSource)(getState());
+
     if (!client) {
       // No connection, do nothing. This happens when the debugger is
       // shut down too fast and it tries to display a default source.
       return;
     }
 
     const source = (0, _selectors.getSource)(getState(), location.sourceId);
 
@@ -185,17 +199,23 @@ function selectSpecificLocation(location
     const loadedSource = (0, _selectors.getSource)(getState(), source.id);
 
     if (!loadedSource) {
       return;
     }
 
     const sourceId = loadedSource.id;
     dispatch((0, _ast.setSymbols)(sourceId));
-    dispatch((0, _ast.setOutOfScopeLocations)());
+    dispatch((0, _ast.setOutOfScopeLocations)()); // If a new source is selected update the file search results
+
+    const newSource = (0, _selectors.getSelectedSource)(getState());
+
+    if (currentSource && currentSource !== newSource) {
+      dispatch((0, _ui.updateActiveFileSearch)());
+    }
   };
 }
 /**
  * @memberof actions/sources
  * @static
  */
 
 
@@ -230,17 +250,18 @@ function jumpToMappedLocation(location) 
     let pairedLocation;
 
     if ((0, _devtoolsSourceMap.isOriginalId)(location.sourceId)) {
       pairedLocation = await (0, _sourceMaps.getGeneratedLocation)(getState(), source, location, sourceMaps);
     } else {
       pairedLocation = await sourceMaps.getOriginalLocation(location, source);
     }
 
-    return dispatch(selectLocation(_objectSpread({}, pairedLocation)));
+    return dispatch(selectLocation({ ...pairedLocation
+    }));
   };
 }
 
 function jumpToMappedSelectedLocation() {
   return async function ({
     dispatch,
     getState
   }) {
--- a/devtools/client/debugger/new/src/actions/ui.js
+++ b/devtools/client/debugger/new/src/actions/ui.js
@@ -2,16 +2,17 @@
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.setContextMenu = setContextMenu;
 exports.setPrimaryPaneTab = setPrimaryPaneTab;
 exports.closeActiveSearch = closeActiveSearch;
 exports.setActiveSearch = setActiveSearch;
+exports.updateActiveFileSearch = updateActiveFileSearch;
 exports.toggleFrameworkGrouping = toggleFrameworkGrouping;
 exports.showSource = showSource;
 exports.togglePaneCollapse = togglePaneCollapse;
 exports.highlightLineRange = highlightLineRange;
 exports.flashLineRange = flashLineRange;
 exports.clearHighlightLineRange = clearHighlightLineRange;
 exports.openConditionalPanel = openConditionalPanel;
 exports.closeConditionalPanel = closeConditionalPanel;
@@ -20,16 +21,20 @@ exports.setProjectDirectoryRoot = setPro
 exports.setOrientation = setOrientation;
 
 var _selectors = require("../selectors/index");
 
 var _ui = require("../reducers/ui");
 
 var _source = require("../utils/source");
 
+var _editor = require("../utils/editor/index");
+
+var _fileSearch = require("./file-search");
+
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function setContextMenu(type, event) {
   return ({
     dispatch
   }) => {
     dispatch({
@@ -75,16 +80,31 @@ function setActiveSearch(activeSearch) {
 
     dispatch({
       type: "TOGGLE_ACTIVE_SEARCH",
       value: activeSearch
     });
   };
 }
 
+function updateActiveFileSearch() {
+  return ({
+    dispatch,
+    getState
+  }) => {
+    const isFileSearchOpen = (0, _selectors.getActiveSearch)(getState()) === "file";
+    const fileSearchQuery = (0, _selectors.getFileSearchQuery)(getState());
+
+    if (isFileSearchOpen && fileSearchQuery) {
+      const editor = (0, _editor.getEditor)();
+      dispatch((0, _fileSearch.searchContents)(fileSearchQuery, editor));
+    }
+  };
+}
+
 function toggleFrameworkGrouping(toggleValue) {
   return ({
     dispatch,
     getState
   }) => {
     dispatch({
       type: "TOGGLE_FRAMEWORK_GROUPING",
       value: toggleValue
--- a/devtools/client/debugger/new/src/actions/utils/middleware/log.js
+++ b/devtools/client/debugger/new/src/actions/utils/middleware/log.js
@@ -2,54 +2,54 @@
 
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.log = log;
 
 var _devtoolsEnvironment = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-environment"];
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* global window */
 const blacklist = ["SET_POPUP_OBJECT_PROPERTIES", "SET_PAUSE_POINTS", "SET_SYMBOLS", "OUT_OF_SCOPE_LOCATIONS", "MAP_SCOPES", "MAP_FRAMES", "ADD_SCOPES", "IN_SCOPE_LINES", "REMOVE_BREAKPOINT"];
 
 function cloneAction(action) {
   action = action || {};
-  action = _objectSpread({}, action); // ADD_TAB, ...
+  action = { ...action
+  }; // ADD_TAB, ...
 
   if (action.source && action.source.text) {
-    const source = _objectSpread({}, action.source, {
+    const source = { ...action.source,
       text: ""
-    });
-
+    };
     action.source = source;
   }
 
   if (action.sources) {
     const sources = action.sources.slice(0, 20).map(source => {
       const url = !source.url || source.url.includes("data:") ? "" : source.url;
-      return _objectSpread({}, source, {
+      return { ...source,
         url
-      });
+      };
     });
     action.sources = sources;
   } // LOAD_SOURCE_TEXT
 
 
   if (action.text) {
     action.text = "";
   }
 
   if (action.value && action.value.text) {
-    const value = _objectSpread({}, action.value, {
+    const value = { ...action.value,
       text: ""
-    });
-
+    };
     action.value = value;
   }
 
   return action;
 }
 
 function formatFrame(frame) {
   const {
@@ -60,24 +60,24 @@ function formatFrame(frame) {
   return {
     id,
     location,
     displayName
   };
 }
 
 function formatPause(pause) {
-  return _objectSpread({}, pause, {
+  return { ...pause,
     pauseInfo: {
       why: pause.why
     },
     scopes: [],
     frames: pause.frames.map(formatFrame),
     loadedObjects: []
-  });
+  };
 }
 
 function serializeAction(action) {
   try {
     action = cloneAction(action);
 
     if (blacklist.includes(action.type)) {
       action = {};
--- a/devtools/client/debugger/new/src/actions/utils/middleware/promise.js
+++ b/devtools/client/debugger/new/src/actions/utils/middleware/promise.js
@@ -4,20 +4,19 @@ Object.defineProperty(exports, "__esModu
   value: true
 });
 exports.promise = exports.PROMISE = undefined;
 
 var _lodash = require("devtools/client/shared/vendor/lodash");
 
 var _DevToolsUtils = require("../../../utils/DevToolsUtils");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 let seqIdVal = 1;
 
 function seqIdGen() {
   return seqIdVal++;
 }
 
 function filterAction(action) {
   return (0, _lodash.fromPairs)((0, _lodash.toPairs)(action).filter(pair => pair[0] !== PROMISE));
@@ -31,39 +30,39 @@ function promiseMiddleware({
     if (!(PROMISE in action)) {
       return next(action);
     }
 
     const promiseInst = action[PROMISE];
     const seqId = seqIdGen().toString(); // Create a new action that doesn't have the promise field and has
     // the `seqId` field that represents the sequence id
 
-    action = _objectSpread({}, filterAction(action), {
+    action = { ...filterAction(action),
       seqId
-    });
-    dispatch(_objectSpread({}, action, {
+    };
+    dispatch({ ...action,
       status: "start"
-    })); // Return the promise so action creators can still compose if they
+    }); // Return the promise so action creators can still compose if they
     // want to.
 
     return new Promise((resolve, reject) => {
       promiseInst.then(value => {
         (0, _DevToolsUtils.executeSoon)(() => {
-          dispatch(_objectSpread({}, action, {
+          dispatch({ ...action,
             status: "done",
             value: value
-          }));
+          });
           resolve(value);
         });
       }, error => {
         (0, _DevToolsUtils.executeSoon)(() => {
-          dispatch(_objectSpread({}, action, {
+          dispatch({ ...action,
             status: "error",
             error: error.message || error
-          }));
+          });
           reject(error);
         });
       });
     });
   };
 }
 
 const PROMISE = exports.PROMISE = "@@dispatch/promise";
--- a/devtools/client/debugger/new/src/client/firefox/create.js
+++ b/devtools/client/debugger/new/src/client/firefox/create.js
@@ -3,20 +3,16 @@
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.createFrame = createFrame;
 exports.createSource = createSource;
 exports.createPause = createPause;
 exports.createBreakpointLocation = createBreakpointLocation;
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 // This module converts Firefox specific types to the generic types
 function createFrame(frame) {
   if (!frame) {
     return null;
   }
@@ -57,20 +53,20 @@ function createSource(source, {
     isBlackBoxed: false,
     loadedState: "unloaded"
   };
 }
 
 function createPause(packet, response) {
   // NOTE: useful when the debugger is already paused
   const frame = packet.frame || response.frames[0];
-  return _objectSpread({}, packet, {
+  return { ...packet,
     frame: createFrame(frame),
     frames: response.frames.map(createFrame)
-  });
+  };
 } // Firefox only returns `actualLocation` if it actually changed,
 // but we want it always to exist. Format `actualLocation` if it
 // exists, otherwise use `location`.
 
 
 function createBreakpointLocation(location, actualLocation) {
   if (!actualLocation) {
     return location;
--- a/devtools/client/debugger/new/src/client/index.js
+++ b/devtools/client/debugger/new/src/client/index.js
@@ -12,20 +12,19 @@ var firefox = _interopRequireWildcard(_f
 var _prefs = require("../utils/prefs");
 
 var _dbg = require("../utils/dbg");
 
 var _bootstrap = require("../utils/bootstrap");
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function loadFromPrefs(actions) {
   const {
     pauseOnExceptions,
     pauseOnCaughtExceptions
   } = _prefs.prefs;
 
   if (pauseOnExceptions || pauseOnCaughtExceptions) {
     return actions.pauseOnExceptions(pauseOnExceptions, pauseOnCaughtExceptions);
@@ -52,17 +51,19 @@ async function onConnect(connection, {
   });
   const workers = (0, _bootstrap.bootstrapWorkers)();
   await firefox.onConnect(connection, actions);
   await loadFromPrefs(actions);
   (0, _dbg.setupHelper)({
     store,
     actions,
     selectors,
-    workers: _objectSpread({}, workers, services),
+    workers: { ...workers,
+      ...services
+    },
     connection,
     client: firefox.clientCommands
   });
   (0, _bootstrap.bootstrapApp)(store);
   return {
     store,
     actions,
     selectors,
--- a/devtools/client/debugger/new/src/components/Editor/CallSites.js
+++ b/devtools/client/debugger/new/src/components/Editor/CallSites.js
@@ -23,20 +23,19 @@ var _editor = require("../../utils/edito
 var _wasm = require("../../utils/wasm");
 
 var _actions = require("../../actions/index");
 
 var _actions2 = _interopRequireDefault(_actions);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getCallSiteAtLocation(callSites, location) {
   return callSites.find(callSite => (0, _lodash.isEqualWith)(callSite.location, location, (cloc, loc) => {
     return loc.line === cloc.start.line && loc.column >= cloc.start.column && loc.column <= cloc.end.column;
   }));
 }
 
 class CallSites extends _react.Component {
   constructor(props) {
@@ -222,17 +221,17 @@ function getCallSites(symbols, breakpoin
 
     if (breakpointId) {
       return bpLocationMap[breakpointId];
     }
   }
 
   return callSites.filter(({
     location
-  }) => location.start.line === location.end.line).map(callSite => _objectSpread({}, callSite, {
+  }) => location.start.line === location.end.line).map(callSite => ({ ...callSite,
     breakpoint: findBreakpoint(callSite)
   }));
 }
 
 const mapStateToProps = state => {
   const selectedLocation = (0, _selectors.getSelectedLocation)(state);
   const selectedSource = (0, _selectors.getSelectedSource)(state);
   const sourceId = selectedLocation && selectedLocation.sourceId;
--- a/devtools/client/debugger/new/src/components/Editor/EditorMenu.js
+++ b/devtools/client/debugger/new/src/components/Editor/EditorMenu.js
@@ -25,18 +25,19 @@ var _source = require("../../utils/sourc
 var _selectors = require("../../selectors/index");
 
 var _actions = require("../../actions/index");
 
 var _actions2 = _interopRequireDefault(_actions);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getMenuItems(event, {
   addExpression,
   editor,
   evaluateInConsole,
   flashLineRange,
   getFunctionLocation,
   getFunctionText,
   hasPrettyPrint,
@@ -184,20 +185,19 @@ class EditorMenu extends _react.Componen
   componentWillUpdate(nextProps) {
     // clear the context menu since it is open
     this.props.setContextMenu("", null);
     return this.showMenu(nextProps);
   }
 
   showMenu(nextProps) {
     const {
-      contextMenu
-    } = nextProps,
-          options = _objectWithoutProperties(nextProps, ["contextMenu"]);
-
+      contextMenu,
+      ...options
+    } = nextProps;
     const {
       event
     } = contextMenu;
     (0, _devtoolsContextmenu.showMenu)(event, getMenuItems(event, options));
   }
 
   render() {
     return null;
--- a/devtools/client/debugger/new/src/components/Editor/GutterMenu.js
+++ b/devtools/client/debugger/new/src/components/Editor/GutterMenu.js
@@ -16,22 +16,19 @@ var _editor = require("../../utils/edito
 var _selectors = require("../../selectors/index");
 
 var _actions = require("../../actions/index");
 
 var _actions2 = _interopRequireDefault(_actions);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function gutterMenu({
   breakpoint,
   line,
   event,
   isPaused,
   toggleBreakpoint,
   openConditionalPanel,
   toggleDisabledBreakpoint,
@@ -66,54 +63,53 @@ function gutterMenu({
       id: "node-menu-disable-breakpoint",
       label: L10N.getStr("editor.disableBreakpoint")
     },
     continueToHere: {
       id: "node-menu-continue-to-here",
       label: L10N.getStr("editor.continueToHere.label")
     }
   };
-
-  const toggleBreakpointItem = _objectSpread({
+  const toggleBreakpointItem = {
     accesskey: L10N.getStr("shortcuts.toggleBreakpoint.accesskey"),
     disabled: false,
     click: () => {
       toggleBreakpoint(line);
 
       if (isCbPanelOpen) {
         closeConditionalPanel();
       }
-    }
-  }, breakpoint ? gutterItems.removeBreakpoint : gutterItems.addBreakpoint);
-
-  const conditionalBreakpoint = _objectSpread({
+    },
+    ...(breakpoint ? gutterItems.removeBreakpoint : gutterItems.addBreakpoint)
+  };
+  const conditionalBreakpoint = {
     accesskey: L10N.getStr("editor.addConditionalBreakpoint.accesskey"),
     disabled: false,
-    click: () => openConditionalPanel(line)
-  }, breakpoint && breakpoint.condition ? gutterItems.editConditional : gutterItems.addConditional);
-
+    click: () => openConditionalPanel(line),
+    ...(breakpoint && breakpoint.condition ? gutterItems.editConditional : gutterItems.addConditional)
+  };
   const items = [toggleBreakpointItem, conditionalBreakpoint];
 
   if (isPaused) {
-    const continueToHereItem = _objectSpread({
+    const continueToHereItem = {
       accesskey: L10N.getStr("editor.continueToHere.accesskey"),
       disabled: false,
-      click: () => continueToHere(line)
-    }, gutterItems.continueToHere);
-
+      click: () => continueToHere(line),
+      ...gutterItems.continueToHere
+    };
     items.push(continueToHereItem);
   }
 
   if (breakpoint) {
-    const disableBreakpoint = _objectSpread({
+    const disableBreakpoint = {
       accesskey: L10N.getStr("editor.disableBreakpoint.accesskey"),
       disabled: false,
-      click: () => toggleDisabledBreakpoint(line)
-    }, breakpoint.disabled ? gutterItems.enableBreakpoint : gutterItems.disableBreakpoint);
-
+      click: () => toggleDisabledBreakpoint(line),
+      ...(breakpoint.disabled ? gutterItems.enableBreakpoint : gutterItems.disableBreakpoint)
+    };
     items.push(disableBreakpoint);
   }
 
   (0, _devtoolsContextmenu.showMenu)(event, items);
 }
 
 class GutterContextMenuComponent extends _react.Component {
   constructor() {
@@ -127,37 +123,37 @@ class GutterContextMenuComponent extends
   componentWillUpdate(nextProps) {
     // clear the context menu since it is open
     this.props.setContextMenu("", null);
     return this.showMenu(nextProps);
   }
 
   showMenu(nextProps) {
     const {
-      contextMenu
-    } = nextProps,
-          props = _objectWithoutProperties(nextProps, ["contextMenu"]);
-
+      contextMenu,
+      ...props
+    } = nextProps;
     const {
       event
     } = contextMenu;
     const sourceId = props.selectedSource ? props.selectedSource.id : "";
     const line = (0, _editor.lineAtHeight)(props.editor, sourceId, event);
     const breakpoint = nextProps.breakpoints.find(bp => bp.location.line === line);
 
     if (props.emptyLines && props.emptyLines.includes(line)) {
       return;
     }
 
-    gutterMenu(_objectSpread({
+    gutterMenu({
       event,
       sourceId,
       line,
-      breakpoint
-    }, props));
+      breakpoint,
+      ...props
+    });
   }
 
   render() {
     return null;
   }
 
 }
 
--- a/devtools/client/debugger/new/src/components/Editor/Tab.js
+++ b/devtools/client/debugger/new/src/components/Editor/Tab.js
@@ -31,20 +31,19 @@ var _tabs = require("../../utils/tabs");
 var _selectors = require("../../selectors/index");
 
 var _classnames = require("devtools/client/debugger/new/dist/vendors").vendored["classnames"];
 
 var _classnames2 = _interopRequireDefault(_classnames);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 class Tab extends _react.PureComponent {
   constructor(...args) {
     var _temp;
 
     return _temp = super(...args), this.onTabContextMenu = (event, tab) => {
       event.preventDefault();
       this.showContextMenu(event, tab);
     }, _temp;
@@ -66,61 +65,61 @@ class Tab extends _react.PureComponent {
 
     if (!sourceTab) {
       return;
     }
 
     const isPrettySource = (0, _source.isPretty)(sourceTab);
     const tabMenuItems = (0, _tabs.getTabMenuItems)();
     const items = [{
-      item: _objectSpread({}, tabMenuItems.closeTab, {
+      item: { ...tabMenuItems.closeTab,
         click: () => closeTab(sourceTab.url)
-      })
+      }
     }, {
-      item: _objectSpread({}, tabMenuItems.closeOtherTabs, {
+      item: { ...tabMenuItems.closeOtherTabs,
         click: () => closeTabs(otherTabURLs)
-      }),
+      },
       hidden: () => tabSources.size === 1
     }, {
-      item: _objectSpread({}, tabMenuItems.closeTabsToEnd, {
+      item: { ...tabMenuItems.closeTabsToEnd,
         click: () => {
           const tabIndex = tabSources.findIndex(t => t.id == tab);
           closeTabs(tabURLs.filter((t, i) => i > tabIndex));
         }
-      }),
+      },
       hidden: () => tabSources.size === 1 || tabSources.some((t, i) => t === tab && tabSources.size - 1 === i)
     }, {
-      item: _objectSpread({}, tabMenuItems.closeAllTabs, {
+      item: { ...tabMenuItems.closeAllTabs,
         click: () => closeTabs(tabURLs)
-      })
+      }
     }, {
       item: {
         type: "separator"
       }
     }, {
-      item: _objectSpread({}, tabMenuItems.copyToClipboard, {
+      item: { ...tabMenuItems.copyToClipboard,
         disabled: selectedSource.id !== tab,
         click: () => (0, _clipboard.copyToTheClipboard)(sourceTab.text)
-      })
+      }
     }, {
-      item: _objectSpread({}, tabMenuItems.copySourceUri2, {
+      item: { ...tabMenuItems.copySourceUri2,
         click: () => (0, _clipboard.copyToTheClipboard)((0, _source.getRawSourceURL)(sourceTab.url))
-      })
+      }
     }];
     items.push({
-      item: _objectSpread({}, tabMenuItems.showSource, {
+      item: { ...tabMenuItems.showSource,
         click: () => showSource(tab)
-      })
+      }
     });
 
     if (!isPrettySource) {
       items.push({
-        item: _objectSpread({}, tabMenuItems.prettyPrint, {
+        item: { ...tabMenuItems.prettyPrint,
           click: () => togglePrettyPrint(tab)
-        })
+        }
       });
     }
 
     (0, _devtoolsContextmenu.showMenu)(e, (0, _devtoolsContextmenu.buildMenu)(items));
   }
 
   isProjectSearchEnabled() {
     return this.props.activeSearch === "project";
--- a/devtools/client/debugger/new/src/components/ProjectSearch.js
+++ b/devtools/client/debugger/new/src/components/ProjectSearch.js
@@ -42,20 +42,19 @@ var _ManagedTree = require("./shared/Man
 var _ManagedTree2 = _interopRequireDefault(_ManagedTree);
 
 var _SearchInput = require("./shared/SearchInput");
 
 var _SearchInput2 = _interopRequireDefault(_SearchInput);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getFilePath(item, index) {
   return item.type === "RESULT" ? `${item.sourceId}-${index || "$"}` : `${item.sourceId}-${item.line}-${item.column}-${index || "$"}`;
 }
 
 function sanitizeQuery(query) {
   // no '\' at end of query
   return query.replace(/\\$/, "");
 }
@@ -79,30 +78,32 @@ class ProjectSearch extends _react.Compo
       }
 
       return setActiveSearch("project");
     };
 
     this.isProjectSearchEnabled = () => this.props.activeSearch === "project";
 
     this.selectMatchItem = matchItem => {
-      this.props.selectLocation(_objectSpread({}, matchItem));
+      this.props.selectLocation({ ...matchItem
+      });
       this.props.doSearchForHighlight(this.state.inputValue, (0, _editor.getEditor)(), matchItem.line, matchItem.column);
     };
 
     this.getResults = () => {
       const {
         results
       } = this.props;
-      return results.toJS().map(result => _objectSpread({
-        type: "RESULT"
-      }, result, {
-        matches: result.matches.map(m => _objectSpread({
-          type: "MATCH"
-        }, m))
+      return results.toJS().map(result => ({
+        type: "RESULT",
+        ...result,
+        matches: result.matches.map(m => ({
+          type: "MATCH",
+          ...m
+        }))
       })).filter(result => result.filepath && result.matches.length > 0);
     };
 
     this.getResultCount = () => this.getResults().reduce((count, file) => count + file.matches.length, 0);
 
     this.onKeyDown = e => {
       if (e.key === "Escape") {
         return;
--- a/devtools/client/debugger/new/src/components/QuickOpenModal.js
+++ b/devtools/client/debugger/new/src/components/QuickOpenModal.js
@@ -38,20 +38,16 @@ var _SearchInput2 = _interopRequireDefau
 var _ResultList = require("./shared/ResultList");
 
 var _ResultList2 = _interopRequireDefault(_ResultList);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
 function filter(values, query) {
   return _fuzzaldrinPlus2.default.filter(values, query, {
     key: "value",
     maxResults: 1000
   });
 }
 
 class QuickOpenModal extends _react.Component {
@@ -165,19 +161,19 @@ class QuickOpenModal extends _react.Comp
       }
 
       if (this.isShortcutQuery()) {
         return this.setModifier(item);
       }
 
       if (this.isGotoSourceQuery()) {
         const location = (0, _quickOpen.parseLineColumn)(this.props.query);
-        return this.gotoLocation(_objectSpread({}, location, {
+        return this.gotoLocation({ ...location,
           sourceId: item.id
-        }));
+        });
       }
 
       if (this.isSymbolSearch()) {
         return this.gotoLocation({
           line: item.location && item.location.start ? item.location.start.line : 0
         });
       }
 
@@ -202,22 +198,22 @@ class QuickOpenModal extends _react.Comp
         const line = item.location && item.location.start ? item.location.start.line : 0;
         return selectLocation({
           sourceId: selectedSource.id,
           line
         });
       }
 
       if (this.isFunctionQuery()) {
-        return highlightLineRange(_objectSpread({}, item.location != null ? {
-          start: item.location.start.line,
-          end: item.location.end.line
-        } : {}, {
+        return highlightLineRange({ ...(item.location != null ? {
+            start: item.location.start.line,
+            end: item.location.end.line
+          } : {}),
           sourceId: selectedSource.id
-        }));
+        });
       }
     };
 
     this.traverseResults = e => {
       const direction = e.key === "ArrowUp" ? -1 : 1;
       const {
         selectedIndex,
         results
@@ -328,19 +324,19 @@ class QuickOpenModal extends _react.Comp
 
       if (newQuery === "") {
         return results;
       }
 
       newQuery = query.replace(/[@:#?]/gi, " ");
       return results.map(result => {
         if (typeof result.title == "string") {
-          return _objectSpread({}, result, {
+          return { ...result,
             title: this.renderHighlight(result.title, (0, _path.basename)(newQuery), "title")
-          });
+          };
         }
 
         return result;
       });
     };
 
     this.state = {
       results: null,
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/Breakpoints/Breakpoint.js
@@ -31,32 +31,31 @@ var _breakpoint = require("../../../util
 var _prefs = require("../../../utils/prefs");
 
 var _editor = require("../../../utils/editor/index");
 
 var _selectors = require("../../../selectors/index");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getMappedLocation(mappedLocation, selectedSource) {
   return selectedSource && (0, _devtoolsSourceMap.isGeneratedId)(selectedSource.id) ? mappedLocation.generatedLocation : mappedLocation.location;
 }
 
 class Breakpoint extends _react.PureComponent {
   constructor(...args) {
     var _temp;
 
     return _temp = super(...args), this.onContextMenu = e => {
-      (0, _BreakpointsContextMenu2.default)(_objectSpread({}, this.props, {
+      (0, _BreakpointsContextMenu2.default)({ ...this.props,
         contextMenuEvent: e
-      }));
+      });
     }, this.selectBreakpoint = () => {
       const {
         breakpoint,
         selectSpecificLocation
       } = this.props;
       selectSpecificLocation(breakpoint.location);
     }, this.removeBreakpoint = event => {
       const {
--- a/devtools/client/debugger/new/src/components/SecondaryPanes/EventListeners.js
+++ b/devtools/client/debugger/new/src/components/SecondaryPanes/EventListeners.js
@@ -15,20 +15,19 @@ var _actions = require("../../actions/in
 var _actions2 = _interopRequireDefault(_actions);
 
 var _selectors = require("../../selectors/index");
 
 var _Button = require("../shared/Button/index");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 class EventListeners extends _react.Component {
   constructor(...args) {
     super(...args);
 
     this.renderListener = ({
       type,
       selector,
       line,
@@ -94,22 +93,22 @@ class EventListeners extends _react.Comp
       className: "pane event-listeners"
     }, listeners.map(this.renderListener));
   }
 
 }
 
 const mapStateToProps = state => {
   const listeners = (0, _selectors.getEventListeners)(state).map(listener => {
-    return _objectSpread({}, listener, {
+    return { ...listener,
       breakpoint: (0, _selectors.getBreakpoint)(state, {
         sourceId: listener.sourceId,
         line: listener.line
       })
-    });
+    };
   });
   return {
     listeners
   };
 };
 
 exports.default = (0, _reactRedux.connect)(mapStateToProps, {
   selectLocation: _actions2.default.selectLocation,
--- a/devtools/client/debugger/new/src/components/shared/Button/CommandBarButton.js
+++ b/devtools/client/debugger/new/src/components/shared/Button/CommandBarButton.js
@@ -12,18 +12,16 @@ var _classnames2 = _interopRequireDefaul
 var _react = require("devtools/client/shared/vendor/react");
 
 var _react2 = _interopRequireDefault(_react);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
 
-function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
-
 function debugBtn(onClick, type, className, tooltip, disabled = false, ariaPressed = false) {
   return _react2.default.createElement(CommandBarButton, {
     className: (0, _classnames2.default)(type, className),
     disabled: disabled,
     key: type,
     onClick: onClick,
     pressed: ariaPressed,
     title: tooltip
@@ -31,19 +29,18 @@ function debugBtn(onClick, type, classNa
     className: type
   }));
 }
 
 const CommandBarButton = props => {
   const {
     children,
     className,
-    pressed = false
-  } = props,
-        rest = _objectWithoutProperties(props, ["children", "className", "pressed"]);
-
+    pressed = false,
+    ...rest
+  } = props;
   return _react2.default.createElement("button", _extends({
     "aria-pressed": pressed,
     className: (0, _classnames2.default)("command-bar-button", className)
   }, rest), children);
 };
 
 exports.default = CommandBarButton;
\ No newline at end of file
--- a/devtools/client/debugger/new/src/reducers/ast.js
+++ b/devtools/client/debugger/new/src/reducers/ast.js
@@ -28,20 +28,24 @@ var _makeRecord = require("../utils/make
 var _makeRecord2 = _interopRequireDefault(_makeRecord);
 
 var _ast = require("../utils/ast");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Ast reducer
+ * @module reducers/ast
+ */
 function initialASTState() {
   return (0, _makeRecord2.default)({
     symbols: I.Map(),
     emptyLines: I.Map(),
     outOfScopeLocations: null,
     inScopeLines: null,
     preview: null,
     pausePoints: I.Map(),
@@ -102,19 +106,19 @@ function update(state = initialASTState(
         }
 
         if (!action.value) {
           return state.set("preview", null);
         } // NOTE: if the preview does not exist, it has been cleared
 
 
         if (state.get("preview")) {
-          return state.set("preview", _objectSpread({}, action.value, {
+          return state.set("preview", { ...action.value,
             updating: false
-          }));
+          });
         }
 
         return state;
       }
 
     case "RESUME":
       {
         return state.set("outOfScopeLocations", null);
--- a/devtools/client/debugger/new/src/reducers/breakpoints.js
+++ b/devtools/client/debugger/new/src/reducers/breakpoints.js
@@ -24,20 +24,24 @@ var _makeRecord2 = _interopRequireDefaul
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
 var _breakpoint = require("../utils/breakpoint/index");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Breakpoints reducer
+ * @module reducers/breakpoints
+ */
 function initialBreakpointsState() {
   return (0, _makeRecord2.default)({
     breakpoints: I.Map(),
     breakpointsDisabled: false
   })();
 }
 
 function update(state = initialBreakpointsState(), action) {
@@ -157,19 +161,19 @@ function updateAllBreakpoints(state, act
     state = state.setIn(["breakpoints", locationId], breakpoint);
   });
   return state;
 }
 
 function remapBreakpoints(state, action) {
   const breakpoints = action.breakpoints.reduce((updatedBreakpoints, breakpoint) => {
     const locationId = (0, _breakpoint.makeLocationId)(breakpoint.location);
-    return _objectSpread({}, updatedBreakpoints, {
+    return { ...updatedBreakpoints,
       [locationId]: breakpoint
-    });
+    };
   }, {});
   return state.set("breakpoints", I.Map(breakpoints));
 }
 
 function removeBreakpoint(state, action) {
   const {
     breakpoint
   } = action;
--- a/devtools/client/debugger/new/src/reducers/pause.js
+++ b/devtools/client/debugger/new/src/reducers/pause.js
@@ -34,20 +34,26 @@ exports.getChromeScopes = getChromeScope
 var _reselect = require("devtools/client/debugger/new/dist/vendors").vendored["reselect"];
 
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
 var _prefs = require("../utils/prefs");
 
 var _sources = require("./sources");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+/* eslint complexity: ["error", 30]*/
 
+/**
+ * Pause reducer
+ * @module reducers/pause
+ */
 const createPauseState = exports.createPauseState = () => ({
   extra: {},
   why: null,
   isWaitingOnBreak: false,
   frames: undefined,
   selectedFrameId: undefined,
   selectedComponentIndex: undefined,
   frameScopes: {
@@ -87,172 +93,175 @@ function update(state = createPauseState
           loadedObjects,
           why
         } = action; // turn this into an object keyed by object id
 
         const objectMap = {};
         loadedObjects.forEach(obj => {
           objectMap[obj.value.objectId] = obj;
         });
-        return _objectSpread({}, state, {
+        return { ...state,
           isWaitingOnBreak: false,
           selectedFrameId,
           frames,
-          frameScopes: _objectSpread({}, emptyPauseState.frameScopes),
+          frameScopes: { ...emptyPauseState.frameScopes
+          },
           loadedObjects: objectMap,
           why
-        });
+        };
       }
 
     case "MAP_FRAMES":
       {
-        return _objectSpread({}, state, {
+        return { ...state,
           frames: action.frames
-        });
+        };
       }
 
     case "ADD_EXTRA":
       {
-        return _objectSpread({}, state, {
+        return { ...state,
           extra: action.extra
-        });
+        };
       }
 
     case "ADD_SCOPES":
       {
         const {
           frame,
           status,
           value
         } = action;
         const selectedFrameId = frame.id;
-
-        const generated = _objectSpread({}, state.frameScopes.generated, {
+        const generated = { ...state.frameScopes.generated,
           [selectedFrameId]: {
             pending: status !== "done",
             scope: value
           }
-        });
-
-        return _objectSpread({}, state, {
-          frameScopes: _objectSpread({}, state.frameScopes, {
+        };
+        return { ...state,
+          frameScopes: { ...state.frameScopes,
             generated
-          })
-        });
+          }
+        };
       }
 
     case "TRAVEL_TO":
-      return _objectSpread({}, state, action.data.paused);
+      return { ...state,
+        ...action.data.paused
+      };
 
     case "MAP_SCOPES":
       {
         const {
           frame,
           status,
           value
         } = action;
         const selectedFrameId = frame.id;
-
-        const original = _objectSpread({}, state.frameScopes.original, {
+        const original = { ...state.frameScopes.original,
           [selectedFrameId]: {
             pending: status !== "done",
             scope: value && value.scope
           }
-        });
-
-        const mappings = _objectSpread({}, state.frameScopes.mappings, {
+        };
+        const mappings = { ...state.frameScopes.mappings,
           [selectedFrameId]: value && value.mappings
-        });
-
-        return _objectSpread({}, state, {
-          frameScopes: _objectSpread({}, state.frameScopes, {
+        };
+        return { ...state,
+          frameScopes: { ...state.frameScopes,
             original,
             mappings
-          })
-        });
+          }
+        };
       }
 
     case "BREAK_ON_NEXT":
-      return _objectSpread({}, state, {
+      return { ...state,
         isWaitingOnBreak: true
-      });
+      };
 
     case "SELECT_FRAME":
-      return _objectSpread({}, state, {
+      return { ...state,
         selectedFrameId: action.frame.id
-      });
+      };
 
     case "SELECT_COMPONENT":
-      return _objectSpread({}, state, {
+      return { ...state,
         selectedComponentIndex: action.componentIndex
-      });
+      };
 
     case "SET_POPUP_OBJECT_PROPERTIES":
       if (!action.properties) {
-        return _objectSpread({}, state);
+        return { ...state
+        };
       }
 
-      return _objectSpread({}, state, {
-        loadedObjects: _objectSpread({}, state.loadedObjects, {
+      return { ...state,
+        loadedObjects: { ...state.loadedObjects,
           [action.objectId]: action.properties
-        })
-      });
+        }
+      };
 
     case "CONNECT":
-      return _objectSpread({}, createPauseState(), {
+      return { ...createPauseState(),
         debuggeeUrl: action.url,
         canRewind: action.canRewind
-      });
+      };
 
     case "PAUSE_ON_EXCEPTIONS":
       const {
         shouldPauseOnExceptions,
         shouldPauseOnCaughtExceptions
       } = action;
       _prefs.prefs.pauseOnExceptions = shouldPauseOnExceptions;
       _prefs.prefs.pauseOnCaughtExceptions = shouldPauseOnCaughtExceptions; // Preserving for the old debugger
 
       _prefs.prefs.ignoreCaughtExceptions = !shouldPauseOnCaughtExceptions;
-      return _objectSpread({}, state, {
+      return { ...state,
         shouldPauseOnExceptions,
         shouldPauseOnCaughtExceptions
-      });
+      };
 
     case "COMMAND":
       {
-        return action.status === "start" ? _objectSpread({}, state, emptyPauseState, {
+        return action.status === "start" ? { ...state,
+          ...emptyPauseState,
           command: action.command,
           previousLocation: getPauseLocation(state, action)
-        }) : _objectSpread({}, state, {
+        } : { ...state,
           command: null
-        });
+        };
       }
 
     case "RESUME":
-      return _objectSpread({}, state, emptyPauseState);
+      return { ...state,
+        ...emptyPauseState
+      };
 
     case "EVALUATE_EXPRESSION":
-      return _objectSpread({}, state, {
+      return { ...state,
         command: action.status === "start" ? "expression" : null
-      });
+      };
 
     case "NAVIGATE":
-      return _objectSpread({}, state, emptyPauseState, {
+      return { ...state,
+        ...emptyPauseState,
         debuggeeUrl: action.url
-      });
+      };
 
     case "TOGGLE_SKIP_PAUSING":
       {
         const {
           skipPausing
         } = action;
         _prefs.prefs.skipPausing = skipPausing;
-        return _objectSpread({}, state, {
+        return { ...state,
           skipPausing
-        });
+        };
       }
   }
 
   return state;
 }
 
 function getPauseLocation(state, action) {
   const {
--- a/devtools/client/debugger/new/src/reducers/replay.js
+++ b/devtools/client/debugger/new/src/reducers/replay.js
@@ -5,20 +5,19 @@ Object.defineProperty(exports, "__esModu
 });
 exports.initialState = initialState;
 exports.getHistory = getHistory;
 exports.getHistoryFrame = getHistoryFrame;
 exports.getHistoryPosition = getHistoryPosition;
 
 var _prefs = require("../utils/prefs");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function initialState() {
   return {
     history: [],
     position: -1
   };
 }
 
 const defaultFrameScopes = {
@@ -29,19 +28,19 @@ const defaultFrameScopes = {
 function update(state = initialState(), action) {
   if (!_prefs.features.replay) {
     return state;
   }
 
   switch (action.type) {
     case "TRAVEL_TO":
       {
-        return _objectSpread({}, state, {
+        return { ...state,
           position: action.position
-        });
+        };
       }
 
     case "ADD_SCOPES":
       {
         return addScopes(state, action);
       }
 
     case "MAP_SCOPES":
@@ -86,71 +85,65 @@ function addScopes(state, action) {
   const pausedInst = instance.paused;
   const scopeValue = status === "done" ? {
     pending: false,
     scope: action.value
   } : {
     pending: true,
     scope: null
   };
-
-  const generated = _objectSpread({}, pausedInst.frameScopes.generated, {
+  const generated = { ...pausedInst.frameScopes.generated,
     [selectedFrameId]: scopeValue
-  });
-
-  const newPaused = _objectSpread({}, pausedInst, {
-    frameScopes: _objectSpread({}, pausedInst.frameScopes, {
+  };
+  const newPaused = { ...pausedInst,
+    frameScopes: { ...pausedInst.frameScopes,
       generated
-    })
-  });
-
+    }
+  };
   const history = [...state.history];
-  history[state.position] = _objectSpread({}, instance, {
+  history[state.position] = { ...instance,
     paused: newPaused
-  });
-  return _objectSpread({}, state, {
+  };
+  return { ...state,
     history
-  });
+  };
 }
 
 function mapScopes(state, action) {
   const {
     frame,
     status,
     value
   } = action;
   const selectedFrameId = frame.id;
   const instance = state.history[state.position];
 
   if (!instance) {
     return state;
   }
 
   const pausedInst = instance.paused;
-
-  const original = _objectSpread({}, pausedInst.frameScopes.original, {
+  const original = { ...pausedInst.frameScopes.original,
     [selectedFrameId]: {
       pending: status !== "done",
       scope: value
     }
-  });
-
-  const newPaused = _objectSpread({}, pausedInst, {
-    frameScopes: _objectSpread({}, pausedInst.frameScopes, {
+  };
+  const newPaused = { ...pausedInst,
+    frameScopes: { ...pausedInst.frameScopes,
       original
-    })
-  });
-
+    }
+  };
   const history = [...state.history];
-  history[state.position] = _objectSpread({}, instance, {
+  history[state.position] = { ...instance,
     paused: newPaused
-  });
-  return _objectSpread({}, state, {
+  };
+  return { ...state,
     history
-  });
+  };
 }
 
 function evaluateExpression(state, action) {
   const {
     input,
     value
   } = action;
   const instance = state.history[state.position];
@@ -161,22 +154,22 @@ function evaluateExpression(state, actio
 
   const prevExpressions = instance.expressions || [];
   const expression = {
     input,
     value
   };
   const expressions = [...prevExpressions, expression];
   const history = [...state.history];
-  history[state.position] = _objectSpread({}, instance, {
+  history[state.position] = { ...instance,
     expressions
-  });
-  return _objectSpread({}, state, {
+  };
+  return { ...state,
     history
-  });
+  };
 }
 
 function paused(state, action) {
   const {
     selectedFrameId,
     frames,
     loadedObjects,
     why
@@ -193,20 +186,20 @@ function paused(state, action) {
     frameScopes: defaultFrameScopes,
     loadedObjects: objectMap,
     why
   };
   const history = [...state.history, {
     paused: pausedInfo
   }];
   const position = state.position + 1;
-  return _objectSpread({}, state, {
+  return { ...state,
     history,
     position
-  });
+  };
 }
 
 function getHistory(state) {
   return state.replay.history;
 }
 
 function getHistoryFrame(state, position) {
   return state.replay.history[position];
--- a/devtools/client/debugger/new/src/reducers/sources.js
+++ b/devtools/client/debugger/new/src/reducers/sources.js
@@ -25,48 +25,51 @@ exports.getSourceCount = getSourceCount;
 var _reselect = require("devtools/client/debugger/new/dist/vendors").vendored["reselect"];
 
 var _lodashMove = require("devtools/client/debugger/new/dist/vendors").vendored["lodash-move"];
 
 var _source = require("../utils/source");
 
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
-var _devtoolsEnvironment = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-environment"];
-
 var _lodash = require("devtools/client/shared/vendor/lodash");
 
 var _prefs = require("../utils/prefs");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Sources reducer
+ * @module reducers/sources
+ */
 function initialSourcesState() {
   return {
     sources: {},
     selectedLocation: undefined,
     pendingSelectedLocation: _prefs.prefs.pendingSelectedLocation,
     tabs: restoreTabs()
   };
 }
 
 function createSource(source) {
-  return _objectSpread({
+  return {
     id: undefined,
     url: undefined,
     sourceMapURL: undefined,
     isBlackBoxed: false,
     isPrettyPrinted: false,
     isWasm: false,
     text: undefined,
     contentType: "",
     error: undefined,
-    loadedState: "unloaded"
-  }, source);
+    loadedState: "unloaded",
+    ...source
+  };
 }
 
 function update(state = initialSourcesState(), action) {
   let location = null;
 
   switch (action.type) {
     case "UPDATE_SOURCE":
       {
@@ -81,68 +84,69 @@ function update(state = initialSourcesSt
       }
 
     case "ADD_SOURCES":
       {
         return action.sources.reduce((newState, source) => updateSource(newState, source), state);
       }
 
     case "SET_SELECTED_LOCATION":
-      location = _objectSpread({}, action.location, {
+      location = { ...action.location,
         url: action.source.url
-      });
+      };
       _prefs.prefs.pendingSelectedLocation = location;
-      return _objectSpread({}, state, {
-        selectedLocation: _objectSpread({
-          sourceId: action.source.id
-        }, action.location),
+      return { ...state,
+        selectedLocation: {
+          sourceId: action.source.id,
+          ...action.location
+        },
         pendingSelectedLocation: location
-      });
+      };
 
     case "CLEAR_SELECTED_LOCATION":
       location = {
         url: ""
       };
       _prefs.prefs.pendingSelectedLocation = location;
-      return _objectSpread({}, state, {
+      return { ...state,
         selectedLocation: null,
         pendingSelectedLocation: location
-      });
+      };
 
     case "SET_PENDING_SELECTED_LOCATION":
       location = {
         url: action.url,
         line: action.line
       };
       _prefs.prefs.pendingSelectedLocation = location;
-      return _objectSpread({}, state, {
+      return { ...state,
         pendingSelectedLocation: location
-      });
+      };
 
     case "ADD_TAB":
-      return _objectSpread({}, state, {
+      return { ...state,
         tabs: updateTabList(state.tabs, action.url)
-      });
+      };
 
     case "MOVE_TAB":
-      return _objectSpread({}, state, {
+      return { ...state,
         tabs: updateTabList(state.tabs, action.url, action.tabIndex)
-      });
+      };
 
     case "CLOSE_TAB":
       _prefs.prefs.tabs = action.tabs;
-      return _objectSpread({}, state, {
+      return { ...state,
         tabs: action.tabs
-      });
+      };
 
     case "CLOSE_TABS":
       _prefs.prefs.tabs = action.tabs;
-      return _objectSpread({}, state, {
+      return { ...state,
         tabs: action.tabs
-      });
+      };
 
     case "LOAD_SOURCE_TEXT":
       return setSourceTextProps(state, action);
 
     case "BLACKBOX":
       if (action.status === "done") {
         const {
           id,
@@ -163,19 +167,19 @@ function update(state = initialSourcesSt
     case "NAVIGATE":
       const source = state.selectedLocation && state.sources[state.selectedLocation.sourceId];
       const url = source && source.url;
 
       if (!url) {
         return initialSourcesState();
       }
 
-      return _objectSpread({}, initialSourcesState(), {
+      return { ...initialSourcesState(),
         url
-      });
+      };
   }
 
   return state;
 }
 
 function getTextPropsFromAction(action) {
   const {
     sourceId
@@ -212,22 +216,24 @@ function setSourceTextProps(state, actio
 }
 
 function updateSource(state, source) {
   if (!source.id) {
     return state;
   }
 
   const existingSource = state.sources[source.id];
-  const updatedSource = existingSource ? _objectSpread({}, existingSource, source) : createSource(source);
-  return _objectSpread({}, state, {
-    sources: _objectSpread({}, state.sources, {
+  const updatedSource = existingSource ? { ...existingSource,
+    ...source
+  } : createSource(source);
+  return { ...state,
+    sources: { ...state.sources,
       [source.id]: updatedSource
-    })
-  });
+    }
+  };
 }
 
 function removeSourceFromTabList(tabs, url) {
   return tabs.filter(tab => tab !== url);
 }
 
 function removeSourcesFromTabList(tabs, urls) {
   return urls.reduce((t, url) => removeSourceFromTabList(t, url), tabs);
--- a/devtools/client/debugger/new/src/selectors/getCallStackFrames.js
+++ b/devtools/client/debugger/new/src/selectors/getCallStackFrames.js
@@ -13,35 +13,34 @@ var _pause = require("../reducers/pause"
 var _frames = require("../utils/pause/frames/index");
 
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
 var _lodash = require("devtools/client/shared/vendor/lodash");
 
 var _reselect = require("devtools/client/debugger/new/dist/vendors").vendored["reselect"];
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getLocation(frame, isGeneratedSource) {
   return isGeneratedSource ? frame.generatedLocation || frame.location : frame.location;
 }
 
 function getSourceForFrame(sources, frame, isGeneratedSource) {
   const sourceId = getLocation(frame, isGeneratedSource).sourceId;
   return (0, _sources.getSourceInSources)(sources, sourceId);
 }
 
 function appendSource(sources, frame, selectedSource) {
   const isGeneratedSource = selectedSource && !(0, _devtoolsSourceMap.isOriginalId)(selectedSource.id);
-  return _objectSpread({}, frame, {
+  return { ...frame,
     location: getLocation(frame, isGeneratedSource),
     source: getSourceForFrame(sources, frame, isGeneratedSource)
-  });
+  };
 }
 
 function formatCallStackFrames(frames, sources, selectedSource) {
   if (!frames) {
     return null;
   }
 
   const formattedFrames = frames.filter(frame => getSourceForFrame(sources, frame)).map(frame => appendSource(sources, frame, selectedSource)).filter(frame => !(0, _lodash.get)(frame, "source.isBlackBoxed"));
--- a/devtools/client/debugger/new/src/selectors/getRelativeSources.js
+++ b/devtools/client/debugger/new/src/selectors/getRelativeSources.js
@@ -8,33 +8,32 @@ exports.getRelativeSources = undefined;
 var _selectors = require("../selectors/index");
 
 var _lodash = require("devtools/client/shared/vendor/lodash");
 
 var _source = require("../utils/source");
 
 var _reselect = require("devtools/client/debugger/new/dist/vendors").vendored["reselect"];
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getRelativeUrl(url, root) {
   if (!root) {
     return (0, _source.getSourcePath)(url);
   } // + 1 removes the leading "/"
 
 
   return url.slice(url.indexOf(root) + root.length + 1);
 }
 
 function formatSource(source, root) {
-  return _objectSpread({}, source, {
+  return { ...source,
     relativeUrl: getRelativeUrl(source.url, root)
-  });
+  };
 }
 
 function underRoot(source, root) {
   return source.url && source.url.includes(root);
 }
 /*
  * Gets the sources that are below a project root
  */
--- a/devtools/client/debugger/new/src/utils/bootstrap.js
+++ b/devtools/client/debugger/new/src/utils/bootstrap.js
@@ -51,20 +51,19 @@ var _App = require("../components/App");
 var _App2 = _interopRequireDefault(_App);
 
 var _prefs = require("./prefs");
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 const {
   Provider
 } = require("devtools/client/shared/vendor/react-redux");
 
 function renderPanel(component, store) {
   const root = document.createElement("div");
   root.className = "launchpad-root theme-body";
   root.style.setProperty("flex", "1");
@@ -84,19 +83,21 @@ function renderPanel(component, store) {
 function bootstrapStore(client, {
   services,
   toolboxActions
 }) {
   const createStore = (0, _createStore2.default)({
     log: (0, _devtoolsEnvironment.isTesting)(),
     timing: (0, _devtoolsEnvironment.isDevelopment)(),
     makeThunkArgs: (args, state) => {
-      return _objectSpread({}, args, {
-        client
-      }, services, toolboxActions);
+      return { ...args,
+        client,
+        ...services,
+        ...toolboxActions
+      };
     }
   });
   const store = createStore((0, _redux.combineReducers)(_reducers2.default));
   store.subscribe(() => updatePrefs(store.getState()));
   const actions = (0, _redux.bindActionCreators)(require("../actions/index").default, store.dispatch);
   return {
     store,
     actions,
--- a/devtools/client/debugger/new/src/utils/dbg.js
+++ b/devtools/client/debugger/new/src/utils/dbg.js
@@ -12,39 +12,39 @@ var timings = _interopRequireWildcard(_t
 var _prefs = require("./prefs");
 
 var _devtoolsEnvironment = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-environment"];
 
 var _pausePoints = require("./pause/pausePoints");
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function findSource(dbg, url) {
   const sources = dbg.selectors.getSources();
   const source = sources.find(s => (s.url || "").includes(url));
 
   if (!source) {
     return;
   }
 
   return source;
 }
 
 function sendPacket(dbg, packet, callback) {
   dbg.client.sendPacket(packet, callback || console.log);
 }
 
 function sendPacketToThread(dbg, packet, callback) {
-  sendPacket(dbg, _objectSpread({
-    to: dbg.connection.tabConnection.threadClient.actor
-  }, packet), callback);
+  sendPacket(dbg, {
+    to: dbg.connection.tabConnection.threadClient.actor,
+    ...packet
+  }, callback);
 }
 
 function evaluate(dbg, expression, callback) {
   dbg.client.evaluate(expression).then(callback || console.log);
 }
 
 function bindSelectors(obj) {
   return Object.keys(obj.selectors).reduce((bound, selector) => {
@@ -62,34 +62,32 @@ function getCM() {
 function _formatPausePoints(dbg, url) {
   const source = dbg.helpers.findSource(url);
   const pausePoints = dbg.selectors.getPausePoints(source);
   console.log((0, _pausePoints.formatPausePoints)(source.text, pausePoints));
 }
 
 function setupHelper(obj) {
   const selectors = bindSelectors(obj);
-
-  const dbg = _objectSpread({}, obj, {
+  const dbg = { ...obj,
     selectors,
     prefs: _prefs.prefs,
     features: _prefs.features,
     timings,
     getCM,
     helpers: {
       findSource: url => findSource(dbg, url),
       evaluate: (expression, cbk) => evaluate(dbg, expression, cbk),
       sendPacketToThread: (packet, cbk) => sendPacketToThread(dbg, packet, cbk),
       sendPacket: (packet, cbk) => sendPacket(dbg, packet, cbk)
     },
     formatters: {
       pausePoints: url => _formatPausePoints(dbg, url)
     }
-  });
-
+  };
   window.dbg = dbg;
 
   if ((0, _devtoolsEnvironment.isDevelopment)()) {
     console.group("Development Notes");
     const baseUrl = "https://devtools-html.github.io/debugger.html";
     const localDevelopmentUrl = `${baseUrl}/docs/dbg.html`;
     console.log("Debugging Tips", localDevelopmentUrl);
     console.log("dbg", window.dbg);
--- a/devtools/client/debugger/new/src/utils/editor/index.js
+++ b/devtools/client/debugger/new/src/utils/editor/index.js
@@ -83,20 +83,16 @@ exports.getCursorLine = getCursorLine;
 var _createEditor = require("./create-editor");
 
 var _source = require("../source");
 
 var _wasm = require("../wasm");
 
 var _devtoolsSourceMap = require("devtools/client/shared/source-map/index.js");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
 let editor;
 
 function getEditor() {
   if (editor) {
     return editor;
   }
 
   editor = (0, _createEditor.createEditor)();
@@ -155,22 +151,22 @@ function toEditorPosition(location) {
 }
 
 function toEditorRange(sourceId, location) {
   const {
     start,
     end
   } = location;
   return {
-    start: toEditorPosition(_objectSpread({}, start, {
+    start: toEditorPosition({ ...start,
       sourceId
-    })),
-    end: toEditorPosition(_objectSpread({}, end, {
+    }),
+    end: toEditorPosition({ ...end,
       sourceId
-    }))
+    })
   };
 }
 
 function toSourceLine(sourceId, line) {
   return (0, _wasm.isWasm)(sourceId) ? (0, _wasm.lineToWasmOffset)(sourceId, line) : line + 1;
 }
 
 function scrollToColumn(codeMirror, line, column) {
--- a/devtools/client/debugger/new/src/utils/pause/frames/annotateFrames.js
+++ b/devtools/client/debugger/new/src/utils/pause/frames/annotateFrames.js
@@ -6,45 +6,44 @@ Object.defineProperty(exports, "__esModu
 exports.annotateFrames = annotateFrames;
 
 var _lodash = require("devtools/client/shared/vendor/lodash");
 
 var _getFrameUrl = require("./getFrameUrl");
 
 var _getLibraryFromUrl = require("./getLibraryFromUrl");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function annotateFrames(frames) {
   const annotatedFrames = frames.map(annotateFrame);
   return annotateBabelAsyncFrames(annotatedFrames);
 }
 
 function annotateFrame(frame) {
   const library = (0, _getLibraryFromUrl.getLibraryFromUrl)(frame);
 
   if (library) {
-    return _objectSpread({}, frame, {
+    return { ...frame,
       library
-    });
+    };
   }
 
   return frame;
 }
 
 function annotateBabelAsyncFrames(frames) {
   const babelFrameIndexes = getBabelFrameIndexes(frames);
 
   const isBabelFrame = frameIndex => babelFrameIndexes.includes(frameIndex);
 
-  return frames.map((frame, frameIndex) => isBabelFrame(frameIndex) ? _objectSpread({}, frame, {
+  return frames.map((frame, frameIndex) => isBabelFrame(frameIndex) ? { ...frame,
     library: "Babel"
-  }) : frame);
+  } : frame);
 } // Receives an array of frames and looks for babel async
 // call stack groups.
 
 
 function getBabelFrameIndexes(frames) {
   const startIndexes = frames.reduce((accumulator, frame, index) => {
     if ((0, _getFrameUrl.getFrameUrl)(frame).match(/regenerator-runtime/i) && frame.displayName === "tryCatch") {
       return [...accumulator, index];
--- a/devtools/client/debugger/new/src/utils/pause/mapScopes/findGeneratedBindingFromPosition.js
+++ b/devtools/client/debugger/new/src/utils/pause/mapScopes/findGeneratedBindingFromPosition.js
@@ -134,21 +134,19 @@ async function findGeneratedImportDeclar
     // Import declarations tend to have a large number of bindings for
     // for things like 'require' and 'interop', so this number is larger
     // than other binding count checks.
     applicableBindings = [];
   }
 
   let result = null;
 
-  for (const _ref of applicableBindings) {
-    const {
-      binding
-    } = _ref;
-
+  for (const {
+    binding
+  } of applicableBindings) {
     if (binding.loc.type === "ref") {
       continue;
     }
 
     const namespaceDesc = await binding.desc();
 
     if (isPrimitiveValue(namespaceDesc)) {
       continue;
--- a/devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
+++ b/devtools/client/debugger/new/src/utils/pause/mapScopes/index.js
@@ -12,22 +12,20 @@ var _locColumn = require("./locColumn");
 var _rangeMetadata = require("./rangeMetadata");
 
 var _findGeneratedBindingFromPosition = require("./findGeneratedBindingFromPosition");
 
 var _buildGeneratedBindingList = require("./buildGeneratedBindingList");
 
 var _log = require("../../log");
 
-function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
+// eslint-disable-next-line max-len
 async function buildMappedScopes(source, frame, scopes, sourceMaps, client) {
   const originalAstScopes = await (0, _parser.getScopes)(frame.location);
   const generatedAstScopes = await (0, _parser.getScopes)(frame.generatedLocation);
 
   if (!originalAstScopes || !generatedAstScopes) {
     return null;
   }
 
@@ -62,19 +60,19 @@ async function mapOriginalBindingsToGene
         if (binding.refs.length !== 0 && // These are assigned depth-first, so we don't want shadowed
         // bindings in parent scopes overwriting the expression.
         !Object.prototype.hasOwnProperty.call(expressionLookup, name)) {
           expressionLookup[name] = result.expression;
         }
       }
     }
 
-    mappedOriginalScopes.push(_objectSpread({}, item, {
+    mappedOriginalScopes.push({ ...item,
       generatedBindings
-    }));
+    });
   }
 
   return {
     mappedOriginalScopes,
     expressionLookup
   };
 }
 /**
@@ -171,42 +169,42 @@ function generateClientScope(scopes, ori
   if (!globalLexicalScope) {
     throw new Error("Assertion failure - there should always be a scope");
   } // Build a structure similar to the client's linked scope object using
   // the original AST scopes, but pulling in the generated bindings
   // linked to each scope.
 
 
   const result = originalScopes.slice(0, -2).reverse().reduce((acc, orig, i) => {
-    const _orig$generatedBindin = orig.generatedBindings,
-          {
+    const {
       // The 'this' binding data we have is handled independently, so
       // the binding data is not included here.
       // eslint-disable-next-line no-unused-vars
-      this: _this
-    } = _orig$generatedBindin,
-          variables = _objectWithoutProperties(_orig$generatedBindin, ["this"]);
-
-    return _objectSpread({
+      this: _this,
+      ...variables
+    } = orig.generatedBindings;
+    return {
       parent: acc,
       actor: `originalActor${i}`,
       type: orig.type,
       bindings: {
         arguments: [],
         variables
-      }
-    }, orig.type === "function" ? {
-      function: {
-        displayName: orig.displayName
-      }
-    } : null, orig.type === "block" ? {
-      block: {
-        displayName: orig.displayName
-      }
-    } : null);
+      },
+      ...(orig.type === "function" ? {
+        function: {
+          displayName: orig.displayName
+        }
+      } : null),
+      ...(orig.type === "block" ? {
+        block: {
+          displayName: orig.displayName
+        }
+      } : null)
+    };
   }, globalLexicalScope); // The rendering logic in getScope 'this' bindings only runs on the current
   // selected frame scope, so we pluck out the 'this' binding that was mapped,
   // and put it in a special location
 
   const thisScope = originalScopes.find(scope => scope.bindings.this);
 
   if (thisScope) {
     result.bindings.this = thisScope.generatedBindings.this || null;
--- a/devtools/client/debugger/new/src/utils/pause/mapScopes/rangeMetadata.js
+++ b/devtools/client/debugger/new/src/utils/pause/mapScopes/rangeMetadata.js
@@ -7,20 +7,19 @@ exports.loadRangeMetadata = loadRangeMet
 exports.findMatchingRange = findMatchingRange;
 
 var _locColumn = require("./locColumn");
 
 var _positionCmp = require("./positionCmp");
 
 var _filtering = require("./filtering");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 async function loadRangeMetadata(source, frame, originalAstScopes, sourceMaps) {
   const originalRanges = await sourceMaps.getOriginalRanges(frame.location.sourceId, source.url);
   const sortedOriginalAstBindings = [];
 
   for (const item of originalAstScopes) {
     for (const name of Object.keys(item.bindings)) {
       for (const ref of item.bindings[name].refs) {
         sortedOriginalAstBindings.push(ref);
@@ -62,20 +61,21 @@ async function loadRangeMetadata(source,
       type = "multiple";
       const binding = bindings[0];
       const declStart = binding.type !== "ref" ? binding.declaration.start : null;
       singleDeclaration = bindings.every(b => {
         return declStart && b.type !== "ref" && (0, _positionCmp.positionCmp)(declStart, b.declaration.start) === 0;
       });
     }
 
-    return _objectSpread({
+    return {
       type,
-      singleDeclaration
-    }, range);
+      singleDeclaration,
+      ...range
+    };
   });
 }
 
 function findMatchingRange(sortedOriginalRanges, bindingRange) {
   return (0, _filtering.filterSortedArray)(sortedOriginalRanges, range => {
     if (range.line < bindingRange.start.line) {
       return -1;
     }
--- a/devtools/client/debugger/new/src/utils/pause/scopes/getScope.js
+++ b/devtools/client/debugger/new/src/utils/pause/scopes/getScope.js
@@ -8,20 +8,19 @@ exports.getScope = getScope;
 var _devtoolsReps = require("devtools/client/shared/components/reps/reps.js");
 
 var _getVariables = require("./getVariables");
 
 var _utils = require("./utils");
 
 var _frames = require("../../pause/frames/index");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getScopeTitle(type, scope) {
   if (type === "block" && scope.block && scope.block.displayName) {
     return scope.block.displayName;
   }
 
   if (type === "function" && scope.function) {
     return scope.function.displayName ? (0, _frames.simplifyDisplayName)(scope.function.displayName) : L10N.getStr("anonymous");
   }
@@ -69,19 +68,19 @@ function getScope(scope, selectedFrame, 
         type: _devtoolsReps.ObjectInspectorUtils.node.NODE_TYPES.BLOCK
       };
     }
   } else if (type === "object" && scope.object) {
     let value = scope.object; // If this is the global window scope, mark it as such so that it will
     // preview Window: Global instead of Window: Window
 
     if (value.class === "Window") {
-      value = _objectSpread({}, scope.object, {
+      value = { ...scope.object,
         displayClass: "Global"
-      });
+      };
     }
 
     return {
       name: scope.object.class,
       path: key,
       contents: {
         value
       }
--- a/devtools/client/debugger/new/src/utils/quick-open.js
+++ b/devtools/client/debugger/new/src/utils/quick-open.js
@@ -17,20 +17,19 @@ var _classnames = require("devtools/clie
 var _classnames2 = _interopRequireDefault(_classnames);
 
 var _utils = require("./utils");
 
 var _source = require("./source");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 const MODIFIERS = exports.MODIFIERS = {
   "@": "functions",
   "#": "variables",
   ":": "goto",
   "?": "shortcuts"
 };
 
 function parseQuickOpenQuery(query) {
@@ -52,21 +51,22 @@ function parseQuickOpenQuery(query) {
 }
 
 function parseLineColumn(query) {
   const [, line, column] = query.split(":");
   const lineNumber = parseInt(line, 10);
   const columnNumber = parseInt(column, 10);
 
   if (!isNaN(lineNumber)) {
-    return _objectSpread({
-      line: lineNumber
-    }, !isNaN(columnNumber) ? {
-      column: columnNumber
-    } : null);
+    return {
+      line: lineNumber,
+      ...(!isNaN(columnNumber) ? {
+        column: columnNumber
+      } : null)
+    };
   }
 }
 
 function formatSourcesForList(source, tabs) {
   const title = (0, _source.getFilename)(source);
   const subtitle = (0, _utils.endTruncateStr)(source.relativeUrl, 100);
   return {
     value: source.relativeUrl,
--- a/devtools/client/debugger/new/src/utils/sources-tree/getURL.js
+++ b/devtools/client/debugger/new/src/utils/sources-tree/getURL.js
@@ -5,20 +5,19 @@ Object.defineProperty(exports, "__esModu
 });
 exports.getFilenameFromPath = getFilenameFromPath;
 exports.getURL = getURL;
 
 var _url = require("devtools/client/debugger/new/dist/vendors").vendored["url"];
 
 var _devtoolsModules = require("devtools/client/debugger/new/dist/vendors").vendored["devtools-modules"];
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 const urlMap = new WeakMap();
 
 function getFilenameFromPath(pathname) {
   let filename = "";
 
   if (pathname) {
     filename = pathname.substring(pathname.lastIndexOf("/") + 1); // This file does not have a name. Default should be (index).
 
@@ -56,79 +55,79 @@ function _getURL(source, debuggeeUrl) {
 
   switch (protocol) {
     case "javascript:":
       // Ignore `javascript:` URLs for now
       return def;
 
     case "moz-extension:":
     case "resource:":
-      return _objectSpread({}, def, {
+      return { ...def,
         path,
         filename,
         group: `${protocol}//${host || ""}`
-      });
+      };
 
     case "webpack:":
     case "ng:":
-      return _objectSpread({}, def, {
+      return { ...def,
         path: path,
         filename,
         group: `${protocol}//`
-      });
+      };
 
     case "about:":
       // An about page is a special case
-      return _objectSpread({}, def, {
+      return { ...def,
         path: "/",
         filename,
         group: url
-      });
+      };
 
     case "data:":
-      return _objectSpread({}, def, {
+      return { ...def,
         path: "/",
         group: NoDomain,
         filename: url
-      });
+      };
 
     case null:
       if (pathname && pathname.startsWith("/")) {
         // use file protocol for a URL like "/foo/bar.js"
-        return _objectSpread({}, def, {
+        return { ...def,
           path: path,
           filename,
           group: "file://"
-        });
+        };
       } else if (host === null) {
         // use anonymous group for weird URLs
         const defaultDomain = (0, _url.parse)(debuggeeUrl).host;
-        return _objectSpread({}, def, {
+        return { ...def,
           path: url,
           group: defaultDomain,
           filename
-        });
+        };
       }
 
       break;
 
     case "http:":
     case "https:":
-      return _objectSpread({}, def, {
+      return { ...def,
         path: pathname,
         filename,
         group: (0, _devtoolsModules.getUnicodeHostname)(host)
-      });
+      };
   }
 
-  return _objectSpread({}, def, {
+  return { ...def,
     path: path,
     group: protocol ? `${protocol}//` : "",
     filename
-  });
+  };
 }
 
 function getURL(source, debuggeeUrl = "") {
   if (urlMap.has(source)) {
     return urlMap.get(source) || def;
   }
 
   const url = _getURL(source, debuggeeUrl);
--- a/devtools/client/debugger/new/src/utils/sources-tree/sortTree.js
+++ b/devtools/client/debugger/new/src/utils/sources-tree/sortTree.js
@@ -3,32 +3,32 @@
 Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.sortEntireTree = sortEntireTree;
 exports.sortTree = sortTree;
 
 var _utils = require("./utils");
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 /**
  * Look at the nodes in the source tree, and determine the index of where to
  * insert a new node. The ordering is index -> folder -> file.
  * @memberof utils/sources-tree
  * @static
  */
 function sortEntireTree(tree, debuggeeUrl = "") {
   if ((0, _utils.nodeHasChildren)(tree)) {
     const contents = sortTree(tree, debuggeeUrl).map(subtree => sortEntireTree(subtree));
-    return _objectSpread({}, tree, {
+    return { ...tree,
       contents
-    });
+    };
   }
 
   return tree;
 }
 /**
  * Look at the nodes in the source tree, and determine the index of where to
  * insert a new node. The ordering is index -> folder -> file.
  * @memberof utils/sources-tree
--- a/devtools/client/debugger/new/src/utils/telemetry.js
+++ b/devtools/client/debugger/new/src/utils/telemetry.js
@@ -6,32 +6,72 @@ Object.defineProperty(exports, "__esModu
 exports.recordEvent = recordEvent;
 
 var _telemetry = require("devtools/client/shared/telemetry");
 
 var _telemetry2 = _interopRequireDefault(_telemetry);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/**
+ * Usage:
+ *
+ * import { recordEvent } from "src/utils/telemetry";
+ *
+ * // Event without extra properties
+ * recordEvent("add_breakpoint");
+ *
+ * // Event with extra properties
+ * recordEvent("pause", {
+ *   "reason": "debugger-statement",
+ *   "collapsed_callstacks": 1
+ * });
+ *
+ * // If the properties are in multiple code paths and you can't send them all
+ * // in one go you will need to use the full telemetry API.
+ *
+ * import { Telemetry } from "devtools-modules";
+ *
+ * const telemetry = new Telemetry();
+ *
+ * // Prepare the event and define which properties to expect.
+ * //
+ * // NOTE: You CAN send properties before preparing the event.
+ * //
+ * telemetry.preparePendingEvent("devtools.main", "pause", "debugger", null, [
+ *   "reason", "collapsed_callstacks"
+ * ]);
+ *
+ * // Elsewhere in another codepath send the reason property
+ * telemetry.addEventProperty(
+ *   "devtools.main", "pause", "debugger", null, "reason", "debugger-statement"
+ * );
+ *
+ * // Elsewhere in another codepath send the collapsed_callstacks property
+ * telemetry.addEventProperty(
+ *   "devtools.main", "pause", "debugger", null, "collapsed_callstacks", 1
+ * );
+ */
 const telemetry = new _telemetry2.default();
 /**
  * @memberof utils/telemetry
  * @static
  */
 
 function recordEvent(eventName, fields = {}) {
   let sessionId = -1;
 
   if (typeof window === "object" && window.parent.frameElement) {
     sessionId = window.parent.frameElement.getAttribute("session_id");
   }
   /* eslint-disable camelcase */
 
 
-  telemetry.recordEvent("devtools.main", eventName, "debugger", null, _objectSpread({
-    session_id: sessionId
-  }, fields));
+  telemetry.recordEvent("devtools.main", eventName, "debugger", null, {
+    session_id: sessionId,
+    ...fields
+  });
   /* eslint-enable camelcase */
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/workers/parser/findOutOfScopeLocations.js
+++ b/devtools/client/debugger/new/src/workers/parser/findOutOfScopeLocations.js
@@ -17,20 +17,19 @@ var _findLastIndex = require("devtools/c
 var _findLastIndex2 = _interopRequireDefault(_findLastIndex);
 
 var _contains = require("./utils/contains");
 
 var _getSymbols = require("./getSymbols");
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function findSymbols(source) {
   const {
     functions,
     comments
   } = (0, _getSymbols.getSymbols)(source);
   return {
     functions,
     comments
@@ -39,20 +38,20 @@ function findSymbols(source) {
 /**
  * Returns the location for a given function path. If the path represents a
  * function declaration, the location will begin after the function identifier
  * but before the function parameters.
  */
 
 
 function getLocation(func) {
-  const location = _objectSpread({}, func.location); // if the function has an identifier, start the block after it so the
+  const location = { ...func.location
+  }; // if the function has an identifier, start the block after it so the
   // identifier is included in the "scope" of its parent
 
-
   const identifierEnd = (0, _get2.default)(func, "identifier.loc.end");
 
   if (identifierEnd) {
     location.start = identifierEnd;
   }
 
   return location;
 }
--- a/devtools/client/debugger/new/src/workers/parser/getSymbols.js
+++ b/devtools/client/debugger/new/src/workers/parser/getSymbols.js
@@ -23,20 +23,19 @@ var _inferClassName = require("./utils/i
 var _getFunctionName = require("./utils/getFunctionName");
 
 var _getFunctionName2 = _interopRequireDefault(_getFunctionName);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 let symbolDeclarations = new Map();
 
 function getFunctionParameterNames(path) {
   if (path.node.params != null) {
     return path.node.params.map(param => {
       if (param.type !== "AssignmentPattern") {
         return param.name;
       } // Parameter with default value
@@ -209,19 +208,19 @@ function extractSymbol(path, symbols) {
           start,
           end
         }
       });
     }
 
     if (path.node.typeAnnotation) {
       const column = path.node.typeAnnotation.loc.start.column;
-      end = _objectSpread({}, end, {
+      end = { ...end,
         column
-      });
+      };
     }
 
     symbols.identifiers.push({
       name: path.node.name,
       expression: path.node.name,
       location: {
         start,
         end
--- a/devtools/client/debugger/new/src/workers/parser/steps.js
+++ b/devtools/client/debugger/new/src/workers/parser/steps.js
@@ -10,20 +10,19 @@ var _types = require("@babel/types/index
 var t = _interopRequireWildcard(_types);
 
 var _closest = require("./utils/closest");
 
 var _helpers = require("./utils/helpers");
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 function getNextStep(sourceId, pausedPosition) {
   const currentExpression = getSteppableExpression(sourceId, pausedPosition);
 
   if (!currentExpression) {
     return null;
   }
 
   const currentStatement = currentExpression.find(p => {
@@ -50,15 +49,15 @@ function getSteppableExpression(sourceId
 
   return closestPath.find(p => t.isAwaitExpression(p.node) || t.isYieldExpression(p.node));
 }
 
 function _getNextStep(statement, sourceId, position) {
   const nextStatement = statement.getSibling(1);
 
   if (nextStatement) {
-    return _objectSpread({}, nextStatement.node.loc.start, {
+    return { ...nextStatement.node.loc.start,
       sourceId: sourceId
-    });
+    };
   }
 
   return null;
 }
\ No newline at end of file
--- a/devtools/client/debugger/new/src/workers/parser/utils/ast.js
+++ b/devtools/client/debugger/new/src/workers/parser/utils/ast.js
@@ -25,26 +25,25 @@ var _isEmpty = require("devtools/client/
 var _isEmpty2 = _interopRequireDefault(_isEmpty);
 
 var _sources = require("../sources");
 
 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 let ASTs = new Map();
 
 function _parse(code, opts) {
-  return babylon.parse(code, _objectSpread({}, opts, {
+  return babylon.parse(code, { ...opts,
     tokens: true
-  }));
+  });
 }
 
 const sourceOptions = {
   generated: {
     sourceType: "unambiguous",
     tokens: true,
     plugins: ["objectRestSpread"]
   },
@@ -84,19 +83,20 @@ function htmlParser({
 }
 
 const VUE_COMPONENT_START = /^\s*</;
 
 function vueParser({
   source,
   line
 }) {
-  return parse(source, _objectSpread({
-    startLine: line
-  }, sourceOptions.original));
+  return parse(source, {
+    startLine: line,
+    ...sourceOptions.original
+  });
 }
 
 function parseVueScript(code) {
   if (typeof code !== "string") {
     return;
   }
 
   let ast; // .vue files go through several passes, so while there is a
@@ -137,20 +137,19 @@ function getAst(sourceId) {
     ast = (0, _parseScriptTags2.default)(source.text, htmlParser) || {};
   } else if (contentType && contentType === "text/vue") {
     ast = parseVueScript(source.text) || {};
   } else if (contentType && contentType.match(/(javascript|jsx)/) && !contentType.match(/typescript-jsx/)) {
     const type = source.id.includes("original") ? "original" : "generated";
     const options = sourceOptions[type];
     ast = parse(source.text, options);
   } else if (contentType && contentType.match(/typescript/)) {
-    const options = _objectSpread({}, sourceOptions.original, {
+    const options = { ...sourceOptions.original,
       plugins: [...sourceOptions.original.plugins.filter(p => p !== "flow" && p !== "decorators" && p !== "decorators2" && (p !== "jsx" || contentType.match(/typescript-jsx/))), "decorators", "typescript"]
-    });
-
+    };
     ast = parse(source.text, options);
   }
 
   ASTs.set(source.id, ast);
   return ast;
 }
 
 function clearASTs() {