Compare commits

...

81 Commits

Author SHA1 Message Date
renovate[bot]
0cd341fe35
fix(deps): update all non-major dependencies (#1983)
* fix(deps): update all non-major dependencies

* Fix tests

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2026-01-15 16:27:23 -05:00
megos
62cb6ddc25
docs(extension): fix broken relative links in README (#1986) 2026-01-07 09:37:52 -05:00
renovate[bot]
ed6d65bd30
chore(deps): update dependency globals to v17 (#1985)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 09:54:37 -05:00
renovate[bot]
8f5cf1b5bc
chore(deps): update dependency storybook to ^10.1.10 (#1980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-24 21:53:55 +00:00
renovate[bot]
21d5699045
chore(deps): lock file maintenance (#1975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-24 21:42:41 +00:00
renovate[bot]
d609bfb14d
fix(deps): update all non-major dependencies (#1972)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-24 21:26:06 +00:00
renovate[bot]
b350e7bae9
fix(deps): update dependency msw to ^2.12.4 (#1968)
* fix(deps): update dependency msw to ^2.12.4

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-12-24 21:15:59 +00:00
renovate[bot]
35aa092d45
chore(deps): update actions/upload-artifact action to v6 (#1979)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-24 21:07:17 +00:00
renovate[bot]
102c21d43e
fix(deps): update dependency socketcluster-server to v20 (#1965)
* fix(deps): update dependency socketcluster-client to v20

* fix(deps): update dependency socketcluster-server to v20

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-12-24 20:56:33 +00:00
renovate[bot]
b8219c2afc
fix(deps): update dependency body-parser to ^2.2.1 (#1971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-01 15:22:57 +00:00
renovate[bot]
1e701e45cb
chore(deps): lock file maintenance (#1969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-01 15:13:05 +00:00
renovate[bot]
78ed3b1efe
fix(deps): update all non-major dependencies (#1966)
* fix(deps): update all non-major dependencies

* Format

* Updates

* Update

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-12-01 09:57:40 -05:00
renovate[bot]
fbdbb56d19
chore(deps): update actions/checkout action to v6 (#1967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 16:05:50 -05:00
renovate[bot]
c7e77652c2
fix(deps): update dependency @apollo/server to v5 (#1909)
* fix(deps): update dependency @apollo/server to v5

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-20 14:53:56 +00:00
renovate[bot]
558e2ecfd3
fix(deps): update dependency msw to ^2.12.2 (#1958)
* fix(deps): update dependency msw to ^2.12.2

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-20 14:42:37 +00:00
renovate[bot]
d0e04165ab
chore(deps): lock file maintenance (#1961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 14:20:24 +00:00
renovate[bot]
aebfca4f93
fix(deps): update all non-major dependencies (#1957)
* fix(deps): update all non-major dependencies

* Fix

* Fix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-20 14:02:42 +00:00
renovate[bot]
56de415db0
fix(deps): update dependency open to v11 (#1959)
* fix(deps): update dependency open to v11

* Update Node.js engine requirement to version 20

* Update @redux-devtools/cli to major version

Updated @redux-devtools/cli dependency version to major and required Node.js 20.

* Format

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-15 13:00:49 +00:00
renovate[bot]
36f1f36471
fix(deps): update dependency msw to ^2.12.1 (#1956)
* fix(deps): update dependency msw to ^2.12.1

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-12 15:03:38 +00:00
renovate[bot]
1039d6c827
chore(deps): lock file maintenance (#1955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 14:27:26 +00:00
renovate[bot]
ebaf7cf102
fix(deps): update all non-major dependencies (#1953)
* fix(deps): update all non-major dependencies

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-11-12 08:50:25 -05:00
renovate[bot]
a4343c3116
fix(deps): update rjsf monorepo to v6 (major) (#1954)
* fix(deps): update rjsf monorepo to v6

* Update snapshots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-31 23:55:00 +00:00
renovate[bot]
75cafed485
chore(deps): update storybook monorepo to v10 (major) (#1951)
* chore(deps): update storybook monorepo to v10

* ESM updates

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-30 14:31:34 -04:00
renovate[bot]
a663401e42
chore(deps): update dependency vite to ^7.1.12 (#1952)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 15:18:37 +00:00
renovate[bot]
60a027e016
chore(deps): lock file maintenance (#1942)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 10:32:34 -04:00
renovate[bot]
85e0eb9a67
fix(deps): update all non-major dependencies (#1941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 10:14:30 -04:00
renovate[bot]
8e6014f9d3
fix(deps): update dependency msw to ^2.11.6 (#1943)
* fix(deps): update dependency msw to ^2.11.6

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-30 14:02:39 +00:00
renovate[bot]
70c98a0c05
chore(deps): update dependency @types/node to v24 (#1949)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 11:44:48 -04:00
renovate[bot]
ebaf3e0516
chore(deps): update actions/upload-artifact action to v5 (#1948)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 11:06:26 -04:00
renovate[bot]
10f112c0ee
chore(deps): update dependency vite to ^7.1.10 (#1940)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-14 15:11:24 +00:00
renovate[bot]
ca3782c545
chore(deps): update dependency eslint-plugin-react-hooks to v7 (#1937)
* chore(deps): update dependency eslint-plugin-react-hooks to v7

* Update

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-14 14:58:12 +00:00
renovate[bot]
9d4924ef1d
chore(deps): update actions/setup-node action to v6 (#1939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-14 14:13:52 +00:00
renovate[bot]
16087352e1
fix(deps): update dependency msw to ^2.11.5 (#1933)
* fix(deps): update dependency msw to ^2.11.5

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-14 10:05:45 -04:00
renovate[bot]
f80b555457
chore(deps): lock file maintenance (#1935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-14 09:36:22 -04:00
renovate[bot]
c7a9b746d5
fix(deps): update all non-major dependencies (#1929)
* fix(deps): update all non-major dependencies

* isolatedModules

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-10-14 09:03:32 -04:00
renovate[bot]
f0330162e6
chore(deps): update dependency @types/uuid to v11 (#1930)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-16 22:18:55 +00:00
github-actions[bot]
531aa338e7
Version Packages (#1884)
* Version Packages

* Trigger build

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-15 15:52:06 +00:00
renovate[bot]
8308db6832
fix(deps): update dependency msw to ^2.11.2 (#1905)
* fix(deps): update dependency msw to ^2.11.2

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-15 15:25:27 +00:00
renovate[bot]
4e44c2ca50
fix(deps): update dependency uuid to v13 (#1926)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-15 15:05:51 +00:00
renovate[bot]
4e81dc99c4
chore(deps): lock file maintenance (#1925)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 14:52:46 +00:00
renovate[bot]
e9e6b33a6d
chore(deps): update all non-major dependencies to ^9.1.6 (#1928)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-15 14:26:00 +00:00
renovate[bot]
20883e5bdf
fix(deps): update all non-major dependencies (#1918)
* fix(deps): update all non-major dependencies

* Update non-major dependencies in changeset

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-15 14:03:16 +00:00
renovate[bot]
0e9528ea37
chore(deps): update dependency vite to v7.1.5 [security] (#1927)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 17:48:00 -04:00
renovate[bot]
e327727f91
fix(deps): update dependency uuid to v12 (#1924)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:19:16 -04:00
renovate[bot]
4a616983aa
chore(deps): update actions/setup-node action to v5 (#1922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-04 08:35:02 -04:00
renovate[bot]
13e65e0f73
chore(deps): lock file maintenance (#1904)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-01 16:26:37 +00:00
renovate[bot]
c3e35815d8
chore(deps): update all non-major dependencies (#1917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-01 12:18:56 -04:00
renovate[bot]
b1e2d4bd58
fix(deps): update all non-major dependencies (#1901)
* fix(deps): update all non-major dependencies

* Update snapshots

* Update snpashots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-09-01 11:57:43 -04:00
renovate[bot]
68f82b6994
chore(deps): update actions/checkout action to v5 (#1914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-11 12:48:53 -04:00
renovate[bot]
30308f54ab
chore(deps): update dependency cross-env to v10 (#1910)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-08-08 01:05:33 +00:00
renovate[bot]
5b28b69261
chore(deps): update dependency typescript to ~5.9.2 (#1912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-07 20:57:36 -04:00
Nathan Bierema
7a48268a74
Dedupe pnpm (#1903) 2025-06-28 14:10:19 +00:00
renovate[bot]
fa20f09fc1
chore(deps): update dependency vite to v7 (#1899)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-24 13:06:49 +00:00
renovate[bot]
1e0d09251b
chore(deps): lock file maintenance (#1898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-24 12:57:06 +00:00
renovate[bot]
2b7e1b890a
fix(deps): update all non-major dependencies (#1894)
* fix(deps): update all non-major dependencies

* Format

* Dedupe

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-06-24 08:46:36 -04:00
renovate[bot]
119864cd95
chore(deps): update dependency eslint-plugin-jest to v29 (#1896)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 09:23:54 -04:00
renovate[bot]
dfa6c937c3
chore(deps): update jest monorepo to v30 (major) (#1893)
* chore(deps): update jest monorepo to v30

* Update snapshot

* Update

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-06-17 20:20:57 -04:00
renovate[bot]
8b554db5bf
chore(deps): lock file maintenance (#1886)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 00:06:25 +00:00
renovate[bot]
842419b802
fix(deps): update all non-major dependencies (#1872)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-17 23:53:45 +00:00
renovate[bot]
1e3fb5e27a
fix(deps): update dependency express to v5 (#1779)
* fix(deps): update dependency express to v5

* Update

* Lint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-06-17 23:43:28 +00:00
renovate[bot]
da5e9f0c1a
fix(deps): update dependency msw to ^2.10.2 (#1888)
* fix(deps): update dependency msw to ^2.10.2

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-06-17 23:32:57 +00:00
Nathan Bierema
54c40135e5
Use Chrome for Testing for Selenium testing (#1892)
* Use Chrome for Testing to fix Selenium tests

* Unintentional
2025-06-17 23:03:29 +00:00
Nathan Bierema
61632768a7
Replace styled-components with Emotion (#1883)
* Replace styled-components with Emotion in ui

* react-dock

* Remainder

* Fix

* Format

* Update snapshots

* Create bright-sheep-joke.md
2025-06-01 13:59:13 +00:00
renovate[bot]
585d6b9220
fix(deps): update dependency @chakra-ui/react to v3 (#1802)
* fix(deps): update dependency @chakra-ui/react to v3

* Remove unnecessary packages

* Add snippets

* Updates

* Remove unused

* Remove ColorModeProvider?

* Fix

* Fix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-31 18:33:19 +00:00
renovate[bot]
6468c48b75
fix(deps): update dependency react-router-dom to v7 (#1881)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-31 16:10:19 +00:00
renovate[bot]
41f3c1a7b6
fix(deps): update dependency framer-motion to v12 (#1880)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-31 15:59:03 +00:00
renovate[bot]
c82e511929
fix(deps): update react monorepo (major) (#1801)
* fix(deps): update react monorepo

* Updates

* Update

* Update

* Update

* Updates

* Updates

* Update

* Remove usages of react-test-renderer

* Fix

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-31 14:34:45 +00:00
renovate[bot]
832f4dc195
chore(deps): update storybook monorepo to v9 (major) (#1876)
* chore(deps): update storybook monorepo to v9

* Updates

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-31 13:24:58 +00:00
renovate[bot]
4b35476610
fix(deps): update dependency msw to ^2.8.7 (#1874)
* fix(deps): update dependency msw to ^2.8.7

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-31 12:52:38 +00:00
renovate[bot]
7873dd23ae
chore(deps): update pnpm to v10 (#1868)
* chore(deps): update pnpm to v10

* Build?

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-31 12:34:05 +00:00
renovate[bot]
9444ca7e87
fix(deps): update dnd-kit monorepo (#1871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-23 23:09:17 +00:00
renovate[bot]
b2f01026cb
fix(deps): update dependency uuid to v11 (#1870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 22:54:20 +00:00
renovate[bot]
04c234dd49
fix(deps): update dependency color to v5 (#1869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-23 22:28:15 +00:00
renovate[bot]
c394803622
chore(deps): update dependency stylelint-config-standard to v38 (#1867)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 18:02:31 -04:00
renovate[bot]
fd56ac7d92
chore(deps): update dependency globals to v16 (#1866)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 21:23:59 +00:00
renovate[bot]
65dce0864e
chore(deps): update dependency copy-webpack-plugin to v13 (#1865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 21:13:20 +00:00
renovate[bot]
e02cfd327c
fix(deps): update dependency msw to ^2.8.4 (#1856)
* fix(deps): update dependency msw to ^2.8.4

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-23 21:02:42 +00:00
renovate[bot]
9ddcef672f
chore(deps): lock file maintenance (#1864)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-23 20:50:40 +00:00
renovate[bot]
3f52f16473
fix(deps): update all non-major dependencies (#1861)
* fix(deps): update all non-major dependencies

* Dedupe

* Update

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-23 20:31:45 +00:00
renovate[bot]
9f12777827
chore(deps): lock file maintenance (#1860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-08 02:45:30 +00:00
renovate[bot]
5dc8611c38
fix(deps): update all non-major dependencies (#1843)
* fix(deps): update all non-major dependencies

* Fix lint

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2025-05-08 02:27:02 +00:00
185 changed files with 8807 additions and 8336 deletions

View File

@ -0,0 +1,5 @@
---
'@redux-devtools/cli': major
---
Require Node.js 20

View File

@ -11,9 +11,9 @@ jobs:
runs-on: 'ubuntu-22.04'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 'lts/*'
cache: 'pnpm'

View File

@ -13,7 +13,7 @@ jobs:
runs-on: 'ubuntu-22.04'
steps:
- name: Checkout Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
fetch-depth: 0
@ -21,7 +21,7 @@ jobs:
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 'lts/*'
cache: 'pnpm'
@ -40,19 +40,19 @@ jobs:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Archive Chrome Extension
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: chrome
path: extension/chrome/dist
- name: Archive Edge Extension
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: edge
path: extension/edge/dist
- name: Archive Firefox Extension
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: firefox
path: extension/firefox/dist

View File

@ -1,4 +1,5 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import eslintConfigPrettier from 'eslint-config-prettier';
export default [eslint.configs.recommended, eslintConfigPrettier];
export default defineConfig([eslint.configs.recommended, eslintConfigPrettier]);

View File

@ -1,11 +1,11 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import react from 'eslint-plugin-react';
import { fixupPluginRules } from '@eslint/compat';
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
import reactHooks from 'eslint-plugin-react-hooks';
import jest from 'eslint-plugin-jest';
import eslintConfigPrettier from 'eslint-config-prettier';
export default [
export default defineConfig([
{
files: ['test/**/*.js', 'test/**/*.jsx'],
...eslint.configs.recommended,
@ -24,9 +24,7 @@ export default [
},
{
files: ['test/**/*.js', 'test/**/*.jsx'],
plugins: {
'react-hooks': fixupPluginRules(eslintPluginReactHooks),
},
...reactHooks.configs.flat.recommended,
},
{
files: ['test/**/*.js', 'test/**/*.jsx'],
@ -40,4 +38,4 @@ export default [
files: ['test/**/*.js', 'test/**/*.jsx'],
...eslintConfigPrettier,
},
];
]);

View File

@ -1,55 +1,57 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import eslintConfigPrettier from 'eslint-config-prettier';
export default (tsconfigRootDir, files = ['**/*.ts'], project = true) => [
{
files,
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files,
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files,
...config,
})),
{
files,
languageOptions: {
parserOptions: {
project,
tsconfigRootDir,
export default (tsconfigRootDir, files = ['**/*.ts'], project = true) =>
defineConfig([
{
files,
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files,
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files,
...config,
})),
{
files,
languageOptions: {
parserOptions: {
project,
tsconfigRootDir,
},
},
},
},
{
files,
...eslintConfigPrettier,
},
{
files,
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
{
files,
...eslintConfigPrettier,
},
},
];
{
files,
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
},
},
]);

View File

@ -1,64 +1,66 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import jest from 'eslint-plugin-jest';
import eslintConfigPrettier from 'eslint-config-prettier';
export default (tsconfigRootDir) => [
{
files: ['test/**/*.ts'],
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files: ['test/**/*.ts'],
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files: ['test/**/*.ts'],
...config,
})),
{
files: ['test/**/*.ts'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.test.json'],
tsconfigRootDir,
export default (tsconfigRootDir) =>
defineConfig([
{
files: ['test/**/*.ts'],
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files: ['test/**/*.ts'],
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files: ['test/**/*.ts'],
...config,
})),
{
files: ['test/**/*.ts'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.test.json'],
tsconfigRootDir,
},
},
},
},
{
files: ['test/**/*.ts'],
...jest.configs['flat/recommended'],
},
{
files: ['test/**/*.ts'],
...jest.configs['jest/style'],
},
{
files: ['test/**/*.ts'],
...eslintConfigPrettier,
},
{
files: ['test/**/*.ts'],
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
{
files: ['test/**/*.ts'],
...jest.configs['flat/recommended'],
},
},
];
{
files: ['test/**/*.ts'],
...jest.configs['jest/style'],
},
{
files: ['test/**/*.ts'],
...eslintConfigPrettier,
},
{
files: ['test/**/*.ts'],
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
},
},
]);

View File

@ -1,89 +1,88 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import react from 'eslint-plugin-react';
import { fixupPluginRules } from '@eslint/compat';
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
import reactHooks from 'eslint-plugin-react-hooks';
import eslintConfigPrettier from 'eslint-config-prettier';
export default (
tsconfigRootDir,
files = ['**/*.ts', '**/*.tsx'],
project = true,
) => [
{
files,
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files,
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files,
...config,
})),
{
files,
languageOptions: {
parserOptions: {
project,
tsconfigRootDir,
},
) =>
defineConfig([
{
files,
...eslint.configs.recommended,
},
},
{
files,
...react.configs.flat.recommended,
},
{
files,
settings: {
react: {
version: 'detect',
},
},
},
{
files,
plugins: {
'react-hooks': fixupPluginRules(eslintPluginReactHooks),
},
},
{
files,
...eslintConfigPrettier,
},
{
files,
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-misused-promises': [
'error',
{
checksVoidReturn: {
attributes: false,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files,
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files,
...config,
})),
{
files,
languageOptions: {
parserOptions: {
project,
tsconfigRootDir,
},
],
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
'react/prop-types': 'off',
},
},
},
];
{
files,
...react.configs.flat.recommended,
},
{
files,
settings: {
react: {
version: 'detect',
},
},
},
{
files,
...reactHooks.configs.flat.recommended,
},
{
files,
...eslintConfigPrettier,
},
{
files,
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-misused-promises': [
'error',
{
checksVoidReturn: {
attributes: false,
},
},
],
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
'react/prop-types': 'off',
},
},
]);

View File

@ -1,85 +1,84 @@
import { defineConfig } from 'eslint/config';
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import react from 'eslint-plugin-react';
import { fixupPluginRules } from '@eslint/compat';
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
import reactHooks from 'eslint-plugin-react-hooks';
import jest from 'eslint-plugin-jest';
import eslintConfigPrettier from 'eslint-config-prettier';
export default (tsconfigRootDir) => [
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files: ['test/**/*.ts', 'test/**/*.tsx'],
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files: ['test/**/*.ts', 'test/**/*.tsx'],
...config,
})),
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.test.json'],
tsconfigRootDir,
export default (tsconfigRootDir) =>
defineConfig([
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...eslint.configs.recommended,
},
...tseslint.configs.recommendedTypeChecked.map((config) => ({
files: ['test/**/*.ts', 'test/**/*.tsx'],
...config,
})),
...tseslint.configs.stylisticTypeChecked.map((config) => ({
files: ['test/**/*.ts', 'test/**/*.tsx'],
...config,
})),
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.test.json'],
tsconfigRootDir,
},
},
},
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...react.configs.flat.recommended,
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
settings: {
react: {
version: 'detect',
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...react.configs.flat.recommended,
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
settings: {
react: {
version: 'detect',
},
},
},
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
plugins: {
'react-hooks': fixupPluginRules(eslintPluginReactHooks),
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...reactHooks.configs.flat.recommended,
},
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...jest.configs['flat/recommended'],
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...jest.configs['jest/style'],
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...eslintConfigPrettier,
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...jest.configs['flat/recommended'],
},
},
];
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...jest.configs['jest/style'],
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
...eslintConfigPrettier,
},
{
files: ['test/**/*.ts', 'test/**/*.tsx'],
rules: {
'@typescript-eslint/no-unsafe-return': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/prefer-optional-chain': 'off',
'@typescript-eslint/no-base-to-string': 'off',
'@typescript-eslint/consistent-indexed-object-style': 'off',
'@typescript-eslint/prefer-nullish-coalescing': 'off',
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-for-of': 'off',
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
'@typescript-eslint/class-literal-property-style': 'off',
'@typescript-eslint/no-redundant-type-constituents': 'off',
'@typescript-eslint/prefer-string-starts-ends-with': 'off',
'@typescript-eslint/no-duplicate-type-constituents': 'off',
'@typescript-eslint/array-type': 'off',
'@typescript-eslint/prefer-function-type': 'off',
},
},
]);

View File

@ -1,5 +1,14 @@
# remotedev-redux-devtools-extension
## 3.2.11
### Patch Changes
- Updated dependencies [6163276]
- @redux-devtools/app@7.0.0
- @redux-devtools/slider-monitor@6.0.0
- @redux-devtools/ui@2.0.0
## 3.2.10
### Patch Changes

View File

@ -57,7 +57,7 @@ const composeEnhancers =
compose;
```
> For TypeScript use [`redux-devtools-extension` npm package](#13-use-redux-devtoolsextension-package-from-npm), which contains all the definitions, or just use `(window as any)` (see [Recipes](/docs/Recipes.md#using-in-a-typescript-project) for an example).
> For TypeScript use [`redux-devtools-extension` npm package](#13-use-redux-devtoolsextension-package-from-npm), which contains all the definitions, or just use `(window as any)` (see [Recipes](docs/Recipes.md#using-in-a-typescript-project) for an example).
```js
const composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
@ -228,7 +228,7 @@ See [integrations](docs/Integrations.md) and [the blog post](https://medium.com/
- [Methods (advanced API)](docs/API/Methods.md)
- [FAQ](docs/FAQ.md)
- Features
- [Trace actions calls](/docs/Features/Trace.md)
- [Trace actions calls](docs/Features/Trace.md)
- [Troubleshooting](docs/Troubleshooting.md)
- [Articles](docs/Articles.md)
- [Videos](docs/Videos.md)

View File

@ -51,7 +51,6 @@ _number_ - maximum stack trace frames to be stored (in case `trace` option was p
_boolean_ or _object_ which contains:
- **options** `object or boolean`:
- `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).
- `false` - will handle also circular references.
- `true` - will handle also date, regex, undefined, primitives, error objects, symbols, maps, sets and functions.

View File

@ -6,6 +6,6 @@ module.exports = {
'\\.css$': '<rootDir>/test/__mocks__/styleMock.js',
},
transformIgnorePatterns: [
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|lodash-es|nanoid|robust-predicates|uuid)',
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|@x0k/json-schema-merge|chalk|color|d3|dateformat|delaunator|internmap|jsondiffpatch|js-tokens|lodash-es|nanoid|robust-predicates|uuid)',
],
};

View File

@ -1,7 +1,7 @@
{
"private": true,
"name": "remotedev-redux-devtools-extension",
"version": "3.2.10",
"version": "3.2.11",
"description": "Redux Developer Tools for debugging application state changes.",
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/extension",
"license": "MIT",
@ -16,7 +16,7 @@
"build:examples": "babel-node examples/buildAll.js",
"clean": "rimraf dist && rimraf chrome/dist && rimraf edge/dist && rimraf firefox/dist",
"test:app": "cross-env BABEL_ENV=test jest test/app",
"test:chrome": "jest test/chrome",
"test:chrome": "cross-env SE_FORCE_BROWSER_DOWNLOAD=true jest test/chrome",
"build:test:electron:fixture": "webpack --config test/electron/fixture/webpack.config.js",
"test:electron": "pnpm run build:test:electron:fixture && jest test/electron",
"test": "pnpm run test:app && pnpm run test:chrome && pnpm run test:electron",
@ -25,6 +25,7 @@
},
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/app": "workspace:^",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/instrument": "workspace:^",
@ -32,50 +33,48 @@
"@redux-devtools/slider-monitor": "workspace:^",
"@redux-devtools/ui": "workspace:^",
"@redux-devtools/utils": "workspace:^",
"@reduxjs/toolkit": "^2.6.0",
"@reduxjs/toolkit": "^2.11.2",
"@types/jsan": "^3.1.5",
"jsan": "^3.1.14",
"localforage": "^1.10.0",
"lodash-es": "^4.17.21",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"lodash-es": "^4.17.22",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0",
"react-is": "^18.3.1",
"react-is": "^19.2.3",
"react-json-tree": "workspace:^",
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"redux-persist": "^6.0.0",
"styled-components": "^5.3.11"
"redux-persist": "^6.0.0"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/register": "^7.25.9",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.2.0",
"@types/chrome": "^0.0.308",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@babel/register": "^7.28.6",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@types/chrome": "^0.1.33",
"@types/lodash-es": "^4.17.12",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/styled-components": "^5.1.34",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"chromedriver": "^126.0.5",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"electron": "^31.7.7",
"esbuild": "^0.25.0",
"globals": "^15.15.0",
"immutable": "^5.0.3",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"esbuild": "^0.27.2",
"globals": "^17.0.0",
"immutable": "^5.1.4",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"pug": "^3.0.3",
"rimraf": "^6.0.1",
"selenium-webdriver": "^4.29.0",
"rimraf": "^6.1.2",
"selenium-webdriver": "^4.39.0",
"sinon-chrome": "^3.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1"
}
}

View File

@ -6,7 +6,11 @@ export function getReport(
tabId: string | number,
instanceId: number,
) {
chrome.storage.local.get(['s:hostname', 's:port', 's:secure'], (options) => {
chrome.storage.local.get<{
's:hostname': string | undefined;
's:port': string | undefined;
's:secure': string | undefined;
}>(['s:hostname', 's:port', 's:secure'], (options) => {
if (!options['s:hostname'] || !options['s:port']) return;
const url = `${options['s:secure'] ? 'https' : 'http'}://${
options['s:hostname']

View File

@ -472,7 +472,7 @@ function messaging<S, A extends Action<string>>(
}
if (!request.message) return;
const reducerError = getReducerError();
chrome.notifications.create('app-error', {
void chrome.notifications.create('app-error', {
type: 'basic',
title: reducerError
? 'An error occurred in the reducer'
@ -628,7 +628,7 @@ chrome.runtime.onMessage.addListener(messaging);
chrome.runtime.onMessageExternal.addListener(messaging);
chrome.notifications.onClicked.addListener((id) => {
chrome.notifications.clear(id);
void chrome.notifications.clear(id);
openDevToolsWindow('devtools-window');
});

View File

@ -75,7 +75,7 @@ const migrateOldOptions = (oldOptions: OldOrNewOptions): Options => ({
export const getOptions = (callback: (options: Options) => void) => {
if (options) callback(options);
else {
chrome.storage.sync.get(
chrome.storage.sync.get<OldOrNewOptions>(
{
useEditor: 0,
editor: '',
@ -92,7 +92,7 @@ export const getOptions = (callback: (options: Options) => void) => {
showContextMenus: true,
},
function (items) {
options = migrateOldOptions(items as OldOrNewOptions);
options = migrateOldOptions(items);
callback(options);
},
);

View File

@ -1,19 +1,18 @@
{
"private": true,
"devDependencies": {
"@babel/core": "^7.26.9",
"@changesets/cli": "^2.28.1",
"@eslint/compat": "^1.2.7",
"@eslint/js": "^9.21.0",
"eslint": "^9.21.0",
"eslint-config-prettier": "^10.0.2",
"eslint-plugin-jest": "^28.11.0",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^4.6.2",
"jest": "^29.7.0",
"prettier": "3.5.3",
"typescript": "~5.8.2",
"typescript-eslint": "^8.26.0"
"@babel/core": "^7.28.6",
"@changesets/cli": "^2.29.8",
"@eslint/js": "^9.39.2",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-jest": "^29.12.1",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"jest": "^30.2.0",
"prettier": "3.8.0",
"typescript": "~5.9.3",
"typescript-eslint": "^8.53.0"
},
"scripts": {
"format": "prettier --write .",
@ -24,5 +23,5 @@
"clean:all": "pnpm --recursive run clean",
"release": "pnpm build:all && pnpm publish -r"
},
"packageManager": "pnpm@9.15.6"
"packageManager": "pnpm@10.28.0"
}

View File

@ -17,7 +17,6 @@
### Major Changes
- b323f77d: Upgrade D3
- Remove UMD build.
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
- The shape of the argument passed to the `onClickText` option has been updated.

View File

@ -29,18 +29,18 @@
"map2tree": "workspace:^"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-typescript": "^7.26.0",
"@types/node": "^22.13.9",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-typescript": "^7.28.5",
"@types/node": "^24.10.9",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"cross-env": "^10.1.0",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
}
}

View File

@ -42,11 +42,11 @@
"d3tooltip": "workspace:^",
"deepmerge": "^4.3.1",
"map2tree": "workspace:^",
"ramda": "^0.30.1"
"ramda": "^0.32.0"
},
"devDependencies": {
"@types/ramda": "^0.30.2",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"@types/ramda": "^0.31.1",
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
}
}

View File

@ -17,7 +17,6 @@
### Major Changes
- b323f77d: Upgrade D3
- Remove UMD build.
- Upgrade d3 peer dependency from v3 to v7.
- Remove `attr` configuration method.

View File

@ -35,8 +35,8 @@
"devDependencies": {
"@types/d3": "^7.4.3",
"d3": "^7.9.0",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@types/d3": "^7.4.3",

View File

@ -37,15 +37,15 @@
"prepublish": "pnpm run lint && pnpm run test"
},
"dependencies": {
"lodash-es": "^4.17.21"
"lodash-es": "^4.17.22"
},
"devDependencies": {
"@types/jest": "^29.5.14",
"@types/jest": "^30.0.0",
"@types/lodash-es": "^4.17.12",
"immutable": "^5.0.3",
"jest": "^29.7.0",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"immutable": "^5.1.4",
"jest": "^30.2.0",
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
}
}

View File

@ -36,19 +36,19 @@
"prepublish": "pnpm run lint && pnpm run test"
},
"dependencies": {
"@types/lodash": "^4.17.16",
"color": "^4.2.3",
"csstype": "^3.1.3",
"lodash-es": "^4.17.21"
"@types/lodash": "^4.17.23",
"color": "^5.0.3",
"csstype": "^3.2.3",
"lodash-es": "^4.17.22"
},
"devDependencies": {
"@types/color": "^4.2.0",
"@types/jest": "^29.5.14",
"@types/jest": "^30.0.0",
"@types/lodash-es": "^4.17.12",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
}
}

View File

@ -10,31 +10,30 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
"react": "^18.3.1",
"react-bootstrap": "^2.10.9",
"@emotion/styled": "^11.14.1",
"react": "^19.2.3",
"react-bootstrap": "^2.10.10",
"react-dock": "workspace:^",
"react-dom": "^18.3.1",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0",
"react-is": "^18.3.1",
"styled-components": "^5.3.11"
"react-is": "^19.2.3"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/styled-components": "^5.1.34",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"cross-env": "^10.1.0",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
}
}

View File

@ -2,7 +2,7 @@ import React, { Component } from 'react';
import Button from 'react-bootstrap/Button';
import Form from 'react-bootstrap/Form';
import { BsX } from 'react-icons/bs';
import styled from 'styled-components';
import styled from '@emotion/styled';
import { Dock } from 'react-dock';

View File

@ -1,11 +1,9 @@
import eslintJs from '../../eslint.js.config.base.mjs';
import eslintTsReact from '../../eslint.ts.react.config.base.mjs';
import eslintTsReactJest from '../../eslint.ts.react.jest.config.base.mjs';
export default [
...eslintJs,
...eslintTsReact(import.meta.dirname),
...eslintTsReactJest(import.meta.dirname),
{
ignores: ['demo', 'lib'],
},

View File

@ -1,13 +0,0 @@
module.exports = {
testEnvironment: 'jsdom',
extensionsToTreatAsEsm: ['.ts', '.tsx'],
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
},
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{ tsconfig: 'tsconfig.test.json', useESM: true },
],
},
};

View File

@ -29,27 +29,20 @@
"scripts": {
"build": "tsc",
"clean": "rimraf lib",
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
"lint": "eslint .",
"type-check": "tsc --noEmit",
"prepack": "pnpm run clean && pnpm run build",
"prepublish": "pnpm run lint && pnpm run test"
"prepublish": "pnpm run lint"
},
"dependencies": {
"@types/lodash-es": "^4.17.12",
"lodash-es": "^4.17.21"
"lodash-es": "^4.17.22"
},
"devDependencies": {
"@types/jest": "^29.5.14",
"@types/react": "^18.3.18",
"@types/react-test-renderer": "^18.3.1",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"react": "^18.3.1",
"react-test-renderer": "^18.3.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"@types/react": "^19.2.8",
"react": "^19.2.3",
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",

View File

@ -228,12 +228,12 @@ interface Props {
dockHiddenStyle?: React.CSSProperties | null;
duration: number;
children?:
| React.FunctionComponent<{
| ((params: {
position: 'left' | 'right' | 'top' | 'bottom';
isResizing: boolean | undefined;
size: number;
isVisible: boolean | undefined;
}>
}) => ReactNode)
| ReactNode;
}
@ -363,14 +363,7 @@ export default class Dock extends Component<Props, State> {
/>
<div style={styles.dockContent}>
{typeof children === 'function'
? (
children as React.FunctionComponent<{
position: 'left' | 'right' | 'top' | 'bottom';
isResizing: boolean | undefined;
size: number;
isVisible: boolean | undefined;
}>
)({
? children({
position,
isResizing,
size,

View File

@ -39,7 +39,8 @@ const prefixes = ['Moz', 'Webkit', 'ms', 'O'];
function prefixProp<Value>(key: string, value: Value) {
return prefixes.reduce<{ [key: string]: Value }>(
(obj, pre) => (
(obj[pre + key[0].toUpperCase() + key.substr(1)] = value), obj
(obj[pre + key[0].toUpperCase() + key.substr(1)] = value),
obj
),
{},
);

View File

@ -1,23 +0,0 @@
import React from 'react';
import TestRenderer from 'react-test-renderer/shallow';
import Dock from '../src/Dock.js';
describe('Dock component', function () {
it('should have shallow rendering', function () {
const renderer = TestRenderer.createRenderer();
const DockEl = <Dock />;
renderer.render(DockEl);
const result = renderer.getRenderOutput();
expect(DockEl.props).toEqual({
position: 'left',
zIndex: 99999999,
fluid: true,
defaultSize: 0.3,
dimMode: 'opaque',
duration: 200,
});
expect(result.type).toBe('div');
});
});

View File

@ -22,7 +22,6 @@
### Major Changes
- 81926f32: Remove UNSAFE method from react-json-tree
- Replace `shouldExpandNode` with `shouldExpandNodeInitially`. This function is now only called when a node in the tree is first rendered, when before it would update the expanded state of the node if the results of calling `shouldExpandNode` changed between renders. There is no way to replicate the old behavior exactly, but the new behavior is the intended behavior for the use cases within Redux DevTools. Please open an issue if you need a way to programatically control the expanded state of nodes.
- Bump the minimum React version from `16.3.0` to `16.8.0` so that `react-json-tree` can use hooks.
- Tightened TypeScript prop types to use `unknown` instead of `any` where possible and make the key path array `readonly`.

View File

@ -19,28 +19,28 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
"immutable": "^5.0.3",
"react": "^18.3.1",
"immutable": "^5.1.4",
"react": "^19.2.3",
"react-base16-styling": "workspace:^",
"react-dom": "^18.3.1",
"react-dom": "^19.2.3",
"react-json-tree": "workspace:^"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"cross-env": "^10.1.0",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
}
}

View File

@ -40,19 +40,17 @@
"prepublish": "pnpm run lint && pnpm run test"
},
"dependencies": {
"@types/lodash": "^4.17.16",
"@types/lodash": "^4.17.23",
"react-base16-styling": "workspace:^"
},
"devDependencies": {
"@types/jest": "^29.5.14",
"@types/react": "^18.3.18",
"@types/react-test-renderer": "^18.3.1",
"jest": "^29.7.0",
"react": "^18.3.1",
"react-test-renderer": "^18.3.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"@types/jest": "^30.0.0",
"@types/react": "^19.2.8",
"jest": "^30.2.0",
"react": "^19.2.3",
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",

View File

@ -1,22 +0,0 @@
import React from 'react';
import TestRenderer from 'react-test-renderer/shallow';
import { JSONTree } from '../src/index.js';
import JSONNode from '../src/JSONNode.js';
const BASIC_DATA = { a: 1, b: 'c' };
function render(component: React.ReactElement) {
const renderer = TestRenderer.createRenderer();
renderer.render(component);
return renderer.getRenderOutput();
}
describe('JSONTree', () => {
it('should render basic tree', () => {
const result = render(<JSONTree data={BASIC_DATA} />);
expect(result.type).toBe('ul');
expect(result.props.children.type.name).toBe(JSONNode.name);
});
});

View File

@ -1,5 +1,21 @@
# @redux-devtools/app-core
## 2.0.0
### Major Changes
- 6163276: Replace styled-components with Emotion
### Patch Changes
- Updated dependencies [6163276]
- Updated dependencies [20883e5]
- @redux-devtools/inspector-monitor-test-tab@5.0.0
- @redux-devtools/rtk-query-monitor@6.0.0
- @redux-devtools/slider-monitor@6.0.0
- @redux-devtools/ui@2.0.0
- @redux-devtools/inspector-monitor@6.1.2
## 1.1.2
### Patch Changes

View File

@ -10,6 +10,6 @@ module.exports = {
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
},
transformIgnorePatterns: [
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|d3|dateformat|delaunator|internmap|jsondiffpatch|lodash-es|nanoid|robust-predicates|uuid)',
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|@x0k/json-schema-merge|chalk|color|d3|dateformat|delaunator|internmap|jsondiffpatch|js-tokens|lodash-es|nanoid|robust-predicates|uuid)',
],
};

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/app-core",
"version": "1.1.2",
"version": "2.0.0",
"description": "Redux DevTools app core",
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app-core",
"bugs": {
@ -35,7 +35,7 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@redux-devtools/chart-monitor": "workspace:^",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/inspector-monitor": "workspace:^",
@ -48,56 +48,54 @@
"d3-state-visualizer": "workspace:^",
"javascript-stringify": "^2.1.0",
"jsan": "^3.1.14",
"jsondiffpatch": "^0.6.0",
"jsondiffpatch": "^0.7.3",
"react-icons": "^5.5.0",
"react-is": "^18.3.1"
"react-is": "^19.2.3"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/react": "^11.14.0",
"@reduxjs/toolkit": "^2.6.0",
"@rjsf/core": "^5.24.3",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.2.0",
"@types/jest": "^29.5.14",
"@emotion/styled": "^11.14.1",
"@reduxjs/toolkit": "^2.11.2",
"@rjsf/core": "^6.2.4",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@types/jest": "^30.0.0",
"@types/jsan": "^3.1.5",
"@types/json-schema": "^7.0.15",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/styled-components": "^5.1.34",
"cross-env": "^7.0.3",
"esbuild": "^0.25.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"cross-env": "^10.1.0",
"esbuild": "^0.27.2",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"redux-persist": "^6.0.0",
"rimraf": "^6.0.1",
"styled-components": "^5.3.11",
"ts-jest": "^29.2.6",
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
"typescript": "~5.8.2"
"typescript": "~5.9.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/styled-components": "^5.1.34",
"react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-redux": "^8.0.0 || ^9.0.0",
"redux": "^4.0.0 || ^5.0.0",
"redux-persist": "^6.0.0",
"styled-components": "^5.3.11"
"redux-persist": "^6.0.0"
}
}

View File

@ -1,5 +1,5 @@
import React, { Component } from 'react';
import { withTheme } from 'styled-components';
import { withTheme } from '@emotion/react';
import { LiftedAction, LiftedState } from '@redux-devtools/core';
import { Action } from 'redux';
import getMonitor from '../utils/getMonitor';

View File

@ -1,8 +1,14 @@
// Based on https://github.com/YoruNoHikage/redux-devtools-dispatch
import React, { Component } from 'react';
import styled from 'styled-components';
import { Button, Select, Editor, Toolbar } from '@redux-devtools/ui';
import styled from '@emotion/styled';
import {
Button,
Select,
Editor,
Toolbar,
Base16Theme,
} from '@redux-devtools/ui';
import { connect, ResolveThunks } from 'react-redux';
import { dispatchRemotely } from '../../actions';
import { Options } from '../../reducers/instances';
@ -12,7 +18,7 @@ export const DispatcherContainer = styled.div`
flex-direction: column;
flex-shrink: 0;
padding-top: 2px;
background: ${(props) => props.theme.base01};
background: ${(props: { theme?: Base16Theme }) => props.theme!.base01};
`;
export const CodeContainer = styled.div`
@ -24,7 +30,7 @@ export const CodeContainer = styled.div`
export const ActionContainer = styled.div`
display: table;
width: 100%;
color: ${(props) => props.theme.base06};
color: ${(props: { theme?: Base16Theme }) => props.theme!.base06};
> div {
display: table-row;

View File

@ -1,6 +1,6 @@
import React, { Component, RefCallback } from 'react';
import { connect, ResolveThunks } from 'react-redux';
import { withTheme } from 'styled-components';
import { withTheme } from '@emotion/react';
import { tree } from 'd3-state-visualizer';
import type { HierarchyPointNode, Node, Options } from 'd3-state-visualizer';
import { getPath } from '../ChartMonitorWrapper';

View File

@ -1,8 +1,8 @@
import React, { Component } from 'react';
import type { Delta } from 'jsondiffpatch';
import * as htmlFormatter from 'jsondiffpatch/formatters/html';
import styled, { ThemedStyledProps } from 'styled-components';
import { effects, Theme } from '@redux-devtools/ui';
import styled from '@emotion/styled';
import { Base16Theme, effects } from '@redux-devtools/ui';
export const StyledContainer = styled.div`
.jsondiffpatch-delta {
@ -19,8 +19,7 @@ export const StyledContainer = styled.div`
padding: 2px 3px;
border-radius: 3px;
position: relative;
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
color: ${(props: { theme?: Base16Theme }) => props.theme!.base07};
display: inline-block;
}
@ -44,25 +43,22 @@ export const StyledContainer = styled.div`
.jsondiffpatch-modified .jsondiffpatch-right-value:before {
vertical-align: top;
padding: 2px;
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0E};
color: ${(props) => props.theme.base0E};
content: ' => ';
}
.jsondiffpatch-added .jsondiffpatch-value pre,
.jsondiffpatch-modified .jsondiffpatch-right-value pre,
.jsondiffpatch-textdiff-added {
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
background: ${(props: ThemedStyledProps<{}, Theme>) =>
effects.color(props.theme.base0B, 'alpha', 0.2)};
background: ${(props: { theme?: Base16Theme }) =>
effects.color(props.theme!.base0B, 'alpha', 0.2)};
}
.jsondiffpatch-deleted pre,
.jsondiffpatch-modified .jsondiffpatch-left-value pre,
.jsondiffpatch-textdiff-deleted {
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
background: ${(props: ThemedStyledProps<{}, Theme>) =>
effects.color(props.theme.base08, 'alpha', 0.2)};
background: ${(props: { theme?: Base16Theme }) =>
effects.color(props.theme!.base08, 'alpha', 0.2)};
text-decoration: line-through;
}
@ -129,14 +125,12 @@ export const StyledContainer = styled.div`
padding: 2px 0;
padding-right: 5px;
vertical-align: top;
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0D};
color: ${(props) => props.theme.base0D};
}
.jsondiffpatch-property-name:after {
content: ': ';
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
color: ${(props) => props.theme.base07};
}
.jsondiffpatch-child-node-type-array > .jsondiffpatch-property-name:after {
@ -172,8 +166,7 @@ export const StyledContainer = styled.div`
}
.jsondiffpatch-value pre:after {
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
color: ${(props) => props.theme.base07};
content: ',';
}
@ -196,8 +189,7 @@ export const StyledContainer = styled.div`
.jsondiffpatch-moved .jsondiffpatch-moved-destination {
display: inline-block;
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
background: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0A};
background: ${(props) => props.theme.base0A};
}
.jsondiffpatch-moved .jsondiffpatch-moved-destination:before {

View File

@ -1,13 +1,14 @@
import React, { Component } from 'react';
import styled, { withTheme } from 'styled-components';
import styled from '@emotion/styled';
import { withTheme } from '@emotion/react';
import { SliderMonitor } from '@redux-devtools/slider-monitor';
import { LiftedAction } from '@redux-devtools/core';
import { Action } from 'redux';
import { ThemeFromProvider } from '@redux-devtools/ui';
import { Base16Theme, ThemeFromProvider } from '@redux-devtools/ui';
import { State } from '../../reducers/instances';
const SliderWrapper = styled.div`
border-color: ${(props) => props.theme.base02};
border-color: ${(props: { theme?: Base16Theme }) => props.theme!.base02};
border-style: solid;
border-width: 1px 0;
`;

View File

@ -1,5 +1,17 @@
# Change Log
## 7.0.0
### Major Changes
- 6163276: Replace styled-components with Emotion
### Patch Changes
- Updated dependencies [6163276]
- @redux-devtools/app-core@2.0.0
- @redux-devtools/ui@2.0.0
## 6.2.2
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/app",
"version": "6.2.2",
"version": "7.0.0",
"description": "Redux DevTools app",
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app",
"bugs": {
@ -46,54 +46,52 @@
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"redux-persist": "^6.0.0",
"socketcluster-client": "^19.2.3"
"socketcluster-client": "^20.0.1"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/react": "^11.14.0",
"@reduxjs/toolkit": "^2.6.0",
"@rjsf/core": "^5.24.3",
"@emotion/styled": "^11.14.1",
"@reduxjs/toolkit": "^2.11.2",
"@rjsf/core": "^6.2.4",
"@types/jsan": "^3.1.5",
"@types/json-schema": "^7.0.15",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/socketcluster-client": "^19.1.0",
"@types/styled-components": "^5.1.34",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@types/socketcluster-client": "^20.0.0",
"@types/webpack-env": "^1.18.8",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"css-loader": "^7.1.2",
"esbuild": "^0.25.0",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"globals": "^15.15.0",
"esbuild": "^0.27.2",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"globals": "^17.0.0",
"html-loader": "^5.1.0",
"html-webpack-plugin": "^5.6.3",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"rimraf": "^6.0.1",
"html-webpack-plugin": "^5.6.5",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"rimraf": "^6.1.2",
"style-loader": "^4.0.0",
"styled-components": "^5.3.11",
"ts-jest": "^29.2.6",
"ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/styled-components": "^5.1.34",
"react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"styled-components": "^5.3.11"
"react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
}

View File

@ -66,7 +66,6 @@
### Major Changes
- b323f77d: Upgrade D3
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
- The shape of the argument passed to the `onClickText` option has been updated.

View File

@ -39,25 +39,25 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"d3-state-visualizer": "workspace:^",
"deepmerge": "^4.3.1",
"react-base16-styling": "workspace:^"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@redux-devtools/core": "workspace:^",
"@types/react": "^18.3.18",
"react": "^18.3.1",
"@types/react": "^19.2.8",
"react": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@redux-devtools/core": "workspace:^",

View File

@ -13,8 +13,7 @@ const wrapperStyle = {
};
export interface Props<S, A extends Action<string>>
extends LiftedState<S, A, ChartMonitorState>,
Options {
extends LiftedState<S, A, ChartMonitorState>, Options {
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
preserveScrollTop: boolean;
select: (state: S) => unknown;

View File

@ -41,8 +41,7 @@ function invertColors(theme: Base16Theme) {
}
export interface ChartMonitorProps<S, A extends Action<string>>
extends LiftedState<S, A, ChartMonitorState>,
Options {
extends LiftedState<S, A, ChartMonitorState>, Options {
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
preserveScrollTop: boolean;
select: (state: S) => unknown;

View File

@ -1,5 +1,12 @@
# Change Log
## 4.0.4
### Patch Changes
- Updated dependencies [6163276]
- @redux-devtools/app@7.0.0
## 4.0.3
### Patch Changes

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/cli",
"version": "4.0.3",
"version": "4.0.4",
"description": "CLI for remote debugging with Redux DevTools.",
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-cli",
"bugs": {
@ -38,59 +38,59 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"engines": {
"node": ">= 18.12.0"
"node": ">=20"
},
"dependencies": {
"@apollo/server": "^4.11.3",
"@apollo/server": "^5.2.0",
"@as-integrations/express5": "^1.1.2",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/app": "workspace:^",
"@reduxjs/toolkit": "^2.6.0",
"@types/react": "^18.3.18",
"body-parser": "^1.20.3",
"chalk": "^5.4.1",
"@reduxjs/toolkit": "^2.11.2",
"@types/react": "^19.2.8",
"body-parser": "^2.2.2",
"chalk": "^5.6.2",
"cors": "^2.8.5",
"cross-spawn": "^7.0.6",
"electron": "^31.7.7",
"express": "^4.21.2",
"express": "^5.2.1",
"get-port": "^7.1.0",
"graphql": "^16.10.0",
"graphql": "^16.12.0",
"knex": "^3.1.0",
"lodash-es": "^4.17.21",
"lodash-es": "^4.17.22",
"minimist": "^1.2.8",
"morgan": "^1.10.0",
"open": "^10.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-is": "^18.3.1",
"semver": "^7.7.1",
"socketcluster-server": "^19.1.1",
"morgan": "^1.10.1",
"open": "^11.0.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-is": "^19.2.3",
"semver": "^7.7.3",
"socketcluster-server": "^20.0.0",
"sqlite3": "^5.1.7",
"styled-components": "^5.3.11",
"uuid": "^10.0.0"
"uuid": "^13.0.0"
},
"devDependencies": {
"@types/body-parser": "^1.19.5",
"@types/cors": "^2.8.17",
"@types/body-parser": "^1.19.6",
"@types/cors": "^2.8.19",
"@types/cross-spawn": "^6.0.6",
"@types/express": "^4.17.21",
"@types/jest": "^29.5.14",
"@types/express": "^5.0.6",
"@types/jest": "^30.0.0",
"@types/lodash-es": "^4.17.12",
"@types/minimist": "^1.2.5",
"@types/morgan": "^1.9.9",
"@types/node": "^22.13.9",
"@types/semver": "^7.5.8",
"@types/socketcluster-client": "^19.1.0",
"@types/socketcluster-server": "^19.0.1",
"@types/styled-components": "^5.1.34",
"@types/supertest": "^6.0.2",
"@types/uuid": "^10.0.0",
"globals": "^15.15.0",
"jest": "^29.7.0",
"@types/morgan": "^1.9.10",
"@types/node": "^24.10.9",
"@types/semver": "^7.7.1",
"@types/socketcluster-client": "^20.0.0",
"@types/socketcluster-server": "^20.0.0",
"@types/supertest": "^6.0.3",
"@types/uuid": "^11.0.0",
"globals": "^17.0.0",
"jest": "^30.2.0",
"ncp": "^2.0.0",
"rimraf": "^6.0.1",
"socketcluster-client": "^19.2.3",
"supertest": "^7.0.0",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"socketcluster-client": "^20.0.1",
"supertest": "^7.2.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
}
}

View File

@ -41,6 +41,7 @@ export default async function (argv: { [arg: string]: any }): Promise<{
const agServer = socketClusterServer.attach(httpServer, options);
const app = express();
// eslint-disable-next-line @typescript-eslint/no-misused-promises
httpServer.on('request', app);
const store = createStore(options);
app.use(routes(options, store, agServer));
@ -76,7 +77,7 @@ export default async function (argv: { [arg: string]: any }): Promise<{
});
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
console.error(error);
});
}
}
@ -110,7 +111,7 @@ export default async function (argv: { [arg: string]: any }): Promise<{
request.end(data);
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
console.error(error);
});
}
})();
@ -118,7 +119,6 @@ export default async function (argv: { [arg: string]: any }): Promise<{
for await (const data of socket.listener('disconnect')) {
const channel = agServer.exchange.channel('sc-' + socket.id);
channel.unsubscribe();
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
void agServer.exchange.transmitPublish(channelToEmit!, {
id: socket.id,
type: 'DISCONNECTED',

View File

@ -9,7 +9,7 @@ import bodyParser from 'body-parser';
import cors from 'cors';
import { AGServer } from 'socketcluster-server';
import { ApolloServer } from '@apollo/server';
import { expressMiddleware } from '@apollo/server/express4';
import { expressMiddleware } from '@as-integrations/express5';
import type { AddData, ReportBaseFields, Store } from './store.js';
import { resolvers, schema } from './api/schema.js';
@ -68,7 +68,7 @@ function routes(
);
})
.catch((error) => {
console.error(error); // eslint-disable-line no-console
console.error(error);
});
serveUmdModule('react');
@ -76,10 +76,9 @@ function routes(
serveUmdModule('@redux-devtools/app');
app.get('/port.js', function (req, res) {
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
res.send(`reduxDevToolsPort = ${options.port}`);
});
app.get('*', function (req, res) {
app.get('/{*splat}', function (req, res) {
res.sendFile(
path.join(
path.dirname(fileURLToPath(import.meta.url)),
@ -93,7 +92,10 @@ function routes(
app.use(bodyParser.urlencoded({ limit: limit, extended: false }));
app.post('/', function (req, res) {
if (!req.body) return res.status(404).end();
if (!req.body) {
res.status(404).end();
return;
}
switch (req.body.op) {
case 'get':
store
@ -102,7 +104,7 @@ function routes(
res.send(r || {});
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
console.error(error);
res.sendStatus(500);
});
break;
@ -113,7 +115,7 @@ function routes(
res.send(r);
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
console.error(error);
res.sendStatus(500);
});
break;
@ -131,7 +133,7 @@ function routes(
});
})
.catch(function (error) {
console.error(error); // eslint-disable-line no-console
console.error(error);
res.status(500).send({});
});
}

View File

@ -41,25 +41,25 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"parse-key": "^0.2.1",
"react-dock": "workspace:^"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@redux-devtools/core": "workspace:^",
"@types/parse-key": "^0.2.2",
"@types/react": "^18.3.18",
"react": "^18.3.1",
"@types/react": "^19.2.8",
"react": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@redux-devtools/core": "workspace:^",

View File

@ -44,8 +44,10 @@ interface DefaultProps {
fluid: boolean;
}
export interface DockMonitorProps<S, A extends Action<string>>
extends LiftedState<S, A, DockMonitorState> {
export interface DockMonitorProps<
S,
A extends Action<string>,
> extends LiftedState<S, A, DockMonitorState> {
defaultPosition: 'left' | 'top' | 'right' | 'bottom';
defaultIsVisible: boolean;
defaultSize: number;

View File

@ -29,18 +29,18 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9"
"@babel/runtime": "^7.28.6"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-typescript": "^7.28.5",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"redux": "^3.1.0 || ^4.0.0 || ^5.0.0"

View File

@ -1,5 +1,18 @@
# Change Log
## 5.0.0
### Major Changes
- 6163276: Replace styled-components with Emotion
### Patch Changes
- Updated dependencies [6163276]
- Updated dependencies [20883e5]
- @redux-devtools/ui@2.0.0
- @redux-devtools/inspector-monitor@6.1.2
## 4.1.1
### Patch Changes

View File

@ -1,5 +1,15 @@
# test-demo
## 0.1.18
### Patch Changes
- Updated dependencies [6163276]
- Updated dependencies [20883e5]
- @redux-devtools/inspector-monitor-test-tab@5.0.0
- @redux-devtools/ui@2.0.0
- @redux-devtools/inspector-monitor@6.1.2
## 0.1.17
### Patch Changes

View File

@ -1,7 +1,7 @@
{
"private": true,
"name": "test-demo",
"version": "0.1.17",
"version": "0.1.18",
"license": "MIT",
"scripts": {
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
@ -11,44 +11,43 @@
},
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/dock-monitor": "workspace:^",
"@redux-devtools/inspector-monitor": "workspace:^",
"@redux-devtools/inspector-monitor-test-tab": "workspace:^",
"@redux-devtools/ui": "workspace:^",
"immutable": "^5.0.3",
"immutable": "^5.1.4",
"lodash.shuffle": "^4.2.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-is": "^18.3.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-is": "^19.2.3",
"react-redux": "^9.2.0",
"react-router-dom": "^6.30.0",
"react-router-dom": "^7.12.0",
"redux": "^5.0.1",
"redux-logger": "^3.0.6",
"styled-components": "^5.3.11"
"redux-logger": "^3.0.6"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@types/lodash.shuffle": "^4.2.9",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@types/redux-logger": "^3.0.13",
"@types/styled-components": "^5.1.34",
"@types/webpack-env": "^1.18.8",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"css-loader": "^7.1.2",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"style-loader": "^4.0.0",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
}
}

View File

@ -48,8 +48,10 @@ const styles: {
const ROOT = '/'; // process.env.NODE_ENV === 'production' ? '/' : '/';
interface Props
extends Omit<DemoAppState, 'addFunction' | 'addSymbol' | 'shuffleArray'> {
interface Props extends Omit<
DemoAppState,
'addFunction' | 'addSymbol' | 'shuffleArray'
> {
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
timeoutUpdate: () => void;
increment: () => void;
@ -70,7 +72,7 @@ interface Props
}
function DemoApp(props: Props) {
const timeout = useRef<number | undefined>();
const timeout = useRef<number | undefined>(undefined);
const location = useLocation();
const options = getOptions(location);

View File

@ -36,5 +36,6 @@ export const getDevTools = (location: { search: string }) =>
export function ConnectedDevTools() {
const location = useLocation();
const DevTools = getDevTools(location);
// eslint-disable-next-line react-hooks/static-components
return <DevTools />;
}

View File

@ -41,7 +41,8 @@ const HUGE_ARRAY = Array.from({ length: 5000 }).map((_, key) => ({
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
(o: { [key: string]: string }, _, key) => (
(o[`key ${key}`] = `item ${key}`), o
(o[`key ${key}`] = `item ${key}`),
o
),
{},
);

View File

@ -8,5 +8,7 @@ module.exports = {
'^.+\\.jsx?$': 'babel-jest',
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
},
transformIgnorePatterns: ['node_modules/(?!.pnpm|lodash-es|nanoid)'],
transformIgnorePatterns: [
'node_modules/(?!.pnpm|@x0k/json-schema-merge|color|lodash-es|nanoid)',
],
};

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/inspector-monitor-test-tab",
"version": "4.1.1",
"version": "5.0.0",
"description": "Generate tests for redux devtools.",
"keywords": [
"redux",
@ -43,7 +43,7 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@redux-devtools/ui": "workspace:^",
"es6template": "^1.0.5",
"javascript-stringify": "^2.1.0",
@ -53,40 +53,40 @@
"simple-diff": "^1.7.2"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/inspector-monitor": "workspace:^",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.2.0",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.1",
"@types/es6template": "^1.0.5",
"@types/jest": "^29.5.14",
"@types/jest": "^30.0.0",
"@types/jsan": "^3.1.5",
"@types/object-path": "^0.11.4",
"@types/react": "^18.3.18",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"@types/react": "^19.2.8",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/inspector-monitor": "workspace:^",
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/styled-components": "^5.1.34",
"react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0",
"styled-components": "^5.3.11"
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
}
}

View File

@ -59,8 +59,10 @@ export function compare<S>(
).forEach(generate);
}
interface Props<S, A extends Action<string>>
extends Omit<TabComponentProps<S, A>, 'monitorState' | 'updateMonitorState'> {
interface Props<S, A extends Action<string>> extends Omit<
TabComponentProps<S, A>,
'monitorState' | 'updateMonitorState'
> {
name?: string;
isVanilla?: boolean;
wrap?: string | ((locals: WrapLocals) => string);

View File

@ -1,4 +1,4 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`TestGenerator component should be empty when no actions provided 1`] = `
<textarea

View File

@ -6,6 +6,6 @@ module.exports = {
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
},
transformIgnorePatterns: [
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|lodash-es)',
'node_modules/(?!.pnpm|@babel/code-frame|@babel/highlight|@babel/helper-validator-identifier|chalk|color|js-tokens|lodash-es)',
],
};

View File

@ -30,43 +30,42 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"dependencies": {
"@babel/code-frame": "^8.0.0-alpha.16",
"@babel/runtime": "^7.26.9",
"@types/chrome": "^0.0.308",
"anser": "^2.3.2",
"html-entities": "^2.5.2",
"@babel/code-frame": "^8.0.0-beta.4",
"@babel/runtime": "^7.28.6",
"@types/chrome": "^0.1.33",
"anser": "^2.3.5",
"html-entities": "^2.6.0",
"path-browserify": "^1.0.1",
"react-base16-styling": "workspace:^",
"source-map": "^0.5.7"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/react": "^11.14.0",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/inspector-monitor": "workspace:^",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.2.0",
"@types/babel__code-frame": "^7.0.6",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.9",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.1",
"@types/babel__code-frame": "^7.27.0",
"@types/jest": "^30.0.0",
"@types/node": "^24.10.9",
"@types/path-browserify": "^1.0.3",
"@types/react": "^18.3.18",
"@types/react": "^19.2.8",
"@types/source-map": "0.5.2",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-test-renderer": "^18.3.1",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",

View File

@ -32,11 +32,10 @@ function openAndCloseTab(url: string) {
const removeTab = () => {
chrome.windows.onFocusChanged.removeListener(removeTab);
if (tab && tab.id) {
chrome.tabs.remove(tab.id, async () => {
// eslint-disable-next-line no-console
chrome.tabs.remove(tab.id, () => {
if (chrome.runtime.lastError) console.log(chrome.runtime.lastError);
else if (chrome.devtools && chrome.devtools.inspectedWindow) {
await chrome.tabs.update(chrome.devtools.inspectedWindow.tabId, {
void chrome.tabs.update(chrome.devtools.inspectedWindow.tabId, {
active: true,
});
}

View File

@ -1,4 +1,4 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`StackTraceTab component should render the link to docs 1`] = `
<div

View File

@ -1,5 +1,11 @@
# Change Log
## 6.1.2
### Patch Changes
- 20883e5: fix(deps): update all non-major dependencies
## 6.1.1
### Patch Changes

View File

@ -14,36 +14,36 @@
"@redux-devtools/core": "workspace:^",
"@redux-devtools/dock-monitor": "workspace:^",
"@redux-devtools/inspector-monitor": "workspace:^",
"immutable": "^5.0.3",
"immutable": "^5.1.4",
"lodash.shuffle": "^4.2.0",
"react": "^18.3.1",
"react": "^19.2.3",
"react-base16-styling": "workspace:^",
"react-bootstrap": "^2.10.9",
"react-dom": "^18.3.1",
"react-bootstrap": "^2.10.10",
"react-dom": "^19.2.3",
"react-redux": "^9.2.0",
"react-router-dom": "^6.30.0",
"react-router-dom": "^7.12.0",
"redux": "^5.0.1",
"redux-logger": "^3.0.6"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/core": "^7.28.6",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@types/lodash.shuffle": "^4.2.9",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@types/redux-logger": "^3.0.13",
"@types/webpack-env": "^1.18.8",
"babel-loader": "^10.0.0",
"cross-env": "^7.0.3",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"cross-env": "^10.1.0",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
}
}

View File

@ -119,8 +119,10 @@ function buildUrl(options: Options) {
);
}
interface Props
extends Omit<DemoAppState, 'addFunction' | 'addSymbol' | 'shuffleArray'> {
interface Props extends Omit<
DemoAppState,
'addFunction' | 'addSymbol' | 'shuffleArray'
> {
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
timeoutUpdate: () => void;
increment: () => void;
@ -142,7 +144,7 @@ interface Props
}
function DemoApp(props: Props) {
const timeout = useRef<number | undefined>();
const timeout = useRef<number | undefined>(undefined);
const location = useLocation();
const navigate = useNavigate();
@ -155,22 +157,22 @@ function DemoApp(props: Props) {
});
};
const toggleImmutableSupport = () => {
const toggleImmutableSupport = async () => {
const options = getOptions(location);
navigate(
await navigate(
buildUrl({ ...options, supportImmutable: !options.supportImmutable }),
);
};
const toggleTheme = () => {
const toggleTheme = async () => {
const options = getOptions(location);
navigate(buildUrl({ ...options, dark: !options.dark }));
await navigate(buildUrl({ ...options, dark: !options.dark }));
};
const setTheme = (options: Options, theme: string) => {
navigate(buildUrl({ ...options, theme }));
const setTheme = async (options: Options, theme: string) => {
await navigate(buildUrl({ ...options, theme }));
};
const toggleTimeoutUpdate = () => {

View File

@ -47,5 +47,6 @@ export const getDevTools = (location: { search: string }) =>
export function ConnectedDevTools() {
const location = useLocation();
const DevTools = getDevTools(location);
// eslint-disable-next-line react-hooks/static-components
return <DevTools />;
}

View File

@ -66,7 +66,8 @@ const HUGE_ARRAY = Array.from({ length: 5000 }).map((_, key) => ({
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
(o: { [key: string]: string }, _, key) => (
(o[`key ${key}`] = `item ${key}`), o
(o[`key ${key}`] = `item ${key}`),
o
),
{},
);

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/inspector-monitor",
"version": "6.1.1",
"version": "6.1.2",
"description": "Redux DevTools Diff Monitor",
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-inspector-monitor",
"bugs": {
@ -35,40 +35,40 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/modifiers": "^7.0.0",
"@dnd-kit/sortable": "^8.0.0",
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@types/lodash": "^4.17.16",
"@types/lodash": "^4.17.23",
"dateformat": "^5.0.3",
"hex-rgba": "^1.0.2",
"immutable": "^5.0.3",
"immutable": "^5.1.4",
"javascript-stringify": "^2.1.0",
"jsondiffpatch": "^0.6.0",
"jsondiffpatch": "^0.7.3",
"lodash.debounce": "^4.0.8",
"react-base16-styling": "workspace:^",
"react-json-tree": "workspace:^"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/babel-preset-css-prop": "^11.12.0",
"@emotion/react": "^11.14.0",
"@redux-devtools/core": "workspace:^",
"@types/dateformat": "^5.0.3",
"@types/hex-rgba": "^1.0.3",
"@types/lodash.debounce": "^4.0.9",
"@types/react": "^18.3.18",
"react": "^18.3.1",
"@types/react": "^19.2.8",
"react": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",

View File

@ -83,7 +83,7 @@ export default function ActionList<A extends Action<string>>({
onReorderAction,
}: Props<A>): JSX.Element {
const nodeRef = useRef<HTMLDivElement | null>(null);
const prevLastActionId = useRef<number | undefined>();
const prevLastActionId = useRef<number | undefined>(undefined);
useLayoutEffect(() => {
if (nodeRef.current && prevLastActionId.current !== lastActionId) {

View File

@ -144,8 +144,10 @@ interface DefaultProps {
invertTheme: boolean;
}
export interface DevtoolsInspectorProps<S, A extends Action<string>>
extends LiftedState<S, A, DevtoolsInspectorState> {
export interface DevtoolsInspectorProps<
S,
A extends Action<string>,
> extends LiftedState<S, A, DevtoolsInspectorState> {
dispatch: Dispatch<
DevtoolsInspectorAction | LiftedAction<S, A, DevtoolsInspectorState>
>;

View File

@ -41,20 +41,20 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-typescript": "^7.26.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.13.9",
"jest": "^29.7.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-typescript": "^7.28.5",
"@types/jest": "^30.0.0",
"@types/node": "^24.10.9",
"jest": "^30.2.0",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"rimraf": "^6.1.2",
"rxjs": "^7.8.2",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
},
"peerDependencies": {
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"

View File

@ -41,26 +41,26 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@types/lodash.debounce": "^4.0.9",
"lodash.debounce": "^4.0.8",
"react-base16-styling": "workspace:^",
"react-json-tree": "workspace:^"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@redux-devtools/core": "workspace:^",
"@types/react": "^18.3.18",
"react": "^18.3.1",
"@types/react": "^19.2.8",
"react": "^19.2.3",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@redux-devtools/core": "workspace:^",

View File

@ -64,8 +64,10 @@ interface DefaultProps<S> {
markStateDiff: boolean;
}
export interface LogMonitorProps<S, A extends Action<string>>
extends LiftedState<S, A, LogMonitorState> {
export interface LogMonitorProps<
S,
A extends Action<string>,
> extends LiftedState<S, A, LogMonitorState> {
dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>;
preserveScrollTop: boolean;

View File

@ -41,31 +41,31 @@
"prepublish": "pnpm run type-check && pnpm run lint"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@redux-devtools/instrument": "workspace:^",
"@redux-devtools/utils": "workspace:^",
"jsan": "^3.1.14",
"rn-host-detect": "^1.2.0",
"socketcluster-client": "^19.2.3"
"socketcluster-client": "^20.0.1"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-typescript": "^7.28.5",
"@types/jsan": "^3.1.5",
"@types/node": "^22.13.9",
"@types/node": "^24.10.9",
"@types/rn-host-detect": "^1.2.2",
"@types/socketcluster-client": "^19.1.0",
"@typescript-eslint/eslint-plugin": "^8.26.0",
"@typescript-eslint/parser": "^8.26.0",
"eslint": "^9.21.0",
"eslint-config-prettier": "^10.0.2",
"@types/socketcluster-client": "^20.0.0",
"@typescript-eslint/eslint-plugin": "^8.53.0",
"@typescript-eslint/parser": "^8.53.0",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"typescript": "~5.9.3"
},
"peerDependencies": {
"redux": "^3.5.2 || ^4.0.0 || ^5.0.0"

View File

@ -1,5 +1,16 @@
# Change Log
## 6.0.0
### Major Changes
- 6163276: Replace styled-components with Emotion
### Patch Changes
- Updated dependencies [6163276]
- @redux-devtools/ui@2.0.0
## 5.2.0
### Minor Changes

View File

@ -1,5 +1,12 @@
# rtk-query-demo
## 0.1.16
### Patch Changes
- Updated dependencies [6163276]
- @redux-devtools/rtk-query-monitor@6.0.0
## 0.1.15
### Patch Changes

View File

@ -1,7 +1,7 @@
{
"private": true,
"name": "rtk-query-demo",
"version": "0.1.15",
"version": "0.1.16",
"license": "MIT",
"scripts": {
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
@ -10,49 +10,48 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@chakra-ui/react": "^2.10.6",
"@babel/runtime": "^7.28.6",
"@chakra-ui/react": "^3.31.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@mswjs/data": "^0.16.2",
"@redux-devtools/core": "workspace:^",
"@redux-devtools/dock-monitor": "workspace:^",
"@redux-devtools/rtk-query-monitor": "workspace:^",
"@reduxjs/toolkit": "^2.6.0",
"framer-motion": "^11.18.2",
"msw": "^2.7.3",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"@reduxjs/toolkit": "^2.11.2",
"msw": "^2.12.4",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0",
"react-is": "^18.3.1",
"react-is": "^19.2.3",
"react-redux": "^9.2.0",
"react-router-dom": "^6.30.0",
"styled-components": "^5.3.11"
"react-router-dom": "^7.12.0"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@types/node": "^22.13.9",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/styled-components": "^5.1.34",
"@babel/core": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@types/node": "^24.10.9",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"babel-loader": "^10.0.0",
"copy-webpack-plugin": "^12.0.2",
"cross-env": "^7.0.3",
"copy-webpack-plugin": "^13.0.1",
"cross-env": "^10.1.0",
"css-loader": "^7.1.2",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"html-webpack-plugin": "^5.6.3",
"fork-ts-checker-webpack-plugin": "^9.1.0",
"html-webpack-plugin": "^5.6.5",
"style-loader": "^4.0.0",
"ts-node": "^10.9.2",
"typescript": "~5.8.2",
"webpack": "^5.98.0",
"typescript": "~5.9.3",
"webpack": "^5.104.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
"webpack-dev-server": "^5.2.3"
},
"msw": {
"workerDirectory": "public"
"workerDirectory": [
"public"
]
}
}

View File

@ -5,24 +5,23 @@
* Mock Service Worker.
* @see https://github.com/mswjs/msw
* - Please do NOT modify this file.
* - Please do NOT serve this file on production.
*/
const PACKAGE_VERSION = '2.7.3'
const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f'
const PACKAGE_VERSION = '2.12.4'
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
self.addEventListener('install', function () {
addEventListener('install', function () {
self.skipWaiting()
})
self.addEventListener('activate', function (event) {
addEventListener('activate', function (event) {
event.waitUntil(self.clients.claim())
})
self.addEventListener('message', async function (event) {
const clientId = event.source.id
addEventListener('message', async function (event) {
const clientId = Reflect.get(event.source || {}, 'id')
if (!clientId || !self.clients) {
return
@ -72,11 +71,6 @@ self.addEventListener('message', async function (event) {
break
}
case 'MOCK_DEACTIVATE': {
activeClientIds.delete(clientId)
break
}
case 'CLIENT_CLOSED': {
activeClientIds.delete(clientId)
@ -94,69 +88,92 @@ self.addEventListener('message', async function (event) {
}
})
self.addEventListener('fetch', function (event) {
const { request } = event
addEventListener('fetch', function (event) {
const requestInterceptedAt = Date.now()
// Bypass navigation requests.
if (request.mode === 'navigate') {
if (event.request.mode === 'navigate') {
return
}
// Opening the DevTools triggers the "only-if-cached" request
// that cannot be handled by the worker. Bypass such requests.
if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
if (
event.request.cache === 'only-if-cached' &&
event.request.mode !== 'same-origin'
) {
return
}
// Bypass all requests when there are no active clients.
// Prevents the self-unregistered worked from handling requests
// after it's been deleted (still remains active until the next reload).
// after it's been terminated (still remains active until the next reload).
if (activeClientIds.size === 0) {
return
}
// Generate unique request ID.
const requestId = crypto.randomUUID()
event.respondWith(handleRequest(event, requestId))
event.respondWith(handleRequest(event, requestId, requestInterceptedAt))
})
async function handleRequest(event, requestId) {
/**
* @param {FetchEvent} event
* @param {string} requestId
* @param {number} requestInterceptedAt
*/
async function handleRequest(event, requestId, requestInterceptedAt) {
const client = await resolveMainClient(event)
const response = await getResponse(event, client, requestId)
const requestCloneForEvents = event.request.clone()
const response = await getResponse(
event,
client,
requestId,
requestInterceptedAt,
)
// Send back the response clone for the "response:*" life-cycle events.
// Ensure MSW is active and ready to handle the message, otherwise
// this message will pend indefinitely.
if (client && activeClientIds.has(client.id)) {
;(async function () {
const responseClone = response.clone()
const serializedRequest = await serializeRequest(requestCloneForEvents)
sendToClient(
client,
{
type: 'RESPONSE',
payload: {
requestId,
isMockedResponse: IS_MOCKED_RESPONSE in response,
// Clone the response so both the client and the library could consume it.
const responseClone = response.clone()
sendToClient(
client,
{
type: 'RESPONSE',
payload: {
isMockedResponse: IS_MOCKED_RESPONSE in response,
request: {
id: requestId,
...serializedRequest,
},
response: {
type: responseClone.type,
status: responseClone.status,
statusText: responseClone.statusText,
body: responseClone.body,
headers: Object.fromEntries(responseClone.headers.entries()),
body: responseClone.body,
},
},
[responseClone.body],
)
})()
},
responseClone.body ? [serializedRequest.body, responseClone.body] : [],
)
}
return response
}
// Resolve the main client for the given event.
// Client that issues a request doesn't necessarily equal the client
// that registered the worker. It's with the latter the worker should
// communicate with during the response resolving phase.
/**
* Resolve the main client for the given event.
* Client that issues a request doesn't necessarily equal the client
* that registered the worker. It's with the latter the worker should
* communicate with during the response resolving phase.
* @param {FetchEvent} event
* @returns {Promise<Client | undefined>}
*/
async function resolveMainClient(event) {
const client = await self.clients.get(event.clientId)
@ -184,12 +201,17 @@ async function resolveMainClient(event) {
})
}
async function getResponse(event, client, requestId) {
const { request } = event
/**
* @param {FetchEvent} event
* @param {Client | undefined} client
* @param {string} requestId
* @param {number} requestInterceptedAt
* @returns {Promise<Response>}
*/
async function getResponse(event, client, requestId, requestInterceptedAt) {
// Clone the request because it might've been already used
// (i.e. its body has been read and sent to the client).
const requestClone = request.clone()
const requestClone = event.request.clone()
function passthrough() {
// Cast the request headers to a new Headers instance
@ -230,29 +252,18 @@ async function getResponse(event, client, requestId) {
}
// Notify the client that a request has been intercepted.
const requestBuffer = await request.arrayBuffer()
const serializedRequest = await serializeRequest(event.request)
const clientMessage = await sendToClient(
client,
{
type: 'REQUEST',
payload: {
id: requestId,
url: request.url,
mode: request.mode,
method: request.method,
headers: Object.fromEntries(request.headers.entries()),
cache: request.cache,
credentials: request.credentials,
destination: request.destination,
integrity: request.integrity,
redirect: request.redirect,
referrer: request.referrer,
referrerPolicy: request.referrerPolicy,
body: requestBuffer,
keepalive: request.keepalive,
interceptedAt: requestInterceptedAt,
...serializedRequest,
},
},
[requestBuffer],
[serializedRequest.body],
)
switch (clientMessage.type) {
@ -268,6 +279,12 @@ async function getResponse(event, client, requestId) {
return passthrough()
}
/**
* @param {Client} client
* @param {any} message
* @param {Array<Transferable>} transferrables
* @returns {Promise<any>}
*/
function sendToClient(client, message, transferrables = []) {
return new Promise((resolve, reject) => {
const channel = new MessageChannel()
@ -280,14 +297,18 @@ function sendToClient(client, message, transferrables = []) {
resolve(event.data)
}
client.postMessage(
message,
[channel.port2].concat(transferrables.filter(Boolean)),
)
client.postMessage(message, [
channel.port2,
...transferrables.filter(Boolean),
])
})
}
async function respondWithMock(response) {
/**
* @param {Response} response
* @returns {Response}
*/
function respondWithMock(response) {
// Setting response status code to 0 is a no-op.
// However, when responding with a "Response.error()", the produced Response
// instance will have status code set to 0. Since it's not possible to create
@ -305,3 +326,24 @@ async function respondWithMock(response) {
return mockedResponse
}
/**
* @param {Request} request
*/
async function serializeRequest(request) {
return {
url: request.url,
mode: request.mode,
method: request.method,
headers: Object.fromEntries(request.headers.entries()),
cache: request.cache,
credentials: request.credentials,
destination: request.destination,
integrity: request.integrity,
redirect: request.redirect,
referrer: request.referrer,
referrerPolicy: request.referrerPolicy,
body: await request.arrayBuffer(),
keepalive: request.keepalive,
}
}

View File

@ -1,7 +1,7 @@
import PokemonView from './features/pokemon/PokemonView';
import PostsView from './features/posts/PostsView';
import { Box, Flex, Heading } from '@chakra-ui/react';
import { Link, UnorderedList, ListItem } from '@chakra-ui/react';
import { Box, Flex, Heading, List } from '@chakra-ui/react';
import { Link } from '@chakra-ui/react';
import { Code } from '@chakra-ui/react';
import * as React from 'react';
import { DevToolsSelector } from './features/DevTools/DevToolsSelector';
@ -27,44 +27,48 @@ export function App() {
</Box>
</Flex>
<Flex p="2" as="footer">
<UnorderedList p="2">
<ListItem>
<List.Root p="2">
<List.Item>
<Link
className="link"
isExternal
target="_blank"
rel="noopener noreferrer"
href="https://github.com/FaberVitale/redux-devtools/tree/feat/rtk-query-monitor/packages/redux-devtools-rtk-query-monitor/demo"
>
demo source
</Link>
</ListItem>
<ListItem>
</List.Item>
<List.Item>
<Link
className="link"
isExternal
target="_blank"
rel="noopener noreferrer"
href="https://github.com/FaberVitale/redux-devtools/tree/feat/rtk-query-monitor/packages/redux-devtools-rtk-query-monitor"
>
@redux-devtools/rtk-query-monitor source
</Link>
</ListItem>
<ListItem>
</List.Item>
<List.Item>
<Link
className="link"
isExternal
target="_blank"
rel="noopener noreferrer"
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/polling"
>
polling example
</Link>
</ListItem>
<ListItem>
</List.Item>
<List.Item>
<Link
className="link"
isExternal
target="_blank"
rel="noopener noreferrer"
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/mutations"
>
mutations example
</Link>
</ListItem>
</UnorderedList>
</List.Item>
</List.Root>
</Flex>
</main>
);

View File

@ -0,0 +1,8 @@
'use client';
import React from 'react';
import { ChakraProvider, defaultSystem } from '@chakra-ui/react';
export function Provider({ children }: { children: React.ReactNode }) {
return <ChakraProvider value={defaultSystem}>{children}</ChakraProvider>;
}

View File

@ -0,0 +1,44 @@
'use client';
import React from 'react';
import {
Toaster as ChakraToaster,
Portal,
Spinner,
Stack,
Toast,
createToaster,
} from '@chakra-ui/react';
export const toaster = createToaster({
placement: 'bottom-end',
pauseOnPageIdle: true,
});
export const Toaster = () => {
return (
<Portal>
<ChakraToaster toaster={toaster} insetInline={{ mdDown: '4' }}>
{(toast) => (
<Toast.Root width={{ md: 'sm' }}>
{toast.type === 'loading' ? (
<Spinner size="sm" color="blue.solid" />
) : (
<Toast.Indicator />
)}
<Stack gap="1" flex="1" maxWidth="100%">
{toast.title && <Toast.Title>{toast.title}</Toast.Title>}
{toast.description && (
<Toast.Description>{toast.description}</Toast.Description>
)}
</Stack>
{toast.action && (
<Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>
)}
{toast.closable && <Toast.CloseTrigger />}
</Toast.Root>
)}
</ChakraToaster>
</Portal>
);
};

View File

@ -14,7 +14,7 @@ export function DevToolsSelector() {
return (
<Box as="section" p="2">
<Heading as="h2">Set active devTools</Heading>
<ButtonGroup variant="outline" spacing="4" p="4">
<ButtonGroup variant="outline" gap="4" p="4">
<Button
aria-selected={!extensionEnabled}
colorScheme="blue"

View File

@ -1,15 +1,17 @@
import React, { useState } from 'react';
import { Button, Select } from '@chakra-ui/react';
import { Button, createListCollection, Portal, Select } from '@chakra-ui/react';
import { useGetPokemonByNameQuery } from '../../services/pokemon';
import type { PokemonName } from '../../pokemon.data';
const intervalOptions = [
{ label: 'Off', value: 0 },
{ label: '3s', value: 3000 },
{ label: '5s', value: 5000 },
{ label: '10s', value: 10000 },
{ label: '1m', value: 60000 },
];
const intervalOptions = createListCollection({
items: [
{ label: 'Off', value: '0' },
{ label: '3s', value: '3000' },
{ label: '5s', value: '5000' },
{ label: '10s', value: '10000' },
{ label: '1m', value: '60000' },
],
});
export function Pokemon({ name }: { name: PokemonName }) {
const [pollingInterval, setPollingInterval] = useState(60000);
@ -41,19 +43,39 @@ export function Pokemon({ name }: { name: PokemonName }) {
/>
</div>
<div>
<label style={{ display: 'block' }}>Polling interval</label>
<Select
value={pollingInterval}
onChange={({ target: { value } }) =>
setPollingInterval(Number(value))
<Select.Root
collection={intervalOptions}
value={[pollingInterval.toString()]}
onValueChange={({ value }) =>
setPollingInterval(Number(value[0]))
}
>
{intervalOptions.map(({ label, value }) => (
<option key={value} value={value}>
{label}
</option>
))}
</Select>
<Select.HiddenSelect />
<Select.Label>Polling interval</Select.Label>
<Select.Control>
<Select.Trigger>
<Select.ValueText placeholder="Polling interval" />
</Select.Trigger>
<Select.IndicatorGroup>
<Select.Indicator />
</Select.IndicatorGroup>
</Select.Control>
<Portal>
<Select.Positioner>
<Select.Content>
{intervalOptions.items.map((intervalOption) => (
<Select.Item
item={intervalOption}
key={intervalOption.value}
>
{intervalOption.label}
<Select.ItemIndicator />
</Select.Item>
))}
</Select.Content>
</Select.Positioner>
</Portal>
</Select.Root>
</div>
<div>
<Button

View File

@ -15,8 +15,8 @@ import {
Input,
Spacer,
Stack,
useToast,
} from '@chakra-ui/react';
import { toaster } from '../../components/ui/toaster';
const EditablePostName = ({
name: initialName,
@ -50,8 +50,8 @@ const EditablePostName = ({
</Box>
<Spacer />
<Box>
<Stack spacing={4} direction="row" align="center">
<Button onClick={handleUpdate} isLoading={isLoading}>
<Stack gap={4} direction="row" align="center">
<Button onClick={handleUpdate} loading={isLoading}>
Update
</Button>
<CloseButton bg="red" onClick={handleCancel} disabled={isLoading} />
@ -75,8 +75,6 @@ export const PostDetail = () => {
const { id } = useParams<{ id: string }>();
const navigate = useNavigate();
const toast = useToast();
const [isEditing, setIsEditing] = useState(false);
const { data: post, isLoading } = useGetPostQuery(id!);
@ -108,12 +106,12 @@ export const PostDetail = () => {
try {
await updatePost({ id: id!, name }).unwrap();
} catch {
toast({
toaster.create({
title: 'An error occurred',
description: "We couldn't save your changes, try again!",
status: 'error',
type: 'error',
duration: 2000,
isClosable: true,
closable: true,
});
} finally {
setIsEditing(false);
@ -129,7 +127,7 @@ export const PostDetail = () => {
</Box>
<Spacer />
<Box>
<Stack spacing={4} direction="row" align="center">
<Stack gap={4} direction="row" align="center">
<Button
onClick={() => setIsEditing(true)}
disabled={isDeleting || isUpdating}

View File

@ -2,20 +2,15 @@ import {
Box,
Button,
Center,
Divider,
Field,
Flex,
FormControl,
FormLabel,
FormatNumber,
Heading,
Input,
List,
ListIcon,
ListItem,
Separator,
Spacer,
Stat,
StatLabel,
StatNumber,
useToast,
} from '@chakra-ui/react';
import { Route, Routes, useNavigate } from 'react-router-dom';
import { MdBook } from 'react-icons/md';
@ -26,12 +21,12 @@ import {
useGetPostsQuery,
} from '../../services/posts';
import { PostDetail } from './PostDetail';
import { toaster } from '../../components/ui/toaster';
const AddPost = () => {
const initialValue = { name: '' };
const [post, setPost] = useState<Pick<Post, 'name'>>(initialValue);
const [addPost, { isLoading }] = useAddPostMutation();
const toast = useToast();
const handleChange = ({ target }: React.ChangeEvent<HTMLInputElement>) => {
setPost((prev) => ({
@ -45,12 +40,12 @@ const AddPost = () => {
await addPost(post).unwrap();
setPost(initialValue);
} catch {
toast({
toaster.create({
title: 'An error occurred',
description: "We couldn't save your post, try again!",
status: 'error',
type: 'error',
duration: 2000,
isClosable: true,
closable: true,
});
}
};
@ -58,11 +53,11 @@ const AddPost = () => {
return (
<Flex p={'5px 0'} flexDirection="row" flexWrap="wrap" maxWidth={'85%'}>
<Box flex={'5 0 auto'} padding="0 5px 0 0">
<FormControl
<Field.Root
flexDirection="column"
isInvalid={Boolean(post.name.length < 3 && post.name)}
invalid={Boolean(post.name.length < 3 && post.name)}
>
<FormLabel htmlFor="name">Post name</FormLabel>
<Field.Label htmlFor="name">Post name</Field.Label>
<Input
id="name"
name="name"
@ -70,13 +65,13 @@ const AddPost = () => {
value={post.name}
onChange={handleChange}
/>
</FormControl>
</Field.Root>
</Box>
<Box>
<Button
mt={8}
colorScheme="purple"
isLoading={isLoading}
loading={isLoading}
onClick={handleAddPost}
>
Add Post
@ -99,13 +94,16 @@ const PostList = () => {
}
return (
<List spacing={3}>
<List.Root gap={3}>
{posts.map(({ id, name }) => (
<ListItem key={id} onClick={() => navigate(`/posts/${id}`)}>
<ListIcon as={MdBook} color="green.500" /> {name}
</ListItem>
<List.Item key={id} onClick={() => navigate(`/posts/${id}`)}>
<List.Indicator asChild color="green.500">
<MdBook />
</List.Indicator>
{name}
</List.Item>
))}
</List>
</List.Root>
);
};
@ -115,10 +113,12 @@ export const PostsCountStat = () => {
if (!posts) return null;
return (
<Stat>
<StatLabel>Active Posts</StatLabel>
<StatNumber>{posts?.length}</StatNumber>
</Stat>
<Stat.Root>
<Stat.Label>Active Posts</Stat.Label>
<Stat.ValueText>
<FormatNumber value={posts?.length} />
</Stat.ValueText>
</Stat.Root>
);
};
@ -134,9 +134,9 @@ export const PostsManager = () => {
<PostsCountStat />
</Box>
</Flex>
<Divider />
<Separator />
<AddPost />
<Divider />
<Separator />
<Flex wrap="wrap">
<Box flex={1} borderRight="1px solid #eee">
<Box p={4} borderBottom="1px solid #eee">

View File

@ -1,13 +1,14 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import { Provider } from 'react-redux';
import { ChakraProvider } from '@chakra-ui/react';
import { Provider as ChakraProvider } from './components/ui/provider';
import './index.css';
import { store } from './store';
import DevTools from './features/DevTools/DevTools';
import { BrowserRouter } from 'react-router-dom';
import { App } from './App';
import { worker } from './mocks/browser';
import { Toaster } from './components/ui/toaster';
function renderApp() {
const rootElement = document.getElementById('root');
@ -17,6 +18,7 @@ function renderApp() {
<ChakraProvider>
<BrowserRouter>
<App />
<Toaster />
<DevTools />
</BrowserRouter>
</ChakraProvider>

View File

@ -1,5 +1,3 @@
/// <reference types="react-scripts" />
declare module '@redux-devtools/app';
declare module 'remote-redux-devtools';

View File

@ -21,5 +21,8 @@ export const store: EnhancedStore<ReturnType<typeof reducer>> = configureStore({
// adding the api middleware enables caching, invalidation, polling and other features of `rtk-query`
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat([pokemonApi.middleware, postsApi.middleware]),
enhancers: (devTools ? [] : [DevTools.instrument()]) as any,
enhancers: devTools
? undefined
: (getDefaultEnhancers) =>
getDefaultEnhancers().concat(DevTools.instrument()),
});

View File

@ -8,5 +8,7 @@ module.exports = {
'^.+\\.jsx?$': 'babel-jest',
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
},
transformIgnorePatterns: ['node_modules/(?!.pnpm|lodash-es|nanoid)'],
transformIgnorePatterns: [
'node_modules/(?!.pnpm|@x0k/json-schema-merge|color|lodash-es|nanoid)',
],
};

View File

@ -1,6 +1,6 @@
{
"name": "@redux-devtools/rtk-query-monitor",
"version": "5.2.0",
"version": "6.0.0",
"description": "rtk-query monitor for Redux DevTools",
"keywords": [
"redux",
@ -44,52 +44,52 @@
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
},
"dependencies": {
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.28.6",
"@redux-devtools/ui": "workspace:^",
"@types/lodash": "^4.17.16",
"@types/lodash": "^4.17.23",
"hex-rgba": "^1.0.2",
"immutable": "^5.0.3",
"immutable": "^5.1.4",
"lodash.debounce": "^4.0.8",
"react-base16-styling": "workspace:^",
"react-json-tree": "workspace:^"
},
"devDependencies": {
"@babel/cli": "^7.26.4",
"@babel/core": "^7.26.9",
"@babel/eslint-parser": "^7.26.8",
"@babel/plugin-transform-runtime": "^7.26.9",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/cli": "^7.28.6",
"@babel/core": "^7.28.6",
"@babel/eslint-parser": "^7.28.6",
"@babel/plugin-transform-runtime": "^7.28.5",
"@babel/preset-env": "^7.28.6",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@emotion/babel-preset-css-prop": "^11.12.0",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/core": "workspace:^",
"@reduxjs/toolkit": "^2.6.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.2.0",
"@types/jest": "^29.5.14",
"@reduxjs/toolkit": "^2.11.2",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@types/jest": "^30.0.0",
"@types/hex-rgba": "^1.0.3",
"@types/lodash.debounce": "^4.0.9",
"@types/react": "^18.3.18",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"@types/react": "^19.2.8",
"jest": "^30.2.0",
"jest-environment-jsdom": "^30.2.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-redux": "^9.2.0",
"redux": "^5.0.1",
"rimraf": "^6.0.1",
"ts-jest": "^29.2.6",
"typescript": "~5.8.2"
"rimraf": "^6.1.2",
"ts-jest": "^29.4.6",
"typescript": "~5.9.3"
},
"peerDependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@redux-devtools/core": "workspace:^",
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/styled-components": "^5.1.34",
"react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0",
"styled-components": "^5.3.11"
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
}
}

Some files were not shown because too many files have changed in this diff Show More