redux-devtools/packages/redux-devtools-cli
Fabrizio Vitale 7d92a5e186
[feat][monitor] Add rkt-query-inspector-monitor - feat/rtk query monitor (#750)
* chore: copy rtk-query example from toolkit

* feat(rtk-query): complete initial setup of rtk-query

* feat: complete inspector layout and add initial JSONTree setup

* fix: unintentional removal of tsconfig

* feat(search): add search logic and refactor monitor state shape

* fix: inverted monitor theme inside  devtoop-app

Othetr changes:

* simplify monitor integration

* fix: rtk monitor reducer not working in  app

* refactor(rtk-query): simplify theme config

* feat(rtk-query-monitor): add query preview tabs

* fix: wip

* refactor(examples): add rtk-query-polling to workspace

Other changes:

* docs(rtk-query-polling): add README.md

* chore(rtk-query-inspector): add demo to monorepo

Other changes:

chore: increase isWideScreen polling interval to 300

refactor: add subscription as root node in QueryPreviewSubscriptions

* feat(rtk-query): add multiple filter options

* chore(rtk-queery): rename demo build script and add SKIP_PREFLIGHT_CHECK=true

* feat(rtk-query): display status flags in QueryPreviewInfo

* chore(rtk-query): update typescript versions in rkt-inspector-monitor & its demo

* docs(rtk-query): add proper README

Other changes:

* fix examples/rtk-query-poilling

* docs(rtk-query): improve rtk-query-inspector-monitor demo gif

* docs(rtk-query): clean up demo

* fix(rtk-query): clear button not updating redux state

* docs(rtk-query): add link to rtk-query-inspector-monitor demo site

* chore(rtk-query): run prettier after prettier upgrade (55e2284)

* docs(rtk.query): clean up readme add features, todo and development section

* docs(rtk-query): fix link href

* chore(rtk-query): clean up rtk-query-imspector-monitor-demo and add post example

* feat(rtk-query): add counters on tags & subs tab buttons

* fix(rtk-query): layering issue between queryPreview tabList and select

Other changes:

* clean up demo styles

* run prettier

* fix: revert accidental changes packages/redux-devtools-serialize/tsconfig.json

* chore: change QueryComparators.fulfilledTimeStamp label

* feat(rtk-query): display api stats

* refactor: remove rtk-query-polling example from monorepo

* chore: regenerate lock file and add @types/react as monorepo devDep

* chore: display apiState

Other changes:

* fix close button overflow

* minor responsive style tweaks

* display reducerPath in query tab

* fix(rtk-query): resolve CI errors

- fix(prettier:check): unformatted file
- fix(lint:all): fix accidentallly removed .eslintignore

* chore(rtk-query): rename package to '@redux-devtools/rtk-query-monitor'

* fix(rtk-query): lint:all error

https://github.com/reduxjs/redux-devtools/runs/2869729048?check_suite_focus=true

* feat(rtk-query): add fallback message if there are no rtk-query apis

* refactor(rtk-query): move Inspector & Monitor to containers clean up typings

Other changes:

* chore: improved type coverage

* chore: do not lint packages/redux-devtools-rtk-query-monitor/demo folder

* refactor: put sort order buttons inside a component

* chore: hopefully resolve mockServiceWorker formatting issues

* fix(rtk-query): incorrect link color

Other changes:

* fix: add missing anchor property value noopener

* refactor(rtk-query): simplify sort order control

* feat(rtk-query): add timings to apiStats sections

* feat(rtk-query): add slowest and fastest in timings section

* feat(rtk-query): improve formatting of timings and display average loading time

* fix(rtk-query): rtk-query imports

* refactor(rtk-query): reduce selector computations

Other changes:

* simplify TreeView props

* feat(rtk-query): add actions tab

* refactor(rtk-query): add custom logic for TreeView shouldExpandNode

Other changes:

* feat: added duration in QueryPreviewInfo tab

* refactor: TreeView component

* chore(rtk-query): improve demo visibility on small devices

* feat(rtk-query): do not display tree node preview

Other changes:

* improve visibility of demo devTools on small devices

* tweak QueryPreviewInfo labels

* chore(rtk-query): improve responsiveness

* refactor(rtk-query): move preview to containers remove unnecessary computation

* feat(rtk-query): display median of timings

Other changes:

* improved shouldExpandNode logic of QueryPreviewActions

* tweaked mean logic

* refactor(rtk-query-monitor): conform demo setup to repo standards

* chore(rtk-query-monitor): add option to select active devtools

* chore(rtk-query-monitor): remove redux-devtools/examples/rtk-query-polling

* refactor(rtk-query): improve UI of api tab

* feat(rtk-query): add regex search

* feat(rtk-query): display mutations in queryList

* refactor(rtk-query): track all fulfilled requests using actions

Other changes:

* refactor(rtk-query): rename tally properties

* chore(rtk-query): update @redux-devtools/rtk-query-monitor dependencies

* fix(rtk-query): demo build failing caused by a typing error
2021-08-26 15:33:06 -04:00
..
app chore(cli): upgrade Electron (#719) 2021-06-06 15:18:49 -04:00
bin [feat][monitor] Add rkt-query-inspector-monitor - feat/rtk query monitor (#750) 2021-08-26 15:33:06 -04:00
src chore(*): upgrade prettier (#743) 2021-06-17 23:56:36 -04:00
test chore(*): upgrade prettier (#743) 2021-06-17 23:56:36 -04:00
.eslintignore chore(cli): convert to TypeScript (#656) 2020-10-26 01:57:34 -04:00
.eslintrc.js chore(cli): convert to TypeScript (#656) 2020-10-26 01:57:34 -04:00
CHANGELOG.md chore(*): run prettier 2021-06-10 23:42:46 -04:00
defaultDbOptions.json Upgrade knex (#553) 2020-08-01 20:09:29 -04:00
jest.config.js chore(cli): convert to TypeScript (#656) 2020-10-26 01:57:34 -04:00
LICENSE.md Merge remotedev-server 2019-01-04 00:30:48 +02:00
package.json chore(deps): update all non-major dependencies (#758) 2021-08-26 09:52:23 -04:00
README.md chore(*): move redux-devtools-app to scoped package (#693) 2020-12-22 12:02:14 -05:00
tsconfig.json chore(cli): convert to TypeScript (#656) 2020-10-26 01:57:34 -04:00

Redux DevTools Command Line Interface

Bridge for remote debugging via Redux DevTools extension, Remote Redux DevTools or RemoteDev.

Usage

Install the package globally

with npm:

npm install -g @redux-devtools/cli

or with yarn:

yarn global add @redux-devtools/cli

and start as:

redux-devtools --hostname=localhost --port=8000

Note the package is called @redux-devtools/cli not redux-devtools (the latter is a React component).

Or add in your project

with npm:

npm install --save-dev @redux-devtools/cli

or with yarn:

yarn add --dev @redux-devtools/cli

and add to package.json:

"scripts": {
  "redux-devtools": "redux-devtools --hostname=localhost --port=8000"
}

So, you can start redux-devtools server by running npm run redux-devtools.

Import in your server.js script you use for starting a development server:
var reduxDevTools = require('@redux-devtools/cli');
reduxDevTools({ hostname: 'localhost', port: 8000 });

So, you can start redux-devtools server together with your dev server.

Open Redux DevTools

You can add --open argument (or set it as electron) to open Redux DevTools as a standalone application:

redux-devtools --open

Set it as browser to open as a web app in the default browser instead:

redux-devtools --open=browser

To specify the browser:

redux-devtools --open=firefox

Connection settings

Set hostname and port to the values you want. hostname by default is localhost and port is 8000.

To use WSS, set protocol argument to https and provide key, cert and passphrase arguments.

Available options

Console argument description default value
--hostname hostname localhost
--port port 8000
--protocol protocol http
--key the key file for running an https server (--protocol must be set to 'https') -
--cert the cert file for running an https server (--protocol must be set to 'https') -
--passphrase the key passphrase for running an https server (--protocol must be set to 'https') -
--dbOptions database configuration, can be whether an object or a path (string) to json configuration file (by default it uses our ./defaultDbOptions.json file. Set migrate key to true to use our migrations file. More details bellow. -
--logLevel the socket server log level - 0=none, 1=error, 2=warn, 3=info 3
--wsEngine the socket server web socket engine - ws or uws (sc-uws) ws
--open open Redux DevTools as a standalone application or as web app. See Open Redux DevTools for details. false

Inject to React Native local server

Add in your React Native app's package.json:
"scripts": {
  "redux-devtools": "redux-devtools --hostname=localhost --port=8000 --injectserver=reactnative"
}

The injectserver value can be reactnative or macos (react-native-macos), it used reactnative by default.

Then, we can start React Native server and Redux DevTools server with one command (npm start).

Revert the injection

Add in your React Native app's package.json:

"scripts": {
  "redux-devtools-revert": "redux-devtools --revert=reactnative"
}

Or just run $(npm bin)/redux-devtools --revert.

Connect from Android device or emulator

Note that if you're using injectserver argument explained above, this step is not necessary.

If you're running an Android 5.0+ device connected via USB or an Android emulator, use adb command line tool to setup port forwarding from the device to your computer:

adb reverse tcp:8000 tcp:8000

If you're still use Android 4.0, you should use 10.0.2.2 (Genymotion: 10.0.3.2) instead of localhost in remote-redux-devtools or remotedev.

Save reports and logs

You can store reports via redux-remotedev and get them replicated with Redux DevTools extension or Remote Redux DevTools. You can get action history right in the extension just by clicking the link from a report. Open http://localhost:8000/graphql (assuming you're using localhost as host and 8000) to explore in GraphQL. Reports are posted to http://localhost:8000/. See examples in tests.

Redux DevTools server is database agnostic using knex schema. By default everything is stored in the memory using sqlite database. See defaultDbOptions.json for example of sqlite. You can replace "connection": { "filename": ":memory:" }, with your file name (instead of :memory:) to persist teh database. Here's an example for PostgreSQL:

{
  "client": "pg",
  "connection": { "user": "myuser", "password": "mypassword", "database": "mydb" },
  "debug": false,
  "migrate": true
}

Advanced

License

MIT