Bug 1536116 - Highlights might not be shown when on the debug line. r=davidwalsh
authorJason Laster <jlaster@mozilla.com>
Mon, 22 Apr 2019 15:52:13 +0000
changeset 470399 81592d22b501a9d74e4968f6373ca22750aa947f
parent 470398 88756a3099686f41f7601e3b7de48080a03e292a
child 470400 127af2f6e16df6f091fa45f636115ce7ada68b34
push id35905
push userdvarga@mozilla.com
push dateTue, 23 Apr 2019 09:53:27 +0000
treeherdermozilla-central@831918f009f6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdavidwalsh
bugs1536116
milestone68.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 1536116 - Highlights might not be shown when on the debug line. r=davidwalsh Differential Revision: https://phabricator.services.mozilla.com/D28086
devtools/client/debugger/.flowconfig
devtools/client/debugger/flow-typed/npm-custom/devtools-reps_vx.x.x.js
devtools/client/debugger/flow-typed/npm/devtools-reps_vx.x.x.js
devtools/client/debugger/packages/devtools-reps/src/index.js
devtools/client/debugger/packages/devtools-reps/src/object-inspector/reducer.js
devtools/client/debugger/packages/devtools-reps/src/object-inspector/types.js
devtools/client/debugger/packages/devtools-reps/src/object-inspector/utils/index.js
devtools/client/debugger/src/actions/pause/index.js
devtools/client/debugger/src/actions/pause/moz.build
devtools/client/debugger/src/actions/pause/paused.js
devtools/client/debugger/src/actions/pause/setPopupObjectProperties.js
devtools/client/debugger/src/actions/preview.js
devtools/client/debugger/src/actions/types/ASTAction.js
devtools/client/debugger/src/actions/types/PauseAction.js
devtools/client/debugger/src/actions/utils/middleware/log.js
devtools/client/debugger/src/client/firefox/commands.js
devtools/client/debugger/src/components/Editor/DebugLine.js
devtools/client/debugger/src/components/Editor/Preview/Popup.js
devtools/client/debugger/src/components/Editor/Preview/index.js
devtools/client/debugger/src/components/SecondaryPanes/Expressions.js
devtools/client/debugger/src/components/SecondaryPanes/Scopes.js
devtools/client/debugger/src/reducers/ast.js
devtools/client/debugger/src/reducers/index.js
devtools/client/debugger/src/reducers/pause.js
devtools/client/debugger/src/reducers/types.js
devtools/client/debugger/src/selectors/index.js
devtools/client/debugger/src/selectors/pause.js
devtools/client/debugger/src/utils/pause/scopes/getScope.js
--- a/devtools/client/debugger/.flowconfig
+++ b/devtools/client/debugger/.flowconfig
@@ -1,14 +1,18 @@
 [ignore]
 .*node_modules/.*
 <PROJECT_ROOT>/firefox/.*
 .*flow-coverage-report/.*
 .*custom_format_broken.json
-.*packages/devtools-reps/src/object-inspector/.*
+.*packages/devtools-reps/src/object-inspector/components
+.*packages/devtools-reps/src/object-inspector/utils
+.*packages/devtools-reps/src/object-inspector/tests
+.*packages/devtools-reps/src/object-inspector/reducer.js
+.*packages/devtools-reps/src/object-inspector/actions.js
 <PROJECT_ROOT>/webpack-stats/.*
 
 [include]
 ./node_modules/source-map/source-map.js
 
 [libs]
 ./src/global-types.js
 
new file mode 100644
--- /dev/null
+++ b/devtools/client/debugger/flow-typed/npm-custom/devtools-reps_vx.x.x.js
@@ -0,0 +1,7 @@
+/* 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/>. */
+
+declare module "devtools-reps" {
+  declare module.exports: any;
+}
deleted file mode 100644
--- a/devtools/client/debugger/flow-typed/npm/devtools-reps_vx.x.x.js
+++ /dev/null
@@ -1,1292 +0,0 @@
-// flow-typed signature: 2ffd8b2440a275368fc09536b174919b
-// flow-typed version: <<STUB>>/devtools-reps_v0.23.0/flow_v0.74.0
-
-/**
- * This is an autogenerated libdef stub for:
- *
- *   'devtools-reps'
- *
- * Fill this stub out by replacing all the `any` types.
- *
- * Once filled out, we encourage you to share your work with the
- * community by sending a pull request to:
- * https://github.com/flowtype/flow-typed
- */
-
-declare module 'devtools-reps' {
-  declare module.exports: any;
-}
-
-/**
- * We include stubs for each file inside this npm package in case you need to
- * require those files directly. Feel free to delete any files that aren't
- * needed.
- */
-declare module 'devtools-reps/bin/dev-server' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/config' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/jest.config' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/postcss.config' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/actions/expressions' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/actions/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/actions/input' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/components/Console' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/components/Header' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/components/QuickLinks' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/components/Result' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/components/ResultsList' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/constants' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/reducers/expressions' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/reducers/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/reducers/input' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/samples' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/selectors/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/store' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/utils/redux/middleware/promise' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/utils/redux/middleware/thunk' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/launchpad/utils/utils' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/actions' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/component' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/reducer' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/store' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/stubs/grip' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/stubs/map' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/stubs/performance' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/__mocks__/long-string-client' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/__mocks__/object-client' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/basic' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/classnames' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/create-long-string-client' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/create-object-client' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/entries' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/events' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/expand' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/function' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/getter-setter' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/keyboard-navigation' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/properties' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/proxy' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/release-actors' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/component/window' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/test-utils' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/create-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-children' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-closest-grip-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-value' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/make-node-for-properties' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/make-numerical-buckets' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-has-all-entries-in-preview' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-has-entries' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-is-window' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-supports-numerical-bucketing' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/promises' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-entries' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-full-text' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-indexed-properties' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-non-indexed-properties' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-prototype' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-symbols' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-render-roots-in-reps' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/types' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/utils/client' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/utils/index' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/utils/load-properties' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/utils/node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/object-inspector/utils/selection' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/accessor' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/array' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/attribute' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/caption' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/comment-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/constants' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/date-time' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/document-type' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/document' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/element-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/error' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/event' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/function' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/grip-array' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/grip-map-entry' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/grip-map' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/grip' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/infinity' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/nan' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/null' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/number' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/object-with-text' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/object-with-url' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/object' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/promise' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/prop-rep' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/regexp' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/rep-utils' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/rep' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/string' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/accessor' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/attribute' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/comment-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/date-time' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/document-type' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/document' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/element-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/error' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/event' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/failure' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/function' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/grip-array' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/grip-map-entry' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/grip-map' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/grip' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/infinity' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/long-string' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/nan' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/null' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/number' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/object-with-text' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/object-with-url' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/promise' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/regexp' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/stylesheet' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/symbol' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/text-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/undefined' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stubs/window' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/stylesheet' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/symbol' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/accessor' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/array' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/attribute' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/comment-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/date-time' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/document-type' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/document' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/element-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/error' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/event' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/failure' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/function' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/grip-array' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/grip-map-entry' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/grip-map' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/grip' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/helper-tests' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/infinity' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/long-string' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/nan' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/null' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/number' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/object-with-text' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/object-with-url' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/object' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/promise' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/regexp' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/string-with-url' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/string' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/stylesheet' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/symbol' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/test-helpers' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/text-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/undefined' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/tests/window' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/text-node' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/undefined' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/reps/window' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/shared/dom-node-constants' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/shared/grip-length-bubble' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/shared/redux/middleware/thunk' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/shared/redux/middleware/waitUntilService' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/test/__mocks__/request-animation-frame' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/test/__mocks__/selection' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/test/setup-file' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/src/test/setup' {
-  declare module.exports: any;
-}
-
-declare module 'devtools-reps/webpack.config' {
-  declare module.exports: any;
-}
-
-// Filename aliases
-declare module 'devtools-reps/bin/dev-server.js' {
-  declare module.exports: $Exports<'devtools-reps/bin/dev-server'>;
-}
-declare module 'devtools-reps/config.js' {
-  declare module.exports: $Exports<'devtools-reps/config'>;
-}
-declare module 'devtools-reps/jest.config.js' {
-  declare module.exports: $Exports<'devtools-reps/jest.config'>;
-}
-declare module 'devtools-reps/postcss.config.js' {
-  declare module.exports: $Exports<'devtools-reps/postcss.config'>;
-}
-declare module 'devtools-reps/src/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/index'>;
-}
-declare module 'devtools-reps/src/launchpad/actions/expressions.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/actions/expressions'>;
-}
-declare module 'devtools-reps/src/launchpad/actions/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/actions/index'>;
-}
-declare module 'devtools-reps/src/launchpad/actions/input.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/actions/input'>;
-}
-declare module 'devtools-reps/src/launchpad/components/Console.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/components/Console'>;
-}
-declare module 'devtools-reps/src/launchpad/components/Header.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/components/Header'>;
-}
-declare module 'devtools-reps/src/launchpad/components/QuickLinks.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/components/QuickLinks'>;
-}
-declare module 'devtools-reps/src/launchpad/components/Result.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/components/Result'>;
-}
-declare module 'devtools-reps/src/launchpad/components/ResultsList.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/components/ResultsList'>;
-}
-declare module 'devtools-reps/src/launchpad/constants.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/constants'>;
-}
-declare module 'devtools-reps/src/launchpad/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/index'>;
-}
-declare module 'devtools-reps/src/launchpad/reducers/expressions.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/reducers/expressions'>;
-}
-declare module 'devtools-reps/src/launchpad/reducers/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/reducers/index'>;
-}
-declare module 'devtools-reps/src/launchpad/reducers/input.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/reducers/input'>;
-}
-declare module 'devtools-reps/src/launchpad/samples.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/samples'>;
-}
-declare module 'devtools-reps/src/launchpad/selectors/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/selectors/index'>;
-}
-declare module 'devtools-reps/src/launchpad/store.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/store'>;
-}
-declare module 'devtools-reps/src/launchpad/utils/redux/middleware/promise.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/utils/redux/middleware/promise'>;
-}
-declare module 'devtools-reps/src/launchpad/utils/redux/middleware/thunk.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/utils/redux/middleware/thunk'>;
-}
-declare module 'devtools-reps/src/launchpad/utils/utils.js' {
-  declare module.exports: $Exports<'devtools-reps/src/launchpad/utils/utils'>;
-}
-declare module 'devtools-reps/src/object-inspector/actions.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/actions'>;
-}
-declare module 'devtools-reps/src/object-inspector/component.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/component'>;
-}
-declare module 'devtools-reps/src/object-inspector/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/index'>;
-}
-declare module 'devtools-reps/src/object-inspector/reducer.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/reducer'>;
-}
-declare module 'devtools-reps/src/object-inspector/store.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/store'>;
-}
-declare module 'devtools-reps/src/object-inspector/stubs/grip.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/stubs/grip'>;
-}
-declare module 'devtools-reps/src/object-inspector/stubs/map.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/stubs/map'>;
-}
-declare module 'devtools-reps/src/object-inspector/stubs/performance.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/stubs/performance'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/__mocks__/long-string-client.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/__mocks__/long-string-client'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/__mocks__/object-client.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/__mocks__/object-client'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/basic.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/basic'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/classnames.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/classnames'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/create-long-string-client.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/create-long-string-client'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/create-object-client.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/create-object-client'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/entries.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/entries'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/events.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/events'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/expand.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/expand'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/function.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/function'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/getter-setter.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/getter-setter'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/keyboard-navigation.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/keyboard-navigation'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/properties.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/properties'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/proxy.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/proxy'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/release-actors.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/release-actors'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/component/window.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/component/window'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/test-utils.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/test-utils'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/create-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/create-node'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-children.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/get-children'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-closest-grip-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/get-closest-grip-node'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/get-value.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/get-value'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/make-node-for-properties.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/make-node-for-properties'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/make-numerical-buckets.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/make-numerical-buckets'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-has-all-entries-in-preview.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/node-has-all-entries-in-preview'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-has-entries.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/node-has-entries'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-is-window.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/node-is-window'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/node-supports-numerical-bucketing.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/node-supports-numerical-bucketing'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/promises.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/promises'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-entries.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-entries'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-full-text.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-full-text'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-indexed-properties.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-indexed-properties'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-non-indexed-properties.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-non-indexed-properties'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-prototype.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-prototype'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-load-item-symbols.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-load-item-symbols'>;
-}
-declare module 'devtools-reps/src/object-inspector/tests/utils/should-render-roots-in-reps.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/tests/utils/should-render-roots-in-reps'>;
-}
-declare module 'devtools-reps/src/object-inspector/types.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/types'>;
-}
-declare module 'devtools-reps/src/object-inspector/utils/client.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/utils/client'>;
-}
-declare module 'devtools-reps/src/object-inspector/utils/index.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/utils/index'>;
-}
-declare module 'devtools-reps/src/object-inspector/utils/load-properties.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/utils/load-properties'>;
-}
-declare module 'devtools-reps/src/object-inspector/utils/node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/utils/node'>;
-}
-declare module 'devtools-reps/src/object-inspector/utils/selection.js' {
-  declare module.exports: $Exports<'devtools-reps/src/object-inspector/utils/selection'>;
-}
-declare module 'devtools-reps/src/reps/accessor.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/accessor'>;
-}
-declare module 'devtools-reps/src/reps/array.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/array'>;
-}
-declare module 'devtools-reps/src/reps/attribute.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/attribute'>;
-}
-declare module 'devtools-reps/src/reps/caption.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/caption'>;
-}
-declare module 'devtools-reps/src/reps/comment-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/comment-node'>;
-}
-declare module 'devtools-reps/src/reps/constants.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/constants'>;
-}
-declare module 'devtools-reps/src/reps/date-time.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/date-time'>;
-}
-declare module 'devtools-reps/src/reps/document-type.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/document-type'>;
-}
-declare module 'devtools-reps/src/reps/document.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/document'>;
-}
-declare module 'devtools-reps/src/reps/element-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/element-node'>;
-}
-declare module 'devtools-reps/src/reps/error.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/error'>;
-}
-declare module 'devtools-reps/src/reps/event.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/event'>;
-}
-declare module 'devtools-reps/src/reps/function.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/function'>;
-}
-declare module 'devtools-reps/src/reps/grip-array.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/grip-array'>;
-}
-declare module 'devtools-reps/src/reps/grip-map-entry.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/grip-map-entry'>;
-}
-declare module 'devtools-reps/src/reps/grip-map.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/grip-map'>;
-}
-declare module 'devtools-reps/src/reps/grip.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/grip'>;
-}
-declare module 'devtools-reps/src/reps/infinity.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/infinity'>;
-}
-declare module 'devtools-reps/src/reps/nan.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/nan'>;
-}
-declare module 'devtools-reps/src/reps/null.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/null'>;
-}
-declare module 'devtools-reps/src/reps/number.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/number'>;
-}
-declare module 'devtools-reps/src/reps/object-with-text.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/object-with-text'>;
-}
-declare module 'devtools-reps/src/reps/object-with-url.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/object-with-url'>;
-}
-declare module 'devtools-reps/src/reps/object.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/object'>;
-}
-declare module 'devtools-reps/src/reps/promise.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/promise'>;
-}
-declare module 'devtools-reps/src/reps/prop-rep.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/prop-rep'>;
-}
-declare module 'devtools-reps/src/reps/regexp.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/regexp'>;
-}
-declare module 'devtools-reps/src/reps/rep-utils.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/rep-utils'>;
-}
-declare module 'devtools-reps/src/reps/rep.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/rep'>;
-}
-declare module 'devtools-reps/src/reps/string.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/string'>;
-}
-declare module 'devtools-reps/src/reps/stubs/accessor.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/accessor'>;
-}
-declare module 'devtools-reps/src/reps/stubs/attribute.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/attribute'>;
-}
-declare module 'devtools-reps/src/reps/stubs/comment-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/comment-node'>;
-}
-declare module 'devtools-reps/src/reps/stubs/date-time.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/date-time'>;
-}
-declare module 'devtools-reps/src/reps/stubs/document-type.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/document-type'>;
-}
-declare module 'devtools-reps/src/reps/stubs/document.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/document'>;
-}
-declare module 'devtools-reps/src/reps/stubs/element-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/element-node'>;
-}
-declare module 'devtools-reps/src/reps/stubs/error.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/error'>;
-}
-declare module 'devtools-reps/src/reps/stubs/event.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/event'>;
-}
-declare module 'devtools-reps/src/reps/stubs/failure.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/failure'>;
-}
-declare module 'devtools-reps/src/reps/stubs/function.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/function'>;
-}
-declare module 'devtools-reps/src/reps/stubs/grip-array.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/grip-array'>;
-}
-declare module 'devtools-reps/src/reps/stubs/grip-map-entry.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/grip-map-entry'>;
-}
-declare module 'devtools-reps/src/reps/stubs/grip-map.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/grip-map'>;
-}
-declare module 'devtools-reps/src/reps/stubs/grip.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/grip'>;
-}
-declare module 'devtools-reps/src/reps/stubs/infinity.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/infinity'>;
-}
-declare module 'devtools-reps/src/reps/stubs/long-string.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/long-string'>;
-}
-declare module 'devtools-reps/src/reps/stubs/nan.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/nan'>;
-}
-declare module 'devtools-reps/src/reps/stubs/null.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/null'>;
-}
-declare module 'devtools-reps/src/reps/stubs/number.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/number'>;
-}
-declare module 'devtools-reps/src/reps/stubs/object-with-text.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/object-with-text'>;
-}
-declare module 'devtools-reps/src/reps/stubs/object-with-url.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/object-with-url'>;
-}
-declare module 'devtools-reps/src/reps/stubs/promise.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/promise'>;
-}
-declare module 'devtools-reps/src/reps/stubs/regexp.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/regexp'>;
-}
-declare module 'devtools-reps/src/reps/stubs/stylesheet.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/stylesheet'>;
-}
-declare module 'devtools-reps/src/reps/stubs/symbol.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/symbol'>;
-}
-declare module 'devtools-reps/src/reps/stubs/text-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/text-node'>;
-}
-declare module 'devtools-reps/src/reps/stubs/undefined.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/undefined'>;
-}
-declare module 'devtools-reps/src/reps/stubs/window.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stubs/window'>;
-}
-declare module 'devtools-reps/src/reps/stylesheet.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/stylesheet'>;
-}
-declare module 'devtools-reps/src/reps/symbol.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/symbol'>;
-}
-declare module 'devtools-reps/src/reps/tests/accessor.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/accessor'>;
-}
-declare module 'devtools-reps/src/reps/tests/array.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/array'>;
-}
-declare module 'devtools-reps/src/reps/tests/attribute.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/attribute'>;
-}
-declare module 'devtools-reps/src/reps/tests/comment-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/comment-node'>;
-}
-declare module 'devtools-reps/src/reps/tests/date-time.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/date-time'>;
-}
-declare module 'devtools-reps/src/reps/tests/document-type.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/document-type'>;
-}
-declare module 'devtools-reps/src/reps/tests/document.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/document'>;
-}
-declare module 'devtools-reps/src/reps/tests/element-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/element-node'>;
-}
-declare module 'devtools-reps/src/reps/tests/error.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/error'>;
-}
-declare module 'devtools-reps/src/reps/tests/event.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/event'>;
-}
-declare module 'devtools-reps/src/reps/tests/failure.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/failure'>;
-}
-declare module 'devtools-reps/src/reps/tests/function.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/function'>;
-}
-declare module 'devtools-reps/src/reps/tests/grip-array.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/grip-array'>;
-}
-declare module 'devtools-reps/src/reps/tests/grip-map-entry.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/grip-map-entry'>;
-}
-declare module 'devtools-reps/src/reps/tests/grip-map.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/grip-map'>;
-}
-declare module 'devtools-reps/src/reps/tests/grip.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/grip'>;
-}
-declare module 'devtools-reps/src/reps/tests/helper-tests.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/helper-tests'>;
-}
-declare module 'devtools-reps/src/reps/tests/infinity.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/infinity'>;
-}
-declare module 'devtools-reps/src/reps/tests/long-string.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/long-string'>;
-}
-declare module 'devtools-reps/src/reps/tests/nan.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/nan'>;
-}
-declare module 'devtools-reps/src/reps/tests/null.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/null'>;
-}
-declare module 'devtools-reps/src/reps/tests/number.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/number'>;
-}
-declare module 'devtools-reps/src/reps/tests/object-with-text.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/object-with-text'>;
-}
-declare module 'devtools-reps/src/reps/tests/object-with-url.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/object-with-url'>;
-}
-declare module 'devtools-reps/src/reps/tests/object.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/object'>;
-}
-declare module 'devtools-reps/src/reps/tests/promise.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/promise'>;
-}
-declare module 'devtools-reps/src/reps/tests/regexp.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/regexp'>;
-}
-declare module 'devtools-reps/src/reps/tests/string-with-url.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/string-with-url'>;
-}
-declare module 'devtools-reps/src/reps/tests/string.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/string'>;
-}
-declare module 'devtools-reps/src/reps/tests/stylesheet.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/stylesheet'>;
-}
-declare module 'devtools-reps/src/reps/tests/symbol.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/symbol'>;
-}
-declare module 'devtools-reps/src/reps/tests/test-helpers.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/test-helpers'>;
-}
-declare module 'devtools-reps/src/reps/tests/text-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/text-node'>;
-}
-declare module 'devtools-reps/src/reps/tests/undefined.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/undefined'>;
-}
-declare module 'devtools-reps/src/reps/tests/window.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/tests/window'>;
-}
-declare module 'devtools-reps/src/reps/text-node.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/text-node'>;
-}
-declare module 'devtools-reps/src/reps/undefined.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/undefined'>;
-}
-declare module 'devtools-reps/src/reps/window.js' {
-  declare module.exports: $Exports<'devtools-reps/src/reps/window'>;
-}
-declare module 'devtools-reps/src/shared/dom-node-constants.js' {
-  declare module.exports: $Exports<'devtools-reps/src/shared/dom-node-constants'>;
-}
-declare module 'devtools-reps/src/shared/grip-length-bubble.js' {
-  declare module.exports: $Exports<'devtools-reps/src/shared/grip-length-bubble'>;
-}
-declare module 'devtools-reps/src/shared/redux/middleware/thunk.js' {
-  declare module.exports: $Exports<'devtools-reps/src/shared/redux/middleware/thunk'>;
-}
-declare module 'devtools-reps/src/shared/redux/middleware/waitUntilService.js' {
-  declare module.exports: $Exports<'devtools-reps/src/shared/redux/middleware/waitUntilService'>;
-}
-declare module 'devtools-reps/src/test/__mocks__/request-animation-frame.js' {
-  declare module.exports: $Exports<'devtools-reps/src/test/__mocks__/request-animation-frame'>;
-}
-declare module 'devtools-reps/src/test/__mocks__/selection.js' {
-  declare module.exports: $Exports<'devtools-reps/src/test/__mocks__/selection'>;
-}
-declare module 'devtools-reps/src/test/setup-file.js' {
-  declare module.exports: $Exports<'devtools-reps/src/test/setup-file'>;
-}
-declare module 'devtools-reps/src/test/setup.js' {
-  declare module.exports: $Exports<'devtools-reps/src/test/setup'>;
-}
-declare module 'devtools-reps/webpack.config.js' {
-  declare module.exports: $Exports<'devtools-reps/webpack.config'>;
-}
--- a/devtools/client/debugger/packages/devtools-reps/src/index.js
+++ b/devtools/client/debugger/packages/devtools-reps/src/index.js
@@ -1,12 +1,14 @@
 /* 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/>. */
 
+// @flow
+
 const { MODE } = require("./reps/constants");
 const { REPS, getRep } = require("./reps/rep");
 const objectInspector = require("./object-inspector");
 
 const {
   parseURLEncodedText,
   parseURLParams,
   maybeEscapePropertyName,
@@ -18,8 +20,15 @@ module.exports = {
   getRep,
   MODE,
   maybeEscapePropertyName,
   parseURLEncodedText,
   parseURLParams,
   getGripPreviewItems,
   objectInspector
 };
+
+export type {
+  RdpGrip,
+  GripProperties,
+  Node,
+  Grip
+} from "./object-inspector/types";
--- a/devtools/client/debugger/packages/devtools-reps/src/object-inspector/reducer.js
+++ b/devtools/client/debugger/packages/devtools-reps/src/object-inspector/reducer.js
@@ -1,12 +1,11 @@
 /* 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/>. */
-// @flow
 
 import type { ReduxAction, State } from "./types";
 
 function initialState() {
   return {
     expandedPaths: new Set(),
     loadedProperties: new Map(),
     evaluations: new Map(),
--- a/devtools/client/debugger/packages/devtools-reps/src/object-inspector/types.js
+++ b/devtools/client/debugger/packages/devtools-reps/src/object-inspector/types.js
@@ -1,44 +1,60 @@
 /* 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/>. */
 
+// @flow
+
+export type Grip = {
+  actor: string,
+  class: string,
+  displayClass: string,
+  displayName?: string,
+  parameterNames?: string[],
+  userDisplayName?: string,
+  name: string,
+  extensible: boolean,
+  location: {
+    url: string,
+    line: number,
+    column: number
+  },
+  frozen: boolean,
+  ownPropertyLength: number,
+  preview: Object,
+  sealed: boolean,
+  optimizedOut: boolean,
+  type: string
+};
+
 export type GripProperties = {
   ownProperties?: Object,
   ownSymbols?: Array<Object>,
   safeGetterValues?: Object,
   prototype?: Object,
   fullText?: string
 };
 
-export type ObjectInspectorItemContentsValue =
-  | object
-  | number
-  | string
-  | boolean
-  | null
-  | undefined;
-
 export type NodeContents = {
-  value: ObjectInspectorItemContentsValue
+  value: Object | number | string | boolean | null | typeof undefined
 };
 
 export type NodeMeta = {
   startIndex: number,
   endIndex: number
 };
 
-export type Path = Symbol;
+export type Path = string;
 export type Node = {
   contents: Array<Node> | NodeContents,
   name: string,
   path: Path,
-  type: ?Symbol,
-  meta: ?NodeMeta
+  type?: Symbol,
+  meta?: NodeMeta
 };
 
 export type RdpGrip = {
   actor: string,
   class: string,
   displayClass: string,
   extensible: boolean,
   frozen: boolean,
@@ -111,17 +127,17 @@ export type Props = {
       focused: boolean,
       expanded: boolean
     }
   ) => any,
   onCmdCtrlClick: ?(
     item: Node,
     options: {
       depth: number,
-      event: SyntheticEvent,
+      event: MouseEvent,
       focused: boolean,
       expanded: boolean
     }
   ) => any,
   onLabelClick: ?(
     item: Node,
     options: {
       depth: number,
--- a/devtools/client/debugger/packages/devtools-reps/src/object-inspector/utils/index.js
+++ b/devtools/client/debugger/packages/devtools-reps/src/object-inspector/utils/index.js
@@ -1,14 +1,12 @@
 /* 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/>. */
 
-// @flow
-
 const client = require("./client");
 const loadProperties = require("./load-properties");
 const node = require("./node");
 const { nodeIsError, nodeIsPrimitive } = node;
 const selection = require("./selection");
 
 const { MODE } = require("../../reps/constants");
 const {
--- a/devtools/client/debugger/src/actions/pause/index.js
+++ b/devtools/client/debugger/src/actions/pause/index.js
@@ -21,13 +21,12 @@ export {
   reverseStepOut
 } from "./commands";
 export { fetchScopes } from "./fetchScopes";
 export { paused } from "./paused";
 export { resumed } from "./resumed";
 export { continueToHere } from "./continueToHere";
 export { breakOnNext } from "./breakOnNext";
 export { mapFrames } from "./mapFrames";
-export { setPopupObjectProperties } from "./setPopupObjectProperties";
 export { pauseOnExceptions } from "./pauseOnExceptions";
 export { selectFrame } from "./selectFrame";
 export { toggleSkipPausing } from "./skipPausing";
 export { toggleMapScopes } from "./mapScopes";
--- a/devtools/client/debugger/src/actions/pause/moz.build
+++ b/devtools/client/debugger/src/actions/pause/moz.build
@@ -14,11 +14,10 @@ CompiledModules(
     'fetchScopes.js',
     'index.js',
     'mapFrames.js',
     'mapScopes.js',
     'paused.js',
     'pauseOnExceptions.js',
     'resumed.js',
     'selectFrame.js',
-    'setPopupObjectProperties.js',
     'skipPausing.js',
 )
--- a/devtools/client/debugger/src/actions/pause/paused.js
+++ b/devtools/client/debugger/src/actions/pause/paused.js
@@ -25,26 +25,25 @@ import type { ThunkArgs } from "../types
  * Debugger has just paused
  *
  * @param {object} pauseInfo
  * @memberof actions/pause
  * @static
  */
 export function paused(pauseInfo: Pause) {
   return async function({ dispatch, getState, client, sourceMaps }: ThunkArgs) {
-    const { thread, frames, why, loadedObjects } = pauseInfo;
+    const { thread, frames, why } = pauseInfo;
     const topFrame = frames.length > 0 ? frames[0] : null;
 
     dispatch({
       type: "PAUSED",
       thread,
       why,
       frames,
-      selectedFrameId: topFrame ? topFrame.id : undefined,
-      loadedObjects: loadedObjects || []
+      selectedFrameId: topFrame ? topFrame.id : undefined
     });
 
     // Get a context capturing the newly paused and selected thread.
     const cx = getThreadContext(getState());
     assert(cx.thread == thread, "Thread mismatch");
 
     const hiddenBreakpoint = getHiddenBreakpoint(getState());
     if (hiddenBreakpoint) {
deleted file mode 100644
--- a/devtools/client/debugger/src/actions/pause/setPopupObjectProperties.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 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/>. */
-
-// @flow
-
-import { getPopupObjectProperties } from "../../selectors";
-import type { ThunkArgs } from "../types";
-import type { ThreadContext } from "../../types";
-
-/**
- * @memberof actions/pause
- * @static
- */
-export function setPopupObjectProperties(
-  cx: ThreadContext,
-  object: any,
-  properties: Object
-) {
-  return ({ dispatch, client, getState }: ThunkArgs) => {
-    const objectId = object.actor || object.objectId;
-
-    if (getPopupObjectProperties(getState(), cx.thread, object.actor)) {
-      return;
-    }
-
-    dispatch({
-      type: "SET_POPUP_OBJECT_PROPERTIES",
-      cx,
-      thread: cx.thread,
-      objectId,
-      properties
-    });
-  };
-}
--- a/devtools/client/debugger/src/actions/preview.js
+++ b/devtools/client/debugger/src/actions/preview.js
@@ -1,13 +1,14 @@
 /* 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/>. */
 
 // @flow
+
 import { isConsole } from "../utils/preview";
 import { findBestMatchExpression } from "../utils/ast";
 import { PROMISE } from "./utils/middleware/promise";
 import { getExpressionFromCoords } from "../utils/editor/get-expression";
 import { isOriginal } from "../utils/source";
 
 import {
   getPreview,
@@ -112,19 +113,28 @@ export function setPreview(
         // Error case occurs for a token that follows an errored evaluation
         // https://github.com/firefox-devtools/debugger/pull/8056
         // Accommodating for null allows us to show preview for falsy values
         // line "", false, null, Nan, and more
         if (result === null) {
           return;
         }
 
+        const root = {
+          name: expression,
+          path: expression,
+          contents: { value: result }
+        };
+        const properties = await client.loadObjectProperties(root);
+
         return {
           expression,
           result,
+          properties,
+          root,
           location,
           tokenPos,
           cursorPos
         };
       })()
     });
   };
 }
--- a/devtools/client/debugger/src/actions/types/ASTAction.js
+++ b/devtools/client/debugger/src/actions/types/ASTAction.js
@@ -2,16 +2,17 @@
  * 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/>. */
 
 // @flow
 
 import type { SymbolDeclarations, AstLocation } from "../../workers/parser";
 import type { PromiseAction } from "../utils/middleware/promise";
 import type { Context } from "../../types";
+import type { PreviewValue } from "../../reducers/types";
 
 export type ASTAction =
   | PromiseAction<
       {|
         +type: "SET_SYMBOLS",
         +cx: Context,
         +sourceId: string
       |},
@@ -27,20 +28,14 @@ export type ASTAction =
       +cx: Context,
       +lines: number[]
     |}
   | PromiseAction<
       {|
         +type: "SET_PREVIEW",
         +cx: Context
       |},
-      {
-        expression: string,
-        result: any,
-        location: AstLocation,
-        tokenPos: any,
-        cursorPos: any
-      }
+      PreviewValue
     >
   | {|
       +type: "CLEAR_SELECTION",
       +cx: Context
     |};
--- a/devtools/client/debugger/src/actions/types/PauseAction.js
+++ b/devtools/client/debugger/src/actions/types/PauseAction.js
@@ -58,23 +58,16 @@ export type PauseAction =
       +frame: Frame
     |}
   | {|
       +type: "SELECT_COMPONENT",
       +thread: string,
       +componentIndex: number
     |}
   | {|
-      +type: "SET_POPUP_OBJECT_PROPERTIES",
-      +cx: ThreadContext,
-      +thread: string,
-      +objectId: string,
-      +properties: Object
-    |}
-  | {|
       +type: "ADD_EXPRESSION",
       +cx: ThreadContext,
       +thread: string,
       +id: number,
       +input: string,
       +value: string,
       +expressionError: ?string
     |}
--- a/devtools/client/debugger/src/actions/utils/middleware/log.js
+++ b/devtools/client/debugger/src/actions/utils/middleware/log.js
@@ -4,17 +4,16 @@
 /* global window */
 
 // @flow
 
 import { isTesting } from "devtools-environment";
 import type { ThunkArgs } from "../../types";
 
 const blacklist = [
-  "SET_POPUP_OBJECT_PROPERTIES",
   "ADD_BREAKPOINT_POSITIONS",
   "SET_SYMBOLS",
   "OUT_OF_SCOPE_LOCATIONS",
   "MAP_SCOPES",
   "MAP_FRAMES",
   "ADD_SCOPES",
   "IN_SCOPE_LINES",
   "REMOVE_BREAKPOINT",
--- a/devtools/client/debugger/src/client/firefox/commands.js
+++ b/devtools/client/debugger/src/client/firefox/commands.js
@@ -3,16 +3,19 @@
  * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
 
 // @flow
 
 import { prepareSourcePayload, createWorker } from "./create";
 import { supportsWorkers, updateWorkerClients } from "./workers";
 import { features } from "../../utils/prefs";
 
+import Reps from "devtools-reps";
+import type { Node } from "devtools-reps";
+
 import type {
   ActorId,
   BreakpointLocation,
   BreakpointOptions,
   PendingLocation,
   EventListenerBreakpoints,
   Frame,
   FrameId,
@@ -63,16 +66,25 @@ function setupCommands(dependencies: Dep
 function hasWasmSupport() {
   return supportsWasm;
 }
 
 function createObjectClient(grip: Grip) {
   return debuggerClient.createObjectClient(grip);
 }
 
+async function loadObjectProperties(root: Node) {
+  const utils = Reps.objectInspector.utils;
+  const properties = await utils.loadProperties.loadItemProperties(
+    root,
+    createObjectClient
+  );
+  return utils.node.makeNodesForProperties(properties, root);
+}
+
 function releaseActor(actor: String) {
   if (!actor) {
     return;
   }
 
   return debuggerClient.release(actor);
 }
 
@@ -469,16 +481,17 @@ async function getBreakpointPositions(
   }
   return sourcePositions;
 }
 
 const clientCommands = {
   autocomplete,
   blackBox,
   createObjectClient,
+  loadObjectProperties,
   releaseActor,
   interrupt,
   pauseGrip,
   resume,
   stepIn,
   stepOut,
   stepOver,
   rewind,
--- a/devtools/client/debugger/src/components/Editor/DebugLine.js
+++ b/devtools/client/debugger/src/components/Editor/DebugLine.js
@@ -1,14 +1,14 @@
 /* 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/>. */
 
 // @flow
-import { Component } from "react";
+import { PureComponent } from "react";
 import {
   toEditorPosition,
   getDocument,
   hasDocument,
   startOperation,
   endOperation
 } from "../../utils/editor";
 import { isLoaded } from "../../utils/source";
@@ -34,17 +34,17 @@ type TextClasses = {
   markTextClass: string,
   lineClass: string
 };
 
 function isDocumentReady(source, frame) {
   return frame && isLoaded(source) && hasDocument(frame.location.sourceId);
 }
 
-export class DebugLine extends Component<Props> {
+export class DebugLine extends PureComponent<Props> {
   debugExpression: null;
 
   componentDidMount() {
     const { why, frame, source } = this.props;
     this.setDebugLine(why, frame, source);
   }
 
   componentWillUnmount() {
--- a/devtools/client/debugger/src/components/Editor/Preview/Popup.js
+++ b/devtools/client/debugger/src/components/Editor/Preview/Popup.js
@@ -12,50 +12,38 @@ const {
   REPS: { Rep },
   MODE,
   objectInspector
 } = Reps;
 
 const { ObjectInspector, utils } = objectInspector;
 
 const {
-  node: { createNode, getChildren, getValue, nodeIsPrimitive },
-  loadProperties: { loadItemProperties }
+  node: { nodeIsPrimitive, nodeIsFunction, nodeIsObject }
 } = utils;
 
 import actions from "../../../actions";
-import {
-  getAllPopupObjectProperties,
-  getCurrentThread,
-  getThreadContext
-} from "../../../selectors";
+import { getThreadContext } from "../../../selectors";
 import Popover from "../../shared/Popover";
 import PreviewFunction from "../../shared/PreviewFunction";
 
-import AccessibleImage from "../../shared/AccessibleImage";
 import { createObjectClient } from "../../../client/firefox";
 
 import "./Popup.css";
 
-import type { EditorRange } from "../../../utils/editor/types";
 import type { Coords } from "../../shared/Popover";
 import type { ThreadContext } from "../../../types";
+import type { PreviewValue } from "../../../reducers/types";
 
-type PopupValue = Object | null;
 type Props = {
   cx: ThreadContext,
-  popupObjectProperties: Object,
-  popoverPos: Object,
-  value: PopupValue,
-  expression: string,
+  preview: PreviewValue,
   onClose: () => void,
-  range: EditorRange,
   editor: any,
   editorRef: ?HTMLDivElement,
-  setPopupObjectProperties: typeof actions.setPopupObjectProperties,
   addExpression: typeof actions.addExpression,
   selectSourceURL: typeof actions.selectSourceURL,
   openLink: typeof actions.openLink,
   openElementInInspector: typeof actions.openElementInInspectorCommand,
   highlightDomElement: typeof actions.highlightDomElement,
   unHighlightDomElement: typeof actions.unHighlightDomElement
 };
 
@@ -88,40 +76,16 @@ export class Popup extends Component<Pro
 
   constructor(props: Props) {
     super(props);
     this.state = {
       top: 0
     };
   }
 
-  async componentWillMount() {
-    const {
-      cx,
-      value,
-      setPopupObjectProperties,
-      popupObjectProperties
-    } = this.props;
-
-    const root = this.getRoot();
-
-    if (
-      !nodeIsPrimitive(root) &&
-      value &&
-      value.actor &&
-      !popupObjectProperties[value.actor]
-    ) {
-      const onLoadItemProperties = loadItemProperties(root, createObjectClient);
-      if (onLoadItemProperties !== null) {
-        const properties = await onLoadItemProperties;
-        setPopupObjectProperties(cx, root.contents.value, properties);
-      }
-    }
-  }
-
   onMouseLeave = (e: SyntheticMouseEvent<HTMLDivElement>) => {
     const relatedTarget: Element = (e.relatedTarget: any);
 
     if (!relatedTarget) {
       return this.props.onClose();
     }
 
     if (!inPreview(e)) {
@@ -130,238 +94,168 @@ export class Popup extends Component<Pro
   };
 
   onKeyDown = (e: KeyboardEvent) => {
     if (e.key === "Escape") {
       this.props.onClose();
     }
   };
 
-  getRoot() {
-    const { expression, value } = this.props;
-
-    return createNode({
-      name: expression,
-      path: expression,
-      contents: { value }
-    });
-  }
-
-  getObjectProperties() {
-    const { popupObjectProperties } = this.props;
-    const root = this.getRoot();
-    const value = getValue(root);
-    if (!value) {
-      return null;
-    }
-
-    return popupObjectProperties[value.actor];
-  }
-
-  getChildren() {
-    const properties = this.getObjectProperties();
-    const root = this.getRoot();
-
-    if (!properties) {
-      return null;
-    }
-
-    const children = getChildren({
-      item: root,
-      loadedProperties: new Map([[root.path, properties]])
-    });
-
-    if (children.length > 0) {
-      return children;
-    }
-
-    return null;
-  }
-
   calculateMaxHeight = () => {
     const { editorRef } = this.props;
     if (!editorRef) {
       return "auto";
     }
     return editorRef.getBoundingClientRect().height - this.state.top;
   };
 
   renderFunctionPreview() {
-    const { cx, selectSourceURL, value } = this.props;
+    const {
+      cx,
+      selectSourceURL,
+      preview: { result }
+    } = this.props;
 
-    if (!value) {
-      return null;
-    }
-
-    const { location } = value;
     return (
       <div
         className="preview-popup"
         onClick={() =>
-          selectSourceURL(cx, location.url, { line: location.line })
+          selectSourceURL(cx, result.location.url, {
+            line: result.location.line
+          })
         }
       >
-        <PreviewFunction func={value} />
-      </div>
-    );
-  }
-
-  renderReact(react: Object) {
-    const reactHeader = react.displayName || "React Component";
-
-    return (
-      <div className="header-container">
-        <AccessibleImage className="logo react" />
-        <h3>{reactHeader}</h3>
+        <PreviewFunction func={result} />
       </div>
     );
   }
 
   renderObjectPreview() {
-    const root = this.getRoot();
-
-    if (nodeIsPrimitive(root)) {
-      return null;
-    }
-
-    const roots = this.getChildren();
-    if (!Array.isArray(roots) || roots.length === 0) {
-      return null;
-    }
-
-    return (
-      <div
-        className="preview-popup"
-        style={{ maxHeight: this.calculateMaxHeight() }}
-      >
-        {this.renderObjectInspector(roots)}
-      </div>
-    );
-  }
-
-  renderSimplePreview(value: any) {
-    const { openLink } = this.props;
-    return (
-      <div className="preview-popup">
-        {Rep({
-          object: value,
-          mode: MODE.LONG,
-          openLink
-        })}
-      </div>
-    );
-  }
-
-  renderObjectInspector(roots: Array<Object>) {
     const {
+      preview: { properties },
       openLink,
       openElementInInspector,
       highlightDomElement,
       unHighlightDomElement
     } = this.props;
 
     return (
-      <ObjectInspector
-        roots={roots}
-        autoExpandDepth={0}
-        disableWrap={true}
-        focusable={false}
-        openLink={openLink}
-        createObjectClient={grip => createObjectClient(grip)}
-        onDOMNodeClick={grip => openElementInInspector(grip)}
-        onInspectIconClick={grip => openElementInInspector(grip)}
-        onDOMNodeMouseOver={grip => highlightDomElement(grip)}
-        onDOMNodeMouseOut={grip => unHighlightDomElement(grip)}
-      />
+      <div
+        className="preview-popup"
+        style={{ maxHeight: this.calculateMaxHeight() }}
+      >
+        <ObjectInspector
+          roots={properties}
+          autoExpandDepth={0}
+          disableWrap={true}
+          focusable={false}
+          openLink={openLink}
+          createObjectClient={grip => createObjectClient(grip)}
+          onDOMNodeClick={grip => openElementInInspector(grip)}
+          onInspectIconClick={grip => openElementInInspector(grip)}
+          onDOMNodeMouseOver={grip => highlightDomElement(grip)}
+          onDOMNodeMouseOut={grip => unHighlightDomElement(grip)}
+        />
+      </div>
+    );
+  }
+
+  renderSimplePreview() {
+    const {
+      openLink,
+      preview: { result }
+    } = this.props;
+    return (
+      <div className="preview-popup">
+        {Rep({
+          object: result,
+          mode: MODE.LONG,
+          openLink
+        })}
+      </div>
     );
   }
 
   renderPreview() {
     // We don't have to check and
     // return on `false`, `""`, `0`, `undefined` etc,
     // these falsy simple typed value because we want to
     // do `renderSimplePreview` on these values below.
-    const { value } = this.props;
+    const {
+      preview: { root }
+    } = this.props;
 
-    if (value && value.class === "Function") {
+    if (nodeIsFunction(root)) {
       return this.renderFunctionPreview();
     }
 
-    if (value && value.type === "object") {
+    if (nodeIsObject(root)) {
       return <div>{this.renderObjectPreview()}</div>;
     }
 
-    return this.renderSimplePreview(value);
+    return this.renderSimplePreview();
   }
 
-  getPreviewType(value: any) {
-    if (
-      typeof value == "number" ||
-      typeof value == "boolean" ||
-      (typeof value == "string" && value.length < 10) ||
-      (typeof value == "number" && value.toString().length < 10) ||
-      value.type == "null" ||
-      value.type == "undefined" ||
-      value.class === "Function"
-    ) {
+  getPreviewType() {
+    const {
+      preview: { root }
+    } = this.props;
+    if (nodeIsPrimitive(root) || nodeIsFunction(root)) {
       return "tooltip";
     }
 
     return "popover";
   }
 
   onPopoverCoords = (coords: Coords) => {
     this.setState({ top: coords.top });
   };
 
   render() {
-    const { popoverPos, value, editorRef } = this.props;
-    const type = this.getPreviewType(value);
+    const {
+      preview: { cursorPos, result },
+      editorRef
+    } = this.props;
+    const type = this.getPreviewType();
 
-    if (value && value.type === "object" && !this.getChildren()) {
+    if (typeof result == "undefined" || result.optimizedOut) {
       return null;
     }
 
     return (
       <Popover
-        targetPosition={popoverPos}
+        targetPosition={cursorPos}
         onMouseLeave={this.onMouseLeave}
         onKeyDown={this.onKeyDown}
         type={type}
         onPopoverCoords={this.onPopoverCoords}
         editorRef={editorRef}
       >
         {this.renderPreview()}
       </Popover>
     );
   }
 }
 
 const mapStateToProps = state => ({
-  cx: getThreadContext(state),
-  popupObjectProperties: getAllPopupObjectProperties(
-    state,
-    getCurrentThread(state)
-  )
+  cx: getThreadContext(state)
 });
 
 const {
   addExpression,
   selectSourceURL,
-  setPopupObjectProperties,
   openLink,
   openElementInInspectorCommand,
   highlightDomElement,
   unHighlightDomElement
 } = actions;
 
 const mapDispatchToProps = {
   addExpression,
   selectSourceURL,
-  setPopupObjectProperties,
   openLink,
   openElementInInspector: openElementInInspectorCommand,
   highlightDomElement,
   unHighlightDomElement
 };
 
 export default connect(
   mapStateToProps,
--- a/devtools/client/debugger/src/components/Editor/Preview/index.js
+++ b/devtools/client/debugger/src/components/Editor/Preview/index.js
@@ -4,36 +4,29 @@
 
 // @flow
 
 import React, { PureComponent } from "react";
 import { connect } from "../../../utils/connect";
 
 import Popup from "./Popup";
 
-import {
-  getPreview,
-  getSelectedSource,
-  getThreadContext
-} from "../../../selectors";
+import { getPreview, getThreadContext } from "../../../selectors";
 import actions from "../../../actions";
-import { toEditorRange } from "../../../utils/editor";
 
-import type { Source, ThreadContext } from "../../../types";
+import type { ThreadContext } from "../../../types";
 
 import type { Preview as PreviewType } from "../../../reducers/ast";
 
 type Props = {
   cx: ThreadContext,
   editor: any,
   editorRef: ?HTMLDivElement,
-  selectedSource: Source,
   preview: PreviewType,
   clearPreview: typeof actions.clearPreview,
-  setPopupObjectProperties: typeof actions.setPopupObjectProperties,
   addExpression: typeof actions.addExpression,
   updatePreview: typeof actions.updatePreview
 };
 
 type State = {
   selecting: boolean
 };
 
@@ -146,54 +139,37 @@ class Preview extends PureComponent<Prop
 
   onClose = e => {
     if (this.props.cx.isPaused) {
       this.props.clearPreview(this.props.cx);
     }
   };
 
   render() {
-    const { selectedSource, preview } = this.props;
-    if (!this.props.editor || !selectedSource || this.state.selecting) {
-      return null;
-    }
-
-    if (!preview || preview.updating) {
+    const { preview } = this.props;
+    if (!preview || preview.updating || this.state.selecting) {
       return null;
     }
 
-    const { result, expression, location, cursorPos } = preview;
-    const value = result;
-    if (typeof value == "undefined" || value.optimizedOut) {
-      return null;
-    }
-
-    const editorRange = toEditorRange(selectedSource.id, location);
-
     return (
       <Popup
-        value={value}
+        preview={preview}
         editor={this.props.editor}
         editorRef={this.props.editorRef}
-        range={editorRange}
-        expression={expression}
-        popoverPos={cursorPos}
         onClose={this.onClose}
       />
     );
   }
 }
 
 const mapStateToProps = state => ({
   cx: getThreadContext(state),
-  preview: getPreview(state),
-  selectedSource: getSelectedSource(state)
+  preview: getPreview(state)
 });
 
 export default connect(
   mapStateToProps,
   {
     clearPreview: actions.clearPreview,
-    setPopupObjectProperties: actions.setPopupObjectProperties,
     addExpression: actions.addExpression,
     updatePreview: actions.updatePreview
   }
 )(Preview);
--- a/devtools/client/debugger/src/components/SecondaryPanes/Expressions.js
+++ b/devtools/client/debugger/src/components/SecondaryPanes/Expressions.js
@@ -2,16 +2,18 @@
  * 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/>. */
 
 // @flow
 import React, { Component } from "react";
 import { connect } from "../../utils/connect";
 import classnames from "classnames";
 import { features } from "../../utils/prefs";
+
+// eslint-disable-next-line import/named
 import { objectInspector } from "devtools-reps";
 
 import actions from "../../actions";
 import {
   getExpressions,
   getExpressionError,
   getAutocompleteMatchset,
   getThreadContext
--- a/devtools/client/debugger/src/components/SecondaryPanes/Scopes.js
+++ b/devtools/client/debugger/src/components/SecondaryPanes/Scopes.js
@@ -15,16 +15,17 @@ import {
   getOriginalFrameScope,
   getIsPaused,
   getPauseReason,
   isMapScopesEnabled,
   getCurrentThread
 } from "../../selectors";
 import { getScopes } from "../../utils/pause/scopes";
 
+// eslint-disable-next-line import/named
 import { objectInspector } from "devtools-reps";
 
 import type { Why } from "../../types";
 import type { NamedValue } from "../../utils/pause/scopes/types";
 
 import "./Scopes.css";
 
 const { ObjectInspector } = objectInspector;
--- a/devtools/client/debugger/src/reducers/ast.js
+++ b/devtools/client/debugger/src/reducers/ast.js
@@ -8,42 +8,44 @@
  * Ast reducer
  * @module reducers/ast
  */
 
 import type { AstLocation, SymbolDeclarations } from "../workers/parser";
 
 import type { Source } from "../types";
 import type { Action, DonePromiseAction } from "../actions/types";
+import type { Node, Grip, GripProperties } from "devtools-reps";
 
 type EmptyLinesType = number[];
 
 export type LoadedSymbols = SymbolDeclarations;
 export type Symbols = LoadedSymbols | {| loading: true |};
 
 export type EmptyLinesMap = { [k: string]: EmptyLinesType };
 export type SymbolsMap = { [k: string]: Symbols };
 
 export type SourceMetaDataType = {
   framework: ?string
 };
 
 export type SourceMetaDataMap = { [k: string]: SourceMetaDataType };
 
-export type Preview =
-  | {| updating: true |}
-  | null
-  | {|
-      updating: false,
-      expression: string,
-      location: AstLocation,
-      cursorPos: any,
-      tokenPos: AstLocation,
-      result: Object
-    |};
+export type Preview = {| updating: true |} | null | PreviewValue;
+
+export type PreviewValue = {|
+  expression: string,
+  result: Grip,
+  root: Node,
+  properties: GripProperties,
+  location: AstLocation,
+  cursorPos: any,
+  tokenPos: AstLocation,
+  updating: false
+|};
 
 export type ASTState = {
   +symbols: SymbolsMap,
   +emptyLines: EmptyLinesMap,
   +outOfScopeLocations: ?Array<AstLocation>,
   +inScopeLines: ?Array<number>,
   +preview: Preview
 };
--- a/devtools/client/debugger/src/reducers/index.js
+++ b/devtools/client/debugger/src/reducers/index.js
@@ -19,18 +19,20 @@ import asyncRequests from "./async-reque
 import pause from "./pause";
 import ui from "./ui";
 import fileSearch from "./file-search";
 import ast from "./ast";
 import projectTextSearch from "./project-text-search";
 import quickOpen from "./quick-open";
 import sourceTree from "./source-tree";
 import debuggee from "./debuggee";
+import eventListenerBreakpoints from "./event-listeners";
+
+// eslint-disable-next-line import/named
 import { objectInspector } from "devtools-reps";
-import eventListenerBreakpoints from "./event-listeners";
 
 export default {
   expressions,
   sourceActors,
   sources,
   tabs,
   breakpoints,
   pendingBreakpoints,
--- a/devtools/client/debugger/src/reducers/pause.js
+++ b/devtools/client/debugger/src/reducers/pause.js
@@ -61,17 +61,16 @@ type ThreadPauseState = {
     },
     mappings: {
       [FrameId]: {
         [string]: string | null
       }
     }
   },
   selectedFrameId: ?string,
-  loadedObjects: Object,
   command: Command,
   lastCommand: Command,
   wasStepping: boolean,
   previousLocation: ?MappedLocation
 };
 
 // Pause state describing all threads.
 export type PauseState = {
@@ -108,17 +107,16 @@ function createPauseState(thread: Thread
 const resumedPauseState = {
   frames: null,
   frameScopes: {
     generated: {},
     original: {},
     mappings: {}
   },
   selectedFrameId: null,
-  loadedObjects: {},
   why: null
 };
 
 const createInitialPauseState = () => ({
   ...resumedPauseState,
   isWaitingOnBreak: false,
   canRewind: false,
   command: null,
@@ -167,39 +165,32 @@ function update(
           thread: action.thread,
           isPaused: !!threadState().frames,
           pauseCounter: state.threadcx.pauseCounter + 1
         }
       };
     }
 
     case "PAUSED": {
-      const { thread, selectedFrameId, frames, loadedObjects, why } = action;
-
-      // turn this into an object keyed by object id
-      const objectMap = {};
-      loadedObjects.forEach(obj => {
-        objectMap[obj.value.objectId] = obj;
-      });
+      const { thread, selectedFrameId, frames, why } = action;
 
       state = {
         ...state,
         threadcx: {
           ...state.threadcx,
           pauseCounter: state.threadcx.pauseCounter + 1,
           thread,
           isPaused: true
         }
       };
       return updateThreadState({
         isWaitingOnBreak: false,
         selectedFrameId,
         frames,
         frameScopes: { ...resumedPauseState.frameScopes },
-        loadedObjects: objectMap,
         why
       });
     }
 
     case "MAP_FRAMES": {
       const { selectedFrameId, frames } = action;
       return updateThreadState({ frames, selectedFrameId });
     }
@@ -251,29 +242,16 @@ function update(
     }
 
     case "BREAK_ON_NEXT":
       return updateThreadState({ isWaitingOnBreak: true });
 
     case "SELECT_FRAME":
       return updateThreadState({ selectedFrameId: action.frame.id });
 
-    case "SET_POPUP_OBJECT_PROPERTIES": {
-      if (!action.properties) {
-        return state;
-      }
-
-      return updateThreadState({
-        loadedObjects: {
-          ...threadState().loadedObjects,
-          [action.objectId]: action.properties
-        }
-      });
-    }
-
     case "CONNECT":
       return {
         ...createPauseState(action.mainThread.actor),
         canRewind: action.canRewind
       };
 
     case "PAUSE_ON_EXCEPTIONS": {
       const { shouldPauseOnExceptions, shouldPauseOnCaughtExceptions } = action;
@@ -380,131 +358,104 @@ function getPauseLocation(state, action)
   return {
     location: frame.location,
     generatedLocation: frame.generatedLocation
   };
 }
 
 // Selectors
 
-// Unfortunately, it's really hard to make these functions accept just
-// the state that we care about and still type it with Flow. The
-// problem is that we want to re-export all selectors from a single
-// module for the UI, and all of those selectors should take the
-// top-level app state, so we'd have to "wrap" them to automatically
-// pick off the piece of state we're interested in. It's impossible
-// (right now) to type those wrapped functions.
-type OuterState = State;
-
-export function getContext(state: OuterState) {
+export function getContext(state: State) {
   return state.pause.cx;
 }
 
-export function getThreadContext(state: OuterState) {
+export function getThreadContext(state: State) {
   return state.pause.threadcx;
 }
 
-export function getAllPopupObjectProperties(
-  state: OuterState,
-  thread: ThreadId
-) {
-  return getThreadPauseState(state.pause, thread).loadedObjects;
-}
-
-export function getPauseReason(state: OuterState, thread: ThreadId): ?Why {
+export function getPauseReason(state: State, thread: ThreadId): ?Why {
   return getThreadPauseState(state.pause, thread).why;
 }
 
-export function getPauseCommand(state: OuterState, thread: ThreadId): Command {
+export function getPauseCommand(state: State, thread: ThreadId): Command {
   return getThreadPauseState(state.pause, thread).command;
 }
 
-export function wasStepping(state: OuterState, thread: ThreadId): boolean {
+export function wasStepping(state: State, thread: ThreadId): boolean {
   return getThreadPauseState(state.pause, thread).wasStepping;
 }
 
-export function isStepping(state: OuterState, thread: ThreadId) {
+export function isStepping(state: State, thread: ThreadId) {
   return ["stepIn", "stepOver", "stepOut"].includes(
     getPauseCommand(state, thread)
   );
 }
 
-export function getCurrentThread(state: OuterState) {
+export function getCurrentThread(state: State) {
   return getThreadContext(state).thread;
 }
 
-export function getIsPaused(state: OuterState, thread: ThreadId) {
+export function getIsPaused(state: State, thread: ThreadId) {
   return !!getThreadPauseState(state.pause, thread).frames;
 }
 
-export function getPreviousPauseFrameLocation(
-  state: OuterState,
-  thread: ThreadId
-) {
+export function getPreviousPauseFrameLocation(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).previousLocation;
 }
 
-export function isEvaluatingExpression(state: OuterState, thread: ThreadId) {
+export function isEvaluatingExpression(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).command === "expression";
 }
 
-export function getPopupObjectProperties(
-  state: OuterState,
-  thread: ThreadId,
-  objectId: string
-) {
-  return getAllPopupObjectProperties(state, thread)[objectId];
-}
-
-export function getIsWaitingOnBreak(state: OuterState, thread: ThreadId) {
+export function getIsWaitingOnBreak(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).isWaitingOnBreak;
 }
 
-export function getShouldPauseOnExceptions(state: OuterState) {
+export function getShouldPauseOnExceptions(state: State) {
   return state.pause.shouldPauseOnExceptions;
 }
 
-export function getShouldPauseOnCaughtExceptions(state: OuterState) {
+export function getShouldPauseOnCaughtExceptions(state: State) {
   return state.pause.shouldPauseOnCaughtExceptions;
 }
 
-export function getCanRewind(state: OuterState) {
+export function getCanRewind(state: State) {
   return state.pause.canRewind;
 }
 
-export function getFrames(state: OuterState, thread: ThreadId) {
+export function getFrames(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).frames;
 }
 
-export function getCurrentThreadFrames(state: OuterState) {
+export function getCurrentThreadFrames(state: State) {
   return getThreadPauseState(state.pause, getCurrentThread(state)).frames;
 }
 
 function getGeneratedFrameId(frameId: string): string {
   if (frameId.includes("-originalFrame")) {
     // The mapFrames can add original stack frames -- get generated frameId.
     return frameId.substr(0, frameId.lastIndexOf("-originalFrame"));
   }
   return frameId;
 }
 
 export function getGeneratedFrameScope(
-  state: OuterState,
+  state: State,
   thread: ThreadId,
   frameId: ?string
 ) {
   if (!frameId) {
     return null;
   }
 
   return getFrameScopes(state, thread).generated[getGeneratedFrameId(frameId)];
 }
 
 export function getOriginalFrameScope(
-  state: OuterState,
+  state: State,
   thread: ThreadId,
   sourceId: ?SourceId,
   frameId: ?string
 ): ?{
   pending: boolean,
   +scope: OriginalScope | Scope
 } {
   if (!frameId || !sourceId) {
@@ -518,21 +469,21 @@ export function getOriginalFrameScope(
 
   if (!isGenerated && original && (original.pending || original.scope)) {
     return original;
   }
 
   return null;
 }
 
-export function getFrameScopes(state: OuterState, thread: ThreadId) {
+export function getFrameScopes(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).frameScopes;
 }
 
-export function getSelectedFrameBindings(state: OuterState, thread: ThreadId) {
+export function getSelectedFrameBindings(state: State, thread: ThreadId) {
   const scopes = getFrameScopes(state, thread);
   const selectedFrameId = getSelectedFrameId(state, thread);
   if (!scopes || !selectedFrameId) {
     return null;
   }
 
   const frameScope = scopes.generated[selectedFrameId];
   if (!frameScope || frameScope.pending) {
@@ -554,83 +505,83 @@ export function getSelectedFrameBindings
     }
     currentScope = currentScope.parent;
   }
 
   return frameBindings;
 }
 
 export function getFrameScope(
-  state: OuterState,
+  state: State,
   thread: ThreadId,
   sourceId: ?SourceId,
   frameId: ?string
 ): ?{
   pending: boolean,
   +scope: OriginalScope | Scope
 } {
   return (
     getOriginalFrameScope(state, thread, sourceId, frameId) ||
     getGeneratedFrameScope(state, thread, frameId)
   );
 }
 
-export function getSelectedScope(state: OuterState, thread: ThreadId) {
+export function getSelectedScope(state: State, thread: ThreadId) {
   const sourceId = getSelectedSourceId(state);
   const frameId = getSelectedFrameId(state, thread);
 
   const frameScope = getFrameScope(state, thread, sourceId, frameId);
   if (!frameScope) {
     return null;
   }
 
   return frameScope.scope || null;
 }
 
-export function getSelectedOriginalScope(state: OuterState, thread: ThreadId) {
+export function getSelectedOriginalScope(state: State, thread: ThreadId) {
   const sourceId = getSelectedSourceId(state);
   const frameId = getSelectedFrameId(state, thread);
   return getOriginalFrameScope(state, thread, sourceId, frameId);
 }
 
-export function getSelectedGeneratedScope(state: OuterState, thread: ThreadId) {
+export function getSelectedGeneratedScope(state: State, thread: ThreadId) {
   const frameId = getSelectedFrameId(state, thread);
   return getGeneratedFrameScope(state, thread, frameId);
 }
 
 export function getSelectedScopeMappings(
-  state: OuterState,
+  state: State,
   thread: ThreadId
 ): {
   [string]: string | null
 } | null {
   const frameId = getSelectedFrameId(state, thread);
   if (!frameId) {
     return null;
   }
 
   return getFrameScopes(state, thread).mappings[frameId];
 }
 
-export function getSelectedFrameId(state: OuterState, thread: ThreadId) {
+export function getSelectedFrameId(state: State, thread: ThreadId) {
   return getThreadPauseState(state.pause, thread).selectedFrameId;
 }
 
-export function getTopFrame(state: OuterState, thread: ThreadId) {
+export function getTopFrame(state: State, thread: ThreadId) {
   const frames = getFrames(state, thread);
   return frames && frames[0];
 }
 
-export function getSkipPausing(state: OuterState) {
+export function getSkipPausing(state: State) {
   return state.pause.skipPausing;
 }
 
-export function isMapScopesEnabled(state: OuterState) {
+export function isMapScopesEnabled(state: State) {
   return state.pause.mapScopes;
 }
 
 // NOTE: currently only used for chrome
-export function getChromeScopes(state: OuterState, thread: ThreadId) {
+export function getChromeScopes(state: State, thread: ThreadId) {
   const frame: ?ChromeFrame = (getSelectedFrame(state, thread): any);
   return frame ? frame.scopeChain : undefined;
 }
 
 export default update;
--- a/devtools/client/debugger/src/reducers/types.js
+++ b/devtools/client/debugger/src/reducers/types.js
@@ -47,9 +47,9 @@ export type PendingSelectedLocation = {
   line?: number,
   column?: number
 };
 
 export type { SourcesMap, SourcesMapByThread } from "./sources";
 export type { ActiveSearchType, OrientationType } from "./ui";
 export type { BreakpointsMap, XHRBreakpointsList } from "./breakpoints";
 export type { Command } from "./pause";
-export type { LoadedSymbols, Symbols } from "./ast";
+export type { LoadedSymbols, Symbols, Preview, PreviewValue } from "./ast";
--- a/devtools/client/debugger/src/selectors/index.js
+++ b/devtools/client/debugger/src/selectors/index.js
@@ -46,16 +46,17 @@ export { getBreakpointSources } from "./
 export { getXHRBreakpoints, shouldPauseOnAnyXHR } from "./breakpoints";
 export * from "./visibleColumnBreakpoints";
 export {
   getSelectedFrame,
   getSelectedFrames,
   getVisibleSelectedFrame
 } from "./pause";
 
+// eslint-disable-next-line import/named
 import { objectInspector } from "devtools-reps";
 
 const { reducer } = objectInspector;
 
 Object.keys(reducer).forEach(function(key) {
   if (key === "default" || key === "__esModule") {
     return;
   }
--- a/devtools/client/debugger/src/selectors/pause.js
+++ b/devtools/client/debugger/src/selectors/pause.js
@@ -9,21 +9,21 @@ import { getSelectedLocation } from "../
 // eslint-disable-next-line
 import { getSelectedLocation as _getSelectedLocation } from "../utils/source-maps";
 import { createSelector } from "reselect";
 
 import type { Frame, SourceLocation, ThreadId } from "../types";
 import type { Selector, State } from "../reducers/types";
 
 export const getSelectedFrames: Selector<{ [string]: ?Frame }> = createSelector(
-  state => state.pause,
-  pauseState => {
+  state => state.pause.threads,
+  threadPauseState => {
     const selectedFrames = {};
-    for (const thread in pauseState.threads) {
-      const pausedThread = pauseState.threads[thread];
+    for (const thread in threadPauseState) {
+      const pausedThread = threadPauseState[thread];
       const { selectedFrameId, frames } = pausedThread;
       if (frames) {
         selectedFrames[thread] = frames.find(
           frame => frame.id == selectedFrameId
         );
       }
     }
     return selectedFrames;
--- a/devtools/client/debugger/src/utils/pause/scopes/getScope.js
+++ b/devtools/client/debugger/src/utils/pause/scopes/getScope.js
@@ -1,13 +1,14 @@
 /* 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/>. */
 
 // @flow
+// eslint-disable-next-line import/named
 import { objectInspector } from "devtools-reps";
 import { getBindingVariables } from "./getVariables";
 import { getFramePopVariables, getThisVariable } from "./utils";
 import { simplifyDisplayName } from "../../pause/frames";
 
 import type { Frame, Why, Scope } from "../../../types";
 
 import type { NamedValue } from "./types";