mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2026-02-26 00:50:49 +03:00
Compare commits
81 Commits
remotedev-
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0cd341fe35 | ||
|
|
62cb6ddc25 | ||
|
|
ed6d65bd30 | ||
|
|
8f5cf1b5bc | ||
|
|
21d5699045 | ||
|
|
d609bfb14d | ||
|
|
b350e7bae9 | ||
|
|
35aa092d45 | ||
|
|
102c21d43e | ||
|
|
b8219c2afc | ||
|
|
1e701e45cb | ||
|
|
78ed3b1efe | ||
|
|
fbdbb56d19 | ||
|
|
c7e77652c2 | ||
|
|
558e2ecfd3 | ||
|
|
d0e04165ab | ||
|
|
aebfca4f93 | ||
|
|
56de415db0 | ||
|
|
36f1f36471 | ||
|
|
1039d6c827 | ||
|
|
ebaf7cf102 | ||
|
|
a4343c3116 | ||
|
|
75cafed485 | ||
|
|
a663401e42 | ||
|
|
60a027e016 | ||
|
|
85e0eb9a67 | ||
|
|
8e6014f9d3 | ||
|
|
70c98a0c05 | ||
|
|
ebaf3e0516 | ||
|
|
10f112c0ee | ||
|
|
ca3782c545 | ||
|
|
9d4924ef1d | ||
|
|
16087352e1 | ||
|
|
f80b555457 | ||
|
|
c7a9b746d5 | ||
|
|
f0330162e6 | ||
|
|
531aa338e7 | ||
|
|
8308db6832 | ||
|
|
4e44c2ca50 | ||
|
|
4e81dc99c4 | ||
|
|
e9e6b33a6d | ||
|
|
20883e5bdf | ||
|
|
0e9528ea37 | ||
|
|
e327727f91 | ||
|
|
4a616983aa | ||
|
|
13e65e0f73 | ||
|
|
c3e35815d8 | ||
|
|
b1e2d4bd58 | ||
|
|
68f82b6994 | ||
|
|
30308f54ab | ||
|
|
5b28b69261 | ||
|
|
7a48268a74 | ||
|
|
fa20f09fc1 | ||
|
|
1e0d09251b | ||
|
|
2b7e1b890a | ||
|
|
119864cd95 | ||
|
|
dfa6c937c3 | ||
|
|
8b554db5bf | ||
|
|
842419b802 | ||
|
|
1e3fb5e27a | ||
|
|
da5e9f0c1a | ||
|
|
54c40135e5 | ||
|
|
61632768a7 | ||
|
|
585d6b9220 | ||
|
|
6468c48b75 | ||
|
|
41f3c1a7b6 | ||
|
|
c82e511929 | ||
|
|
832f4dc195 | ||
|
|
4b35476610 | ||
|
|
7873dd23ae | ||
|
|
9444ca7e87 | ||
|
|
b2f01026cb | ||
|
|
04c234dd49 | ||
|
|
c394803622 | ||
|
|
fd56ac7d92 | ||
|
|
65dce0864e | ||
|
|
e02cfd327c | ||
|
|
9ddcef672f | ||
|
|
3f52f16473 | ||
|
|
9f12777827 | ||
|
|
5dc8611c38 |
5
.changeset/brown-stingrays-grow.md
Normal file
5
.changeset/brown-stingrays-grow.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@redux-devtools/cli': major
|
||||||
|
---
|
||||||
|
|
||||||
|
Require Node.js 20
|
||||||
4
.github/workflows/CI.yml
vendored
4
.github/workflows/CI.yml
vendored
|
|
@ -11,9 +11,9 @@ jobs:
|
||||||
runs-on: 'ubuntu-22.04'
|
runs-on: 'ubuntu-22.04'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 'lts/*'
|
node-version: 'lts/*'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
|
||||||
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
|
|
@ -13,7 +13,7 @@ jobs:
|
||||||
runs-on: 'ubuntu-22.04'
|
runs-on: 'ubuntu-22.04'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repo
|
- name: Checkout Repo
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
|
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
@ -21,7 +21,7 @@ jobs:
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 'lts/*'
|
node-version: 'lts/*'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
@ -40,19 +40,19 @@ jobs:
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
- name: Archive Chrome Extension
|
- name: Archive Chrome Extension
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: chrome
|
name: chrome
|
||||||
path: extension/chrome/dist
|
path: extension/chrome/dist
|
||||||
|
|
||||||
- name: Archive Edge Extension
|
- name: Archive Edge Extension
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: edge
|
name: edge
|
||||||
path: extension/edge/dist
|
path: extension/edge/dist
|
||||||
|
|
||||||
- name: Archive Firefox Extension
|
- name: Archive Firefox Extension
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v6
|
||||||
with:
|
with:
|
||||||
name: firefox
|
name: firefox
|
||||||
path: extension/firefox/dist
|
path: extension/firefox/dist
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default [eslint.configs.recommended, eslintConfigPrettier];
|
export default defineConfig([eslint.configs.recommended, eslintConfigPrettier]);
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import react from 'eslint-plugin-react';
|
import react from 'eslint-plugin-react';
|
||||||
import { fixupPluginRules } from '@eslint/compat';
|
import reactHooks from 'eslint-plugin-react-hooks';
|
||||||
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
|
|
||||||
import jest from 'eslint-plugin-jest';
|
import jest from 'eslint-plugin-jest';
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default [
|
export default defineConfig([
|
||||||
{
|
{
|
||||||
files: ['test/**/*.js', 'test/**/*.jsx'],
|
files: ['test/**/*.js', 'test/**/*.jsx'],
|
||||||
...eslint.configs.recommended,
|
...eslint.configs.recommended,
|
||||||
|
|
@ -24,9 +24,7 @@ export default [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: ['test/**/*.js', 'test/**/*.jsx'],
|
files: ['test/**/*.js', 'test/**/*.jsx'],
|
||||||
plugins: {
|
...reactHooks.configs.flat.recommended,
|
||||||
'react-hooks': fixupPluginRules(eslintPluginReactHooks),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: ['test/**/*.js', 'test/**/*.jsx'],
|
files: ['test/**/*.js', 'test/**/*.jsx'],
|
||||||
|
|
@ -40,4 +38,4 @@ export default [
|
||||||
files: ['test/**/*.js', 'test/**/*.jsx'],
|
files: ['test/**/*.js', 'test/**/*.jsx'],
|
||||||
...eslintConfigPrettier,
|
...eslintConfigPrettier,
|
||||||
},
|
},
|
||||||
];
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,55 +1,57 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import tseslint from 'typescript-eslint';
|
import tseslint from 'typescript-eslint';
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default (tsconfigRootDir, files = ['**/*.ts'], project = true) => [
|
export default (tsconfigRootDir, files = ['**/*.ts'], project = true) =>
|
||||||
{
|
defineConfig([
|
||||||
files,
|
{
|
||||||
...eslint.configs.recommended,
|
files,
|
||||||
},
|
...eslint.configs.recommended,
|
||||||
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
},
|
||||||
files,
|
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
||||||
...config,
|
files,
|
||||||
})),
|
...config,
|
||||||
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
})),
|
||||||
files,
|
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
||||||
...config,
|
files,
|
||||||
})),
|
...config,
|
||||||
{
|
})),
|
||||||
files,
|
{
|
||||||
languageOptions: {
|
files,
|
||||||
parserOptions: {
|
languageOptions: {
|
||||||
project,
|
parserOptions: {
|
||||||
tsconfigRootDir,
|
project,
|
||||||
|
tsconfigRootDir,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
files,
|
||||||
files,
|
...eslintConfigPrettier,
|
||||||
...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,
|
||||||
|
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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,64 +1,66 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import tseslint from 'typescript-eslint';
|
import tseslint from 'typescript-eslint';
|
||||||
import jest from 'eslint-plugin-jest';
|
import jest from 'eslint-plugin-jest';
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default (tsconfigRootDir) => [
|
export default (tsconfigRootDir) =>
|
||||||
{
|
defineConfig([
|
||||||
files: ['test/**/*.ts'],
|
{
|
||||||
...eslint.configs.recommended,
|
files: ['test/**/*.ts'],
|
||||||
},
|
...eslint.configs.recommended,
|
||||||
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
},
|
||||||
files: ['test/**/*.ts'],
|
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
||||||
...config,
|
files: ['test/**/*.ts'],
|
||||||
})),
|
...config,
|
||||||
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
})),
|
||||||
files: ['test/**/*.ts'],
|
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
||||||
...config,
|
files: ['test/**/*.ts'],
|
||||||
})),
|
...config,
|
||||||
{
|
})),
|
||||||
files: ['test/**/*.ts'],
|
{
|
||||||
languageOptions: {
|
files: ['test/**/*.ts'],
|
||||||
parserOptions: {
|
languageOptions: {
|
||||||
project: ['./tsconfig.test.json'],
|
parserOptions: {
|
||||||
tsconfigRootDir,
|
project: ['./tsconfig.test.json'],
|
||||||
|
tsconfigRootDir,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
files: ['test/**/*.ts'],
|
||||||
files: ['test/**/*.ts'],
|
...jest.configs['flat/recommended'],
|
||||||
...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['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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,89 +1,88 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import tseslint from 'typescript-eslint';
|
import tseslint from 'typescript-eslint';
|
||||||
import react from 'eslint-plugin-react';
|
import react from 'eslint-plugin-react';
|
||||||
import { fixupPluginRules } from '@eslint/compat';
|
import reactHooks from 'eslint-plugin-react-hooks';
|
||||||
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
|
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default (
|
export default (
|
||||||
tsconfigRootDir,
|
tsconfigRootDir,
|
||||||
files = ['**/*.ts', '**/*.tsx'],
|
files = ['**/*.ts', '**/*.tsx'],
|
||||||
project = true,
|
project = true,
|
||||||
) => [
|
) =>
|
||||||
{
|
defineConfig([
|
||||||
files,
|
{
|
||||||
...eslint.configs.recommended,
|
files,
|
||||||
},
|
...eslint.configs.recommended,
|
||||||
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
|
||||||
files,
|
|
||||||
...config,
|
|
||||||
})),
|
|
||||||
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
|
||||||
files,
|
|
||||||
...config,
|
|
||||||
})),
|
|
||||||
{
|
|
||||||
files,
|
|
||||||
languageOptions: {
|
|
||||||
parserOptions: {
|
|
||||||
project,
|
|
||||||
tsconfigRootDir,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
||||||
{
|
files,
|
||||||
files,
|
...config,
|
||||||
...react.configs.flat.recommended,
|
})),
|
||||||
},
|
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
||||||
{
|
files,
|
||||||
files,
|
...config,
|
||||||
settings: {
|
})),
|
||||||
react: {
|
{
|
||||||
version: 'detect',
|
files,
|
||||||
},
|
languageOptions: {
|
||||||
},
|
parserOptions: {
|
||||||
},
|
project,
|
||||||
{
|
tsconfigRootDir,
|
||||||
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,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
},
|
||||||
'@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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,85 +1,84 @@
|
||||||
|
import { defineConfig } from 'eslint/config';
|
||||||
import eslint from '@eslint/js';
|
import eslint from '@eslint/js';
|
||||||
import tseslint from 'typescript-eslint';
|
import tseslint from 'typescript-eslint';
|
||||||
import react from 'eslint-plugin-react';
|
import react from 'eslint-plugin-react';
|
||||||
import { fixupPluginRules } from '@eslint/compat';
|
import reactHooks from 'eslint-plugin-react-hooks';
|
||||||
import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
|
|
||||||
import jest from 'eslint-plugin-jest';
|
import jest from 'eslint-plugin-jest';
|
||||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||||
|
|
||||||
export default (tsconfigRootDir) => [
|
export default (tsconfigRootDir) =>
|
||||||
{
|
defineConfig([
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
{
|
||||||
...eslint.configs.recommended,
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
},
|
...eslint.configs.recommended,
|
||||||
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
},
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
...tseslint.configs.recommendedTypeChecked.map((config) => ({
|
||||||
...config,
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
})),
|
...config,
|
||||||
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
})),
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
...tseslint.configs.stylisticTypeChecked.map((config) => ({
|
||||||
...config,
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
})),
|
...config,
|
||||||
{
|
})),
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
{
|
||||||
languageOptions: {
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
parserOptions: {
|
languageOptions: {
|
||||||
project: ['./tsconfig.test.json'],
|
parserOptions: {
|
||||||
tsconfigRootDir,
|
project: ['./tsconfig.test.json'],
|
||||||
|
tsconfigRootDir,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
...react.configs.flat.recommended,
|
||||||
...react.configs.flat.recommended,
|
},
|
||||||
},
|
{
|
||||||
{
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
settings: {
|
||||||
settings: {
|
react: {
|
||||||
react: {
|
version: 'detect',
|
||||||
version: 'detect',
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
...reactHooks.configs.flat.recommended,
|
||||||
plugins: {
|
|
||||||
'react-hooks': fixupPluginRules(eslintPluginReactHooks),
|
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
{
|
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
||||||
files: ['test/**/*.ts', 'test/**/*.tsx'],
|
...jest.configs['flat/recommended'],
|
||||||
...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['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',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,14 @@
|
||||||
# remotedev-redux-devtools-extension
|
# 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
|
## 3.2.10
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ const composeEnhancers =
|
||||||
compose;
|
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
|
```js
|
||||||
const composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
|
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)
|
- [Methods (advanced API)](docs/API/Methods.md)
|
||||||
- [FAQ](docs/FAQ.md)
|
- [FAQ](docs/FAQ.md)
|
||||||
- Features
|
- Features
|
||||||
- [Trace actions calls](/docs/Features/Trace.md)
|
- [Trace actions calls](docs/Features/Trace.md)
|
||||||
- [Troubleshooting](docs/Troubleshooting.md)
|
- [Troubleshooting](docs/Troubleshooting.md)
|
||||||
- [Articles](docs/Articles.md)
|
- [Articles](docs/Articles.md)
|
||||||
- [Videos](docs/Videos.md)
|
- [Videos](docs/Videos.md)
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,6 @@ _number_ - maximum stack trace frames to be stored (in case `trace` option was p
|
||||||
_boolean_ or _object_ which contains:
|
_boolean_ or _object_ which contains:
|
||||||
|
|
||||||
- **options** `object or boolean`:
|
- **options** `object or boolean`:
|
||||||
|
|
||||||
- `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).
|
- `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).
|
||||||
- `false` - will handle also circular references.
|
- `false` - will handle also circular references.
|
||||||
- `true` - will handle also date, regex, undefined, primitives, error objects, symbols, maps, sets and functions.
|
- `true` - will handle also date, regex, undefined, primitives, error objects, symbols, maps, sets and functions.
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,6 @@ module.exports = {
|
||||||
'\\.css$': '<rootDir>/test/__mocks__/styleMock.js',
|
'\\.css$': '<rootDir>/test/__mocks__/styleMock.js',
|
||||||
},
|
},
|
||||||
transformIgnorePatterns: [
|
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)',
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "remotedev-redux-devtools-extension",
|
"name": "remotedev-redux-devtools-extension",
|
||||||
"version": "3.2.10",
|
"version": "3.2.11",
|
||||||
"description": "Redux Developer Tools for debugging application state changes.",
|
"description": "Redux Developer Tools for debugging application state changes.",
|
||||||
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/extension",
|
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/extension",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
"build:examples": "babel-node examples/buildAll.js",
|
"build:examples": "babel-node examples/buildAll.js",
|
||||||
"clean": "rimraf dist && rimraf chrome/dist && rimraf edge/dist && rimraf firefox/dist",
|
"clean": "rimraf dist && rimraf chrome/dist && rimraf edge/dist && rimraf firefox/dist",
|
||||||
"test:app": "cross-env BABEL_ENV=test jest test/app",
|
"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",
|
"build:test:electron:fixture": "webpack --config test/electron/fixture/webpack.config.js",
|
||||||
"test:electron": "pnpm run build:test:electron:fixture && jest test/electron",
|
"test:electron": "pnpm run build:test:electron:fixture && jest test/electron",
|
||||||
"test": "pnpm run test:app && pnpm run test:chrome && pnpm run test:electron",
|
"test": "pnpm run test:app && pnpm run test:chrome && pnpm run test:electron",
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/app": "workspace:^",
|
"@redux-devtools/app": "workspace:^",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/instrument": "workspace:^",
|
"@redux-devtools/instrument": "workspace:^",
|
||||||
|
|
@ -32,50 +33,48 @@
|
||||||
"@redux-devtools/slider-monitor": "workspace:^",
|
"@redux-devtools/slider-monitor": "workspace:^",
|
||||||
"@redux-devtools/ui": "workspace:^",
|
"@redux-devtools/ui": "workspace:^",
|
||||||
"@redux-devtools/utils": "workspace:^",
|
"@redux-devtools/utils": "workspace:^",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@types/jsan": "^3.1.5",
|
"@types/jsan": "^3.1.5",
|
||||||
"jsan": "^3.1.14",
|
"jsan": "^3.1.14",
|
||||||
"localforage": "^1.10.0",
|
"localforage": "^1.10.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.22",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-is": "^18.3.1",
|
"react-is": "^19.2.3",
|
||||||
"react-json-tree": "workspace:^",
|
"react-json-tree": "workspace:^",
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@babel/register": "^7.25.9",
|
"@babel/register": "^7.28.6",
|
||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/jest-dom": "^6.6.3",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@testing-library/react": "^16.2.0",
|
"@testing-library/react": "^16.3.1",
|
||||||
"@types/chrome": "^0.0.308",
|
"@types/chrome": "^0.1.33",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/styled-components": "^5.1.34",
|
|
||||||
"chromedriver": "^126.0.5",
|
"chromedriver": "^126.0.5",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"electron": "^31.7.7",
|
"electron": "^31.7.7",
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.27.2",
|
||||||
"globals": "^15.15.0",
|
"globals": "^17.0.0",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"pug": "^3.0.3",
|
"pug": "^3.0.3",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"selenium-webdriver": "^4.29.0",
|
"selenium-webdriver": "^4.39.0",
|
||||||
"sinon-chrome": "^3.0.1",
|
"sinon-chrome": "^3.0.1",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1"
|
"webpack-cli": "^6.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,11 @@ export function getReport(
|
||||||
tabId: string | number,
|
tabId: string | number,
|
||||||
instanceId: 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;
|
if (!options['s:hostname'] || !options['s:port']) return;
|
||||||
const url = `${options['s:secure'] ? 'https' : 'http'}://${
|
const url = `${options['s:secure'] ? 'https' : 'http'}://${
|
||||||
options['s:hostname']
|
options['s:hostname']
|
||||||
|
|
|
||||||
|
|
@ -472,7 +472,7 @@ function messaging<S, A extends Action<string>>(
|
||||||
}
|
}
|
||||||
if (!request.message) return;
|
if (!request.message) return;
|
||||||
const reducerError = getReducerError();
|
const reducerError = getReducerError();
|
||||||
chrome.notifications.create('app-error', {
|
void chrome.notifications.create('app-error', {
|
||||||
type: 'basic',
|
type: 'basic',
|
||||||
title: reducerError
|
title: reducerError
|
||||||
? 'An error occurred in the reducer'
|
? 'An error occurred in the reducer'
|
||||||
|
|
@ -628,7 +628,7 @@ chrome.runtime.onMessage.addListener(messaging);
|
||||||
chrome.runtime.onMessageExternal.addListener(messaging);
|
chrome.runtime.onMessageExternal.addListener(messaging);
|
||||||
|
|
||||||
chrome.notifications.onClicked.addListener((id) => {
|
chrome.notifications.onClicked.addListener((id) => {
|
||||||
chrome.notifications.clear(id);
|
void chrome.notifications.clear(id);
|
||||||
openDevToolsWindow('devtools-window');
|
openDevToolsWindow('devtools-window');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ const migrateOldOptions = (oldOptions: OldOrNewOptions): Options => ({
|
||||||
export const getOptions = (callback: (options: Options) => void) => {
|
export const getOptions = (callback: (options: Options) => void) => {
|
||||||
if (options) callback(options);
|
if (options) callback(options);
|
||||||
else {
|
else {
|
||||||
chrome.storage.sync.get(
|
chrome.storage.sync.get<OldOrNewOptions>(
|
||||||
{
|
{
|
||||||
useEditor: 0,
|
useEditor: 0,
|
||||||
editor: '',
|
editor: '',
|
||||||
|
|
@ -92,7 +92,7 @@ export const getOptions = (callback: (options: Options) => void) => {
|
||||||
showContextMenus: true,
|
showContextMenus: true,
|
||||||
},
|
},
|
||||||
function (items) {
|
function (items) {
|
||||||
options = migrateOldOptions(items as OldOrNewOptions);
|
options = migrateOldOptions(items);
|
||||||
callback(options);
|
callback(options);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
27
package.json
27
package.json
|
|
@ -1,19 +1,18 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@changesets/cli": "^2.28.1",
|
"@changesets/cli": "^2.29.8",
|
||||||
"@eslint/compat": "^1.2.7",
|
"@eslint/js": "^9.39.2",
|
||||||
"@eslint/js": "^9.21.0",
|
"eslint": "^9.39.2",
|
||||||
"eslint": "^9.21.0",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"eslint-config-prettier": "^10.0.2",
|
"eslint-plugin-jest": "^29.12.1",
|
||||||
"eslint-plugin-jest": "^28.11.0",
|
"eslint-plugin-react": "^7.37.5",
|
||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react-hooks": "^7.0.1",
|
||||||
"eslint-plugin-react-hooks": "^4.6.2",
|
"jest": "^30.2.0",
|
||||||
"jest": "^29.7.0",
|
"prettier": "3.8.0",
|
||||||
"prettier": "3.5.3",
|
"typescript": "~5.9.3",
|
||||||
"typescript": "~5.8.2",
|
"typescript-eslint": "^8.53.0"
|
||||||
"typescript-eslint": "^8.26.0"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --write .",
|
"format": "prettier --write .",
|
||||||
|
|
@ -24,5 +23,5 @@
|
||||||
"clean:all": "pnpm --recursive run clean",
|
"clean:all": "pnpm --recursive run clean",
|
||||||
"release": "pnpm build:all && pnpm publish -r"
|
"release": "pnpm build:all && pnpm publish -r"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@9.15.6"
|
"packageManager": "pnpm@10.28.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
### Major Changes
|
### Major Changes
|
||||||
|
|
||||||
- b323f77d: Upgrade D3
|
- b323f77d: Upgrade D3
|
||||||
|
|
||||||
- Remove UMD build.
|
- Remove UMD build.
|
||||||
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
|
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
|
||||||
- The shape of the argument passed to the `onClickText` option has been updated.
|
- The shape of the argument passed to the `onClickText` option has been updated.
|
||||||
|
|
|
||||||
|
|
@ -29,18 +29,18 @@
|
||||||
"map2tree": "workspace:^"
|
"map2tree": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,11 @@
|
||||||
"d3tooltip": "workspace:^",
|
"d3tooltip": "workspace:^",
|
||||||
"deepmerge": "^4.3.1",
|
"deepmerge": "^4.3.1",
|
||||||
"map2tree": "workspace:^",
|
"map2tree": "workspace:^",
|
||||||
"ramda": "^0.30.1"
|
"ramda": "^0.32.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/ramda": "^0.30.2",
|
"@types/ramda": "^0.31.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
### Major Changes
|
### Major Changes
|
||||||
|
|
||||||
- b323f77d: Upgrade D3
|
- b323f77d: Upgrade D3
|
||||||
|
|
||||||
- Remove UMD build.
|
- Remove UMD build.
|
||||||
- Upgrade d3 peer dependency from v3 to v7.
|
- Upgrade d3 peer dependency from v3 to v7.
|
||||||
- Remove `attr` configuration method.
|
- Remove `attr` configuration method.
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/d3": "^7.4.3",
|
"@types/d3": "^7.4.3",
|
||||||
"d3": "^7.9.0",
|
"d3": "^7.9.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/d3": "^7.4.3",
|
"@types/d3": "^7.4.3",
|
||||||
|
|
|
||||||
|
|
@ -37,15 +37,15 @@
|
||||||
"prepublish": "pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lodash-es": "^4.17.21"
|
"lodash-es": "^4.17.22"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,19 +36,19 @@
|
||||||
"prepublish": "pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/lodash": "^4.17.16",
|
"@types/lodash": "^4.17.23",
|
||||||
"color": "^4.2.3",
|
"color": "^5.0.3",
|
||||||
"csstype": "^3.1.3",
|
"csstype": "^3.2.3",
|
||||||
"lodash-es": "^4.17.21"
|
"lodash-es": "^4.17.22"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/color": "^4.2.0",
|
"@types/color": "^4.2.0",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,31 +10,30 @@
|
||||||
"type-check": "tsc --noEmit"
|
"type-check": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"react": "^18.3.1",
|
"@emotion/styled": "^11.14.1",
|
||||||
"react-bootstrap": "^2.10.9",
|
"react": "^19.2.3",
|
||||||
|
"react-bootstrap": "^2.10.10",
|
||||||
"react-dock": "workspace:^",
|
"react-dock": "workspace:^",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-is": "^18.3.1",
|
"react-is": "^19.2.3"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/styled-components": "^5.1.34",
|
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React, { Component } from 'react';
|
||||||
import Button from 'react-bootstrap/Button';
|
import Button from 'react-bootstrap/Button';
|
||||||
import Form from 'react-bootstrap/Form';
|
import Form from 'react-bootstrap/Form';
|
||||||
import { BsX } from 'react-icons/bs';
|
import { BsX } from 'react-icons/bs';
|
||||||
import styled from 'styled-components';
|
import styled from '@emotion/styled';
|
||||||
|
|
||||||
import { Dock } from 'react-dock';
|
import { Dock } from 'react-dock';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
import eslintJs from '../../eslint.js.config.base.mjs';
|
import eslintJs from '../../eslint.js.config.base.mjs';
|
||||||
import eslintTsReact from '../../eslint.ts.react.config.base.mjs';
|
import eslintTsReact from '../../eslint.ts.react.config.base.mjs';
|
||||||
import eslintTsReactJest from '../../eslint.ts.react.jest.config.base.mjs';
|
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
...eslintJs,
|
...eslintJs,
|
||||||
...eslintTsReact(import.meta.dirname),
|
...eslintTsReact(import.meta.dirname),
|
||||||
...eslintTsReactJest(import.meta.dirname),
|
|
||||||
{
|
{
|
||||||
ignores: ['demo', 'lib'],
|
ignores: ['demo', 'lib'],
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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 },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
@ -29,27 +29,20 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"clean": "rimraf lib",
|
"clean": "rimraf lib",
|
||||||
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
"type-check": "tsc --noEmit",
|
"type-check": "tsc --noEmit",
|
||||||
"prepack": "pnpm run clean && pnpm run build",
|
"prepack": "pnpm run clean && pnpm run build",
|
||||||
"prepublish": "pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"lodash-es": "^4.17.21"
|
"lodash-es": "^4.17.22"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.14",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react": "^18.3.18",
|
"react": "^19.2.3",
|
||||||
"@types/react-test-renderer": "^18.3.1",
|
"rimraf": "^6.1.2",
|
||||||
"jest": "^29.7.0",
|
"typescript": "~5.9.3"
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
"@types/react": "^16.3.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
|
|
|
||||||
|
|
@ -228,12 +228,12 @@ interface Props {
|
||||||
dockHiddenStyle?: React.CSSProperties | null;
|
dockHiddenStyle?: React.CSSProperties | null;
|
||||||
duration: number;
|
duration: number;
|
||||||
children?:
|
children?:
|
||||||
| React.FunctionComponent<{
|
| ((params: {
|
||||||
position: 'left' | 'right' | 'top' | 'bottom';
|
position: 'left' | 'right' | 'top' | 'bottom';
|
||||||
isResizing: boolean | undefined;
|
isResizing: boolean | undefined;
|
||||||
size: number;
|
size: number;
|
||||||
isVisible: boolean | undefined;
|
isVisible: boolean | undefined;
|
||||||
}>
|
}) => ReactNode)
|
||||||
| ReactNode;
|
| ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -363,14 +363,7 @@ export default class Dock extends Component<Props, State> {
|
||||||
/>
|
/>
|
||||||
<div style={styles.dockContent}>
|
<div style={styles.dockContent}>
|
||||||
{typeof children === 'function'
|
{typeof children === 'function'
|
||||||
? (
|
? children({
|
||||||
children as React.FunctionComponent<{
|
|
||||||
position: 'left' | 'right' | 'top' | 'bottom';
|
|
||||||
isResizing: boolean | undefined;
|
|
||||||
size: number;
|
|
||||||
isVisible: boolean | undefined;
|
|
||||||
}>
|
|
||||||
)({
|
|
||||||
position,
|
position,
|
||||||
isResizing,
|
isResizing,
|
||||||
size,
|
size,
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,8 @@ const prefixes = ['Moz', 'Webkit', 'ms', 'O'];
|
||||||
function prefixProp<Value>(key: string, value: Value) {
|
function prefixProp<Value>(key: string, value: Value) {
|
||||||
return prefixes.reduce<{ [key: string]: Value }>(
|
return prefixes.reduce<{ [key: string]: Value }>(
|
||||||
(obj, pre) => (
|
(obj, pre) => (
|
||||||
(obj[pre + key[0].toUpperCase() + key.substr(1)] = value), obj
|
(obj[pre + key[0].toUpperCase() + key.substr(1)] = value),
|
||||||
|
obj
|
||||||
),
|
),
|
||||||
{},
|
{},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -22,7 +22,6 @@
|
||||||
### Major Changes
|
### Major Changes
|
||||||
|
|
||||||
- 81926f32: Remove UNSAFE method from react-json-tree
|
- 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.
|
- 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.
|
- 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`.
|
- Tightened TypeScript prop types to use `unknown` instead of `any` where possible and make the key path array `readonly`.
|
||||||
|
|
|
||||||
|
|
@ -19,28 +19,28 @@
|
||||||
"type-check": "tsc --noEmit"
|
"type-check": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-json-tree": "workspace:^"
|
"react-json-tree": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,19 +40,17 @@
|
||||||
"prepublish": "pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/lodash": "^4.17.16",
|
"@types/lodash": "^4.17.23",
|
||||||
"react-base16-styling": "workspace:^"
|
"react-base16-styling": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-test-renderer": "^18.3.1",
|
"jest": "^30.2.0",
|
||||||
"jest": "^29.7.0",
|
"react": "^19.2.3",
|
||||||
"react": "^18.3.1",
|
"rimraf": "^6.1.2",
|
||||||
"react-test-renderer": "^18.3.1",
|
"ts-jest": "^29.4.6",
|
||||||
"rimraf": "^6.0.1",
|
"typescript": "~5.9.3"
|
||||||
"ts-jest": "^29.2.6",
|
|
||||||
"typescript": "~5.8.2"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -1,5 +1,21 @@
|
||||||
# @redux-devtools/app-core
|
# @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
|
## 1.1.2
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,6 @@ module.exports = {
|
||||||
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
||||||
},
|
},
|
||||||
transformIgnorePatterns: [
|
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)',
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/app-core",
|
"name": "@redux-devtools/app-core",
|
||||||
"version": "1.1.2",
|
"version": "2.0.0",
|
||||||
"description": "Redux DevTools app core",
|
"description": "Redux DevTools app core",
|
||||||
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app-core",
|
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app-core",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@redux-devtools/chart-monitor": "workspace:^",
|
"@redux-devtools/chart-monitor": "workspace:^",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
|
|
@ -48,56 +48,54 @@
|
||||||
"d3-state-visualizer": "workspace:^",
|
"d3-state-visualizer": "workspace:^",
|
||||||
"javascript-stringify": "^2.1.0",
|
"javascript-stringify": "^2.1.0",
|
||||||
"jsan": "^3.1.14",
|
"jsan": "^3.1.14",
|
||||||
"jsondiffpatch": "^0.6.0",
|
"jsondiffpatch": "^0.7.3",
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-is": "^18.3.1"
|
"react-is": "^19.2.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@emotion/styled": "^11.14.1",
|
||||||
"@rjsf/core": "^5.24.3",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@testing-library/dom": "^10.4.0",
|
"@rjsf/core": "^6.2.4",
|
||||||
"@testing-library/jest-dom": "^6.6.3",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/react": "^16.2.0",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@types/jest": "^29.5.14",
|
"@testing-library/react": "^16.3.1",
|
||||||
|
"@types/jest": "^30.0.0",
|
||||||
"@types/jsan": "^3.1.5",
|
"@types/jsan": "^3.1.5",
|
||||||
"@types/json-schema": "^7.0.15",
|
"@types/json-schema": "^7.0.15",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/styled-components": "^5.1.34",
|
"cross-env": "^10.1.0",
|
||||||
"cross-env": "^7.0.3",
|
"esbuild": "^0.27.2",
|
||||||
"esbuild": "^0.25.0",
|
"jest": "^30.2.0",
|
||||||
"jest": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"react": "^19.2.3",
|
||||||
"react": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"styled-components": "^5.3.11",
|
"ts-jest": "^29.4.6",
|
||||||
"ts-jest": "^29.2.6",
|
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
||||||
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.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": "^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-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
"react-redux": "^8.0.0 || ^9.0.0",
|
"react-redux": "^8.0.0 || ^9.0.0",
|
||||||
"redux": "^4.0.0 || ^5.0.0",
|
"redux": "^4.0.0 || ^5.0.0",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { withTheme } from 'styled-components';
|
import { withTheme } from '@emotion/react';
|
||||||
import { LiftedAction, LiftedState } from '@redux-devtools/core';
|
import { LiftedAction, LiftedState } from '@redux-devtools/core';
|
||||||
import { Action } from 'redux';
|
import { Action } from 'redux';
|
||||||
import getMonitor from '../utils/getMonitor';
|
import getMonitor from '../utils/getMonitor';
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
// Based on https://github.com/YoruNoHikage/redux-devtools-dispatch
|
// Based on https://github.com/YoruNoHikage/redux-devtools-dispatch
|
||||||
|
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from '@emotion/styled';
|
||||||
import { Button, Select, Editor, Toolbar } from '@redux-devtools/ui';
|
import {
|
||||||
|
Button,
|
||||||
|
Select,
|
||||||
|
Editor,
|
||||||
|
Toolbar,
|
||||||
|
Base16Theme,
|
||||||
|
} from '@redux-devtools/ui';
|
||||||
import { connect, ResolveThunks } from 'react-redux';
|
import { connect, ResolveThunks } from 'react-redux';
|
||||||
import { dispatchRemotely } from '../../actions';
|
import { dispatchRemotely } from '../../actions';
|
||||||
import { Options } from '../../reducers/instances';
|
import { Options } from '../../reducers/instances';
|
||||||
|
|
@ -12,7 +18,7 @@ export const DispatcherContainer = styled.div`
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
background: ${(props) => props.theme.base01};
|
background: ${(props: { theme?: Base16Theme }) => props.theme!.base01};
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const CodeContainer = styled.div`
|
export const CodeContainer = styled.div`
|
||||||
|
|
@ -24,7 +30,7 @@ export const CodeContainer = styled.div`
|
||||||
export const ActionContainer = styled.div`
|
export const ActionContainer = styled.div`
|
||||||
display: table;
|
display: table;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
color: ${(props) => props.theme.base06};
|
color: ${(props: { theme?: Base16Theme }) => props.theme!.base06};
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
display: table-row;
|
display: table-row;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { Component, RefCallback } from 'react';
|
import React, { Component, RefCallback } from 'react';
|
||||||
import { connect, ResolveThunks } from 'react-redux';
|
import { connect, ResolveThunks } from 'react-redux';
|
||||||
import { withTheme } from 'styled-components';
|
import { withTheme } from '@emotion/react';
|
||||||
import { tree } from 'd3-state-visualizer';
|
import { tree } from 'd3-state-visualizer';
|
||||||
import type { HierarchyPointNode, Node, Options } from 'd3-state-visualizer';
|
import type { HierarchyPointNode, Node, Options } from 'd3-state-visualizer';
|
||||||
import { getPath } from '../ChartMonitorWrapper';
|
import { getPath } from '../ChartMonitorWrapper';
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import type { Delta } from 'jsondiffpatch';
|
import type { Delta } from 'jsondiffpatch';
|
||||||
import * as htmlFormatter from 'jsondiffpatch/formatters/html';
|
import * as htmlFormatter from 'jsondiffpatch/formatters/html';
|
||||||
import styled, { ThemedStyledProps } from 'styled-components';
|
import styled from '@emotion/styled';
|
||||||
import { effects, Theme } from '@redux-devtools/ui';
|
import { Base16Theme, effects } from '@redux-devtools/ui';
|
||||||
|
|
||||||
export const StyledContainer = styled.div`
|
export const StyledContainer = styled.div`
|
||||||
.jsondiffpatch-delta {
|
.jsondiffpatch-delta {
|
||||||
|
|
@ -19,8 +19,7 @@ export const StyledContainer = styled.div`
|
||||||
padding: 2px 3px;
|
padding: 2px 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
position: relative;
|
position: relative;
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
color: ${(props: { theme?: Base16Theme }) => props.theme!.base07};
|
||||||
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,25 +43,22 @@ export const StyledContainer = styled.div`
|
||||||
.jsondiffpatch-modified .jsondiffpatch-right-value:before {
|
.jsondiffpatch-modified .jsondiffpatch-right-value:before {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
color: ${(props) => props.theme.base0E};
|
||||||
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0E};
|
|
||||||
content: ' => ';
|
content: ' => ';
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-added .jsondiffpatch-value pre,
|
.jsondiffpatch-added .jsondiffpatch-value pre,
|
||||||
.jsondiffpatch-modified .jsondiffpatch-right-value pre,
|
.jsondiffpatch-modified .jsondiffpatch-right-value pre,
|
||||||
.jsondiffpatch-textdiff-added {
|
.jsondiffpatch-textdiff-added {
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
background: ${(props: { theme?: Base16Theme }) =>
|
||||||
background: ${(props: ThemedStyledProps<{}, Theme>) =>
|
effects.color(props.theme!.base0B, 'alpha', 0.2)};
|
||||||
effects.color(props.theme.base0B, 'alpha', 0.2)};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-deleted pre,
|
.jsondiffpatch-deleted pre,
|
||||||
.jsondiffpatch-modified .jsondiffpatch-left-value pre,
|
.jsondiffpatch-modified .jsondiffpatch-left-value pre,
|
||||||
.jsondiffpatch-textdiff-deleted {
|
.jsondiffpatch-textdiff-deleted {
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
background: ${(props: { theme?: Base16Theme }) =>
|
||||||
background: ${(props: ThemedStyledProps<{}, Theme>) =>
|
effects.color(props.theme!.base08, 'alpha', 0.2)};
|
||||||
effects.color(props.theme.base08, 'alpha', 0.2)};
|
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -129,14 +125,12 @@ export const StyledContainer = styled.div`
|
||||||
padding: 2px 0;
|
padding: 2px 0;
|
||||||
padding-right: 5px;
|
padding-right: 5px;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
color: ${(props) => props.theme.base0D};
|
||||||
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0D};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-property-name:after {
|
.jsondiffpatch-property-name:after {
|
||||||
content: ': ';
|
content: ': ';
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
color: ${(props) => props.theme.base07};
|
||||||
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-child-node-type-array > .jsondiffpatch-property-name:after {
|
.jsondiffpatch-child-node-type-array > .jsondiffpatch-property-name:after {
|
||||||
|
|
@ -172,8 +166,7 @@ export const StyledContainer = styled.div`
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-value pre:after {
|
.jsondiffpatch-value pre:after {
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
color: ${(props) => props.theme.base07};
|
||||||
color: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base07};
|
|
||||||
content: ',';
|
content: ',';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,8 +189,7 @@ export const StyledContainer = styled.div`
|
||||||
|
|
||||||
.jsondiffpatch-moved .jsondiffpatch-moved-destination {
|
.jsondiffpatch-moved .jsondiffpatch-moved-destination {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
${/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ ''}
|
background: ${(props) => props.theme.base0A};
|
||||||
background: ${(props: ThemedStyledProps<{}, Theme>) => props.theme.base0A};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.jsondiffpatch-moved .jsondiffpatch-moved-destination:before {
|
.jsondiffpatch-moved .jsondiffpatch-moved-destination:before {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
import React, { Component } from 'react';
|
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 { SliderMonitor } from '@redux-devtools/slider-monitor';
|
||||||
import { LiftedAction } from '@redux-devtools/core';
|
import { LiftedAction } from '@redux-devtools/core';
|
||||||
import { Action } from 'redux';
|
import { Action } from 'redux';
|
||||||
import { ThemeFromProvider } from '@redux-devtools/ui';
|
import { Base16Theme, ThemeFromProvider } from '@redux-devtools/ui';
|
||||||
import { State } from '../../reducers/instances';
|
import { State } from '../../reducers/instances';
|
||||||
|
|
||||||
const SliderWrapper = styled.div`
|
const SliderWrapper = styled.div`
|
||||||
border-color: ${(props) => props.theme.base02};
|
border-color: ${(props: { theme?: Base16Theme }) => props.theme!.base02};
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 1px 0;
|
border-width: 1px 0;
|
||||||
`;
|
`;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,17 @@
|
||||||
# Change Log
|
# 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
|
## 6.2.2
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/app",
|
"name": "@redux-devtools/app",
|
||||||
"version": "6.2.2",
|
"version": "7.0.0",
|
||||||
"description": "Redux DevTools app",
|
"description": "Redux DevTools app",
|
||||||
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app",
|
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-app",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
@ -46,54 +46,52 @@
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-persist": "^6.0.0",
|
"redux-persist": "^6.0.0",
|
||||||
"socketcluster-client": "^19.2.3"
|
"socketcluster-client": "^20.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@emotion/styled": "^11.14.1",
|
||||||
"@rjsf/core": "^5.24.3",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
|
"@rjsf/core": "^6.2.4",
|
||||||
"@types/jsan": "^3.1.5",
|
"@types/jsan": "^3.1.5",
|
||||||
"@types/json-schema": "^7.0.15",
|
"@types/json-schema": "^7.0.15",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/socketcluster-client": "^19.1.0",
|
"@types/socketcluster-client": "^20.0.0",
|
||||||
"@types/styled-components": "^5.1.34",
|
|
||||||
"@types/webpack-env": "^1.18.8",
|
"@types/webpack-env": "^1.18.8",
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"css-loader": "^7.1.2",
|
"css-loader": "^7.1.2",
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.27.2",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"globals": "^15.15.0",
|
"globals": "^17.0.0",
|
||||||
"html-loader": "^5.1.0",
|
"html-loader": "^5.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"style-loader": "^4.0.0",
|
"style-loader": "^4.0.0",
|
||||||
"styled-components": "^5.3.11",
|
"ts-jest": "^29.4.6",
|
||||||
"ts-jest": "^29.2.6",
|
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
||||||
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.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": "^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-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,6 @@
|
||||||
### Major Changes
|
### Major Changes
|
||||||
|
|
||||||
- b323f77d: Upgrade D3
|
- b323f77d: Upgrade D3
|
||||||
|
|
||||||
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
|
- Split `style` option into `chartStyles`, `nodeStyleOptions`, `textStyleOptions`, and `linkStyles`.
|
||||||
- The shape of the argument passed to the `onClickText` option has been updated.
|
- The shape of the argument passed to the `onClickText` option has been updated.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,25 +39,25 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"d3-state-visualizer": "workspace:^",
|
"d3-state-visualizer": "workspace:^",
|
||||||
"deepmerge": "^4.3.1",
|
"deepmerge": "^4.3.1",
|
||||||
"react-base16-styling": "workspace:^"
|
"react-base16-styling": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@ const wrapperStyle = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface Props<S, A extends Action<string>>
|
export interface Props<S, A extends Action<string>>
|
||||||
extends LiftedState<S, A, ChartMonitorState>,
|
extends LiftedState<S, A, ChartMonitorState>, Options {
|
||||||
Options {
|
|
||||||
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
|
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
|
||||||
preserveScrollTop: boolean;
|
preserveScrollTop: boolean;
|
||||||
select: (state: S) => unknown;
|
select: (state: S) => unknown;
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,7 @@ function invertColors(theme: Base16Theme) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ChartMonitorProps<S, A extends Action<string>>
|
export interface ChartMonitorProps<S, A extends Action<string>>
|
||||||
extends LiftedState<S, A, ChartMonitorState>,
|
extends LiftedState<S, A, ChartMonitorState>, Options {
|
||||||
Options {
|
|
||||||
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
|
dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>;
|
||||||
preserveScrollTop: boolean;
|
preserveScrollTop: boolean;
|
||||||
select: (state: S) => unknown;
|
select: (state: S) => unknown;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 4.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [6163276]
|
||||||
|
- @redux-devtools/app@7.0.0
|
||||||
|
|
||||||
## 4.0.3
|
## 4.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/cli",
|
"name": "@redux-devtools/cli",
|
||||||
"version": "4.0.3",
|
"version": "4.0.4",
|
||||||
"description": "CLI for remote debugging with Redux DevTools.",
|
"description": "CLI for remote debugging with Redux DevTools.",
|
||||||
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-cli",
|
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-cli",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
@ -38,59 +38,59 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 18.12.0"
|
"node": ">=20"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/server": "^4.11.3",
|
"@apollo/server": "^5.2.0",
|
||||||
|
"@as-integrations/express5": "^1.1.2",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/app": "workspace:^",
|
"@redux-devtools/app": "workspace:^",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"body-parser": "^1.20.3",
|
"body-parser": "^2.2.2",
|
||||||
"chalk": "^5.4.1",
|
"chalk": "^5.6.2",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"cross-spawn": "^7.0.6",
|
"cross-spawn": "^7.0.6",
|
||||||
"electron": "^31.7.7",
|
"electron": "^31.7.7",
|
||||||
"express": "^4.21.2",
|
"express": "^5.2.1",
|
||||||
"get-port": "^7.1.0",
|
"get-port": "^7.1.0",
|
||||||
"graphql": "^16.10.0",
|
"graphql": "^16.12.0",
|
||||||
"knex": "^3.1.0",
|
"knex": "^3.1.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.22",
|
||||||
"minimist": "^1.2.8",
|
"minimist": "^1.2.8",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.1",
|
||||||
"open": "^10.1.0",
|
"open": "^11.0.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-is": "^18.3.1",
|
"react-is": "^19.2.3",
|
||||||
"semver": "^7.7.1",
|
"semver": "^7.7.3",
|
||||||
"socketcluster-server": "^19.1.1",
|
"socketcluster-server": "^20.0.0",
|
||||||
"sqlite3": "^5.1.7",
|
"sqlite3": "^5.1.7",
|
||||||
"styled-components": "^5.3.11",
|
"uuid": "^13.0.0"
|
||||||
"uuid": "^10.0.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/body-parser": "^1.19.5",
|
"@types/body-parser": "^1.19.6",
|
||||||
"@types/cors": "^2.8.17",
|
"@types/cors": "^2.8.19",
|
||||||
"@types/cross-spawn": "^6.0.6",
|
"@types/cross-spawn": "^6.0.6",
|
||||||
"@types/express": "^4.17.21",
|
"@types/express": "^5.0.6",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/minimist": "^1.2.5",
|
"@types/minimist": "^1.2.5",
|
||||||
"@types/morgan": "^1.9.9",
|
"@types/morgan": "^1.9.10",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/semver": "^7.5.8",
|
"@types/semver": "^7.7.1",
|
||||||
"@types/socketcluster-client": "^19.1.0",
|
"@types/socketcluster-client": "^20.0.0",
|
||||||
"@types/socketcluster-server": "^19.0.1",
|
"@types/socketcluster-server": "^20.0.0",
|
||||||
"@types/styled-components": "^5.1.34",
|
"@types/supertest": "^6.0.3",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/uuid": "^11.0.0",
|
||||||
"@types/uuid": "^10.0.0",
|
"globals": "^17.0.0",
|
||||||
"globals": "^15.15.0",
|
"jest": "^30.2.0",
|
||||||
"jest": "^29.7.0",
|
|
||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"socketcluster-client": "^19.2.3",
|
"socketcluster-client": "^20.0.1",
|
||||||
"supertest": "^7.0.0",
|
"supertest": "^7.2.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ export default async function (argv: { [arg: string]: any }): Promise<{
|
||||||
const agServer = socketClusterServer.attach(httpServer, options);
|
const agServer = socketClusterServer.attach(httpServer, options);
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
httpServer.on('request', app);
|
httpServer.on('request', app);
|
||||||
const store = createStore(options);
|
const store = createStore(options);
|
||||||
app.use(routes(options, store, agServer));
|
app.use(routes(options, store, agServer));
|
||||||
|
|
@ -76,7 +77,7 @@ export default async function (argv: { [arg: string]: any }): Promise<{
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.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);
|
request.end(data);
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.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')) {
|
for await (const data of socket.listener('disconnect')) {
|
||||||
const channel = agServer.exchange.channel('sc-' + socket.id);
|
const channel = agServer.exchange.channel('sc-' + socket.id);
|
||||||
channel.unsubscribe();
|
channel.unsubscribe();
|
||||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
||||||
void agServer.exchange.transmitPublish(channelToEmit!, {
|
void agServer.exchange.transmitPublish(channelToEmit!, {
|
||||||
id: socket.id,
|
id: socket.id,
|
||||||
type: 'DISCONNECTED',
|
type: 'DISCONNECTED',
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import bodyParser from 'body-parser';
|
||||||
import cors from 'cors';
|
import cors from 'cors';
|
||||||
import { AGServer } from 'socketcluster-server';
|
import { AGServer } from 'socketcluster-server';
|
||||||
import { ApolloServer } from '@apollo/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 type { AddData, ReportBaseFields, Store } from './store.js';
|
||||||
import { resolvers, schema } from './api/schema.js';
|
import { resolvers, schema } from './api/schema.js';
|
||||||
|
|
||||||
|
|
@ -68,7 +68,7 @@ function routes(
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error(error); // eslint-disable-line no-console
|
console.error(error);
|
||||||
});
|
});
|
||||||
|
|
||||||
serveUmdModule('react');
|
serveUmdModule('react');
|
||||||
|
|
@ -76,10 +76,9 @@ function routes(
|
||||||
serveUmdModule('@redux-devtools/app');
|
serveUmdModule('@redux-devtools/app');
|
||||||
|
|
||||||
app.get('/port.js', function (req, res) {
|
app.get('/port.js', function (req, res) {
|
||||||
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
||||||
res.send(`reduxDevToolsPort = ${options.port}`);
|
res.send(`reduxDevToolsPort = ${options.port}`);
|
||||||
});
|
});
|
||||||
app.get('*', function (req, res) {
|
app.get('/{*splat}', function (req, res) {
|
||||||
res.sendFile(
|
res.sendFile(
|
||||||
path.join(
|
path.join(
|
||||||
path.dirname(fileURLToPath(import.meta.url)),
|
path.dirname(fileURLToPath(import.meta.url)),
|
||||||
|
|
@ -93,7 +92,10 @@ function routes(
|
||||||
app.use(bodyParser.urlencoded({ limit: limit, extended: false }));
|
app.use(bodyParser.urlencoded({ limit: limit, extended: false }));
|
||||||
|
|
||||||
app.post('/', function (req, res) {
|
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) {
|
switch (req.body.op) {
|
||||||
case 'get':
|
case 'get':
|
||||||
store
|
store
|
||||||
|
|
@ -102,7 +104,7 @@ function routes(
|
||||||
res.send(r || {});
|
res.send(r || {});
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
console.error(error); // eslint-disable-line no-console
|
console.error(error);
|
||||||
res.sendStatus(500);
|
res.sendStatus(500);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
@ -113,7 +115,7 @@ function routes(
|
||||||
res.send(r);
|
res.send(r);
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
console.error(error); // eslint-disable-line no-console
|
console.error(error);
|
||||||
res.sendStatus(500);
|
res.sendStatus(500);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
@ -131,7 +133,7 @@ function routes(
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
console.error(error); // eslint-disable-line no-console
|
console.error(error);
|
||||||
res.status(500).send({});
|
res.status(500).send({});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,25 +41,25 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"parse-key": "^0.2.1",
|
"parse-key": "^0.2.1",
|
||||||
"react-dock": "workspace:^"
|
"react-dock": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@types/parse-key": "^0.2.2",
|
"@types/parse-key": "^0.2.2",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
|
|
|
||||||
|
|
@ -44,8 +44,10 @@ interface DefaultProps {
|
||||||
fluid: boolean;
|
fluid: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DockMonitorProps<S, A extends Action<string>>
|
export interface DockMonitorProps<
|
||||||
extends LiftedState<S, A, DockMonitorState> {
|
S,
|
||||||
|
A extends Action<string>,
|
||||||
|
> extends LiftedState<S, A, DockMonitorState> {
|
||||||
defaultPosition: 'left' | 'top' | 'right' | 'bottom';
|
defaultPosition: 'left' | 'top' | 'right' | 'bottom';
|
||||||
defaultIsVisible: boolean;
|
defaultIsVisible: boolean;
|
||||||
defaultSize: number;
|
defaultSize: number;
|
||||||
|
|
|
||||||
|
|
@ -29,18 +29,18 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9"
|
"@babel/runtime": "^7.28.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"redux": "^3.1.0 || ^4.0.0 || ^5.0.0"
|
"redux": "^3.1.0 || ^4.0.0 || ^5.0.0"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,18 @@
|
||||||
# Change Log
|
# 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
|
## 4.1.1
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,15 @@
|
||||||
# test-demo
|
# 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
|
## 0.1.17
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "test-demo",
|
"name": "test-demo",
|
||||||
"version": "0.1.17",
|
"version": "0.1.18",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
|
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
|
||||||
|
|
@ -11,44 +11,43 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/dock-monitor": "workspace:^",
|
"@redux-devtools/dock-monitor": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor-test-tab": "workspace:^",
|
"@redux-devtools/inspector-monitor-test-tab": "workspace:^",
|
||||||
"@redux-devtools/ui": "workspace:^",
|
"@redux-devtools/ui": "workspace:^",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"lodash.shuffle": "^4.2.0",
|
"lodash.shuffle": "^4.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-is": "^18.3.1",
|
"react-is": "^19.2.3",
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"react-router-dom": "^6.30.0",
|
"react-router-dom": "^7.12.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-logger": "^3.0.6",
|
"redux-logger": "^3.0.6"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/lodash.shuffle": "^4.2.9",
|
"@types/lodash.shuffle": "^4.2.9",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/redux-logger": "^3.0.13",
|
"@types/redux-logger": "^3.0.13",
|
||||||
"@types/styled-components": "^5.1.34",
|
|
||||||
"@types/webpack-env": "^1.18.8",
|
"@types/webpack-env": "^1.18.8",
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"css-loader": "^7.1.2",
|
"css-loader": "^7.1.2",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"style-loader": "^4.0.0",
|
"style-loader": "^4.0.0",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,10 @@ const styles: {
|
||||||
|
|
||||||
const ROOT = '/'; // process.env.NODE_ENV === 'production' ? '/' : '/';
|
const ROOT = '/'; // process.env.NODE_ENV === 'production' ? '/' : '/';
|
||||||
|
|
||||||
interface Props
|
interface Props extends Omit<
|
||||||
extends Omit<DemoAppState, 'addFunction' | 'addSymbol' | 'shuffleArray'> {
|
DemoAppState,
|
||||||
|
'addFunction' | 'addSymbol' | 'shuffleArray'
|
||||||
|
> {
|
||||||
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
|
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
|
||||||
timeoutUpdate: () => void;
|
timeoutUpdate: () => void;
|
||||||
increment: () => void;
|
increment: () => void;
|
||||||
|
|
@ -70,7 +72,7 @@ interface Props
|
||||||
}
|
}
|
||||||
|
|
||||||
function DemoApp(props: Props) {
|
function DemoApp(props: Props) {
|
||||||
const timeout = useRef<number | undefined>();
|
const timeout = useRef<number | undefined>(undefined);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
const options = getOptions(location);
|
const options = getOptions(location);
|
||||||
|
|
|
||||||
|
|
@ -36,5 +36,6 @@ export const getDevTools = (location: { search: string }) =>
|
||||||
export function ConnectedDevTools() {
|
export function ConnectedDevTools() {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const DevTools = getDevTools(location);
|
const DevTools = getDevTools(location);
|
||||||
|
// eslint-disable-next-line react-hooks/static-components
|
||||||
return <DevTools />;
|
return <DevTools />;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,8 @@ const HUGE_ARRAY = Array.from({ length: 5000 }).map((_, key) => ({
|
||||||
|
|
||||||
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
|
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
|
||||||
(o: { [key: string]: string }, _, key) => (
|
(o: { [key: string]: string }, _, key) => (
|
||||||
(o[`key ${key}`] = `item ${key}`), o
|
(o[`key ${key}`] = `item ${key}`),
|
||||||
|
o
|
||||||
),
|
),
|
||||||
{},
|
{},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,7 @@ module.exports = {
|
||||||
'^.+\\.jsx?$': 'babel-jest',
|
'^.+\\.jsx?$': 'babel-jest',
|
||||||
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
'^.+\\.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)',
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/inspector-monitor-test-tab",
|
"name": "@redux-devtools/inspector-monitor-test-tab",
|
||||||
"version": "4.1.1",
|
"version": "5.0.0",
|
||||||
"description": "Generate tests for redux devtools.",
|
"description": "Generate tests for redux devtools.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"redux",
|
"redux",
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@redux-devtools/ui": "workspace:^",
|
"@redux-devtools/ui": "workspace:^",
|
||||||
"es6template": "^1.0.5",
|
"es6template": "^1.0.5",
|
||||||
"javascript-stringify": "^2.1.0",
|
"javascript-stringify": "^2.1.0",
|
||||||
|
|
@ -53,40 +53,40 @@
|
||||||
"simple-diff": "^1.7.2"
|
"simple-diff": "^1.7.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/react": "^16.2.0",
|
"@testing-library/react": "^16.3.1",
|
||||||
"@types/es6template": "^1.0.5",
|
"@types/es6template": "^1.0.5",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/jsan": "^3.1.5",
|
"@types/jsan": "^3.1.5",
|
||||||
"@types/object-path": "^0.11.4",
|
"@types/object-path": "^0.11.4",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.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": "^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-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0",
|
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,8 +59,10 @@ export function compare<S>(
|
||||||
).forEach(generate);
|
).forEach(generate);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props<S, A extends Action<string>>
|
interface Props<S, A extends Action<string>> extends Omit<
|
||||||
extends Omit<TabComponentProps<S, A>, 'monitorState' | 'updateMonitorState'> {
|
TabComponentProps<S, A>,
|
||||||
|
'monitorState' | 'updateMonitorState'
|
||||||
|
> {
|
||||||
name?: string;
|
name?: string;
|
||||||
isVanilla?: boolean;
|
isVanilla?: boolean;
|
||||||
wrap?: string | ((locals: WrapLocals) => string);
|
wrap?: string | ((locals: WrapLocals) => string);
|
||||||
|
|
|
||||||
|
|
@ -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`] = `
|
exports[`TestGenerator component should be empty when no actions provided 1`] = `
|
||||||
<textarea
|
<textarea
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,6 @@ module.exports = {
|
||||||
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
||||||
},
|
},
|
||||||
transformIgnorePatterns: [
|
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)',
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -30,43 +30,42 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^8.0.0-alpha.16",
|
"@babel/code-frame": "^8.0.0-beta.4",
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@types/chrome": "^0.0.308",
|
"@types/chrome": "^0.1.33",
|
||||||
"anser": "^2.3.2",
|
"anser": "^2.3.5",
|
||||||
"html-entities": "^2.5.2",
|
"html-entities": "^2.6.0",
|
||||||
"path-browserify": "^1.0.1",
|
"path-browserify": "^1.0.1",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"source-map": "^0.5.7"
|
"source-map": "^0.5.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/react": "^16.2.0",
|
"@testing-library/react": "^16.3.1",
|
||||||
"@types/babel__code-frame": "^7.0.6",
|
"@types/babel__code-frame": "^7.27.0",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/path-browserify": "^1.0.3",
|
"@types/path-browserify": "^1.0.3",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/source-map": "0.5.2",
|
"@types/source-map": "0.5.2",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-test-renderer": "^18.3.1",
|
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,10 @@ function openAndCloseTab(url: string) {
|
||||||
const removeTab = () => {
|
const removeTab = () => {
|
||||||
chrome.windows.onFocusChanged.removeListener(removeTab);
|
chrome.windows.onFocusChanged.removeListener(removeTab);
|
||||||
if (tab && tab.id) {
|
if (tab && tab.id) {
|
||||||
chrome.tabs.remove(tab.id, async () => {
|
chrome.tabs.remove(tab.id, () => {
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
if (chrome.runtime.lastError) console.log(chrome.runtime.lastError);
|
if (chrome.runtime.lastError) console.log(chrome.runtime.lastError);
|
||||||
else if (chrome.devtools && chrome.devtools.inspectedWindow) {
|
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,
|
active: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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`] = `
|
exports[`StackTraceTab component should render the link to docs 1`] = `
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 6.1.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 20883e5: fix(deps): update all non-major dependencies
|
||||||
|
|
||||||
## 6.1.1
|
## 6.1.1
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -14,36 +14,36 @@
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/dock-monitor": "workspace:^",
|
"@redux-devtools/dock-monitor": "workspace:^",
|
||||||
"@redux-devtools/inspector-monitor": "workspace:^",
|
"@redux-devtools/inspector-monitor": "workspace:^",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"lodash.shuffle": "^4.2.0",
|
"lodash.shuffle": "^4.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"react-bootstrap": "^2.10.9",
|
"react-bootstrap": "^2.10.10",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"react-router-dom": "^6.30.0",
|
"react-router-dom": "^7.12.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"redux-logger": "^3.0.6"
|
"redux-logger": "^3.0.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/lodash.shuffle": "^4.2.9",
|
"@types/lodash.shuffle": "^4.2.9",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/redux-logger": "^3.0.13",
|
"@types/redux-logger": "^3.0.13",
|
||||||
"@types/webpack-env": "^1.18.8",
|
"@types/webpack-env": "^1.18.8",
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,8 +119,10 @@ function buildUrl(options: Options) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props
|
interface Props extends Omit<
|
||||||
extends Omit<DemoAppState, 'addFunction' | 'addSymbol' | 'shuffleArray'> {
|
DemoAppState,
|
||||||
|
'addFunction' | 'addSymbol' | 'shuffleArray'
|
||||||
|
> {
|
||||||
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
|
toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void;
|
||||||
timeoutUpdate: () => void;
|
timeoutUpdate: () => void;
|
||||||
increment: () => void;
|
increment: () => void;
|
||||||
|
|
@ -142,7 +144,7 @@ interface Props
|
||||||
}
|
}
|
||||||
|
|
||||||
function DemoApp(props: Props) {
|
function DemoApp(props: Props) {
|
||||||
const timeout = useRef<number | undefined>();
|
const timeout = useRef<number | undefined>(undefined);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
|
@ -155,22 +157,22 @@ function DemoApp(props: Props) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleImmutableSupport = () => {
|
const toggleImmutableSupport = async () => {
|
||||||
const options = getOptions(location);
|
const options = getOptions(location);
|
||||||
|
|
||||||
navigate(
|
await navigate(
|
||||||
buildUrl({ ...options, supportImmutable: !options.supportImmutable }),
|
buildUrl({ ...options, supportImmutable: !options.supportImmutable }),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleTheme = () => {
|
const toggleTheme = async () => {
|
||||||
const options = getOptions(location);
|
const options = getOptions(location);
|
||||||
|
|
||||||
navigate(buildUrl({ ...options, dark: !options.dark }));
|
await navigate(buildUrl({ ...options, dark: !options.dark }));
|
||||||
};
|
};
|
||||||
|
|
||||||
const setTheme = (options: Options, theme: string) => {
|
const setTheme = async (options: Options, theme: string) => {
|
||||||
navigate(buildUrl({ ...options, theme }));
|
await navigate(buildUrl({ ...options, theme }));
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleTimeoutUpdate = () => {
|
const toggleTimeoutUpdate = () => {
|
||||||
|
|
|
||||||
|
|
@ -47,5 +47,6 @@ export const getDevTools = (location: { search: string }) =>
|
||||||
export function ConnectedDevTools() {
|
export function ConnectedDevTools() {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const DevTools = getDevTools(location);
|
const DevTools = getDevTools(location);
|
||||||
|
// eslint-disable-next-line react-hooks/static-components
|
||||||
return <DevTools />;
|
return <DevTools />;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,8 @@ const HUGE_ARRAY = Array.from({ length: 5000 }).map((_, key) => ({
|
||||||
|
|
||||||
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
|
const HUGE_OBJECT = Array.from({ length: 5000 }).reduce(
|
||||||
(o: { [key: string]: string }, _, key) => (
|
(o: { [key: string]: string }, _, key) => (
|
||||||
(o[`key ${key}`] = `item ${key}`), o
|
(o[`key ${key}`] = `item ${key}`),
|
||||||
|
o
|
||||||
),
|
),
|
||||||
{},
|
{},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/inspector-monitor",
|
"name": "@redux-devtools/inspector-monitor",
|
||||||
"version": "6.1.1",
|
"version": "6.1.2",
|
||||||
"description": "Redux DevTools Diff Monitor",
|
"description": "Redux DevTools Diff Monitor",
|
||||||
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-inspector-monitor",
|
"homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-inspector-monitor",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
@ -35,40 +35,40 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@dnd-kit/core": "^6.3.1",
|
"@dnd-kit/core": "^6.3.1",
|
||||||
"@dnd-kit/modifiers": "^7.0.0",
|
"@dnd-kit/modifiers": "^9.0.0",
|
||||||
"@dnd-kit/sortable": "^8.0.0",
|
"@dnd-kit/sortable": "^10.0.0",
|
||||||
"@dnd-kit/utilities": "^3.2.2",
|
"@dnd-kit/utilities": "^3.2.2",
|
||||||
"@types/lodash": "^4.17.16",
|
"@types/lodash": "^4.17.23",
|
||||||
"dateformat": "^5.0.3",
|
"dateformat": "^5.0.3",
|
||||||
"hex-rgba": "^1.0.2",
|
"hex-rgba": "^1.0.2",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"javascript-stringify": "^2.1.0",
|
"javascript-stringify": "^2.1.0",
|
||||||
"jsondiffpatch": "^0.6.0",
|
"jsondiffpatch": "^0.7.3",
|
||||||
"lodash.debounce": "^4.0.8",
|
"lodash.debounce": "^4.0.8",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"react-json-tree": "workspace:^"
|
"react-json-tree": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/babel-preset-css-prop": "^11.12.0",
|
"@emotion/babel-preset-css-prop": "^11.12.0",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@types/dateformat": "^5.0.3",
|
"@types/dateformat": "^5.0.3",
|
||||||
"@types/hex-rgba": "^1.0.3",
|
"@types/hex-rgba": "^1.0.3",
|
||||||
"@types/lodash.debounce": "^4.0.9",
|
"@types/lodash.debounce": "^4.0.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ export default function ActionList<A extends Action<string>>({
|
||||||
onReorderAction,
|
onReorderAction,
|
||||||
}: Props<A>): JSX.Element {
|
}: Props<A>): JSX.Element {
|
||||||
const nodeRef = useRef<HTMLDivElement | null>(null);
|
const nodeRef = useRef<HTMLDivElement | null>(null);
|
||||||
const prevLastActionId = useRef<number | undefined>();
|
const prevLastActionId = useRef<number | undefined>(undefined);
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
if (nodeRef.current && prevLastActionId.current !== lastActionId) {
|
if (nodeRef.current && prevLastActionId.current !== lastActionId) {
|
||||||
|
|
|
||||||
|
|
@ -144,8 +144,10 @@ interface DefaultProps {
|
||||||
invertTheme: boolean;
|
invertTheme: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DevtoolsInspectorProps<S, A extends Action<string>>
|
export interface DevtoolsInspectorProps<
|
||||||
extends LiftedState<S, A, DevtoolsInspectorState> {
|
S,
|
||||||
|
A extends Action<string>,
|
||||||
|
> extends LiftedState<S, A, DevtoolsInspectorState> {
|
||||||
dispatch: Dispatch<
|
dispatch: Dispatch<
|
||||||
DevtoolsInspectorAction | LiftedAction<S, A, DevtoolsInspectorState>
|
DevtoolsInspectorAction | LiftedAction<S, A, DevtoolsInspectorState>
|
||||||
>;
|
>;
|
||||||
|
|
|
||||||
|
|
@ -41,20 +41,20 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"rxjs": "^7.8.2",
|
"rxjs": "^7.8.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
|
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
|
||||||
|
|
|
||||||
|
|
@ -41,26 +41,26 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@types/lodash.debounce": "^4.0.9",
|
"@types/lodash.debounce": "^4.0.9",
|
||||||
"lodash.debounce": "^4.0.8",
|
"lodash.debounce": "^4.0.8",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"react-json-tree": "workspace:^"
|
"react-json-tree": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
|
|
|
||||||
|
|
@ -64,8 +64,10 @@ interface DefaultProps<S> {
|
||||||
markStateDiff: boolean;
|
markStateDiff: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LogMonitorProps<S, A extends Action<string>>
|
export interface LogMonitorProps<
|
||||||
extends LiftedState<S, A, LogMonitorState> {
|
S,
|
||||||
|
A extends Action<string>,
|
||||||
|
> extends LiftedState<S, A, LogMonitorState> {
|
||||||
dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>;
|
dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>;
|
||||||
|
|
||||||
preserveScrollTop: boolean;
|
preserveScrollTop: boolean;
|
||||||
|
|
|
||||||
|
|
@ -41,31 +41,31 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint"
|
"prepublish": "pnpm run type-check && pnpm run lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@redux-devtools/instrument": "workspace:^",
|
"@redux-devtools/instrument": "workspace:^",
|
||||||
"@redux-devtools/utils": "workspace:^",
|
"@redux-devtools/utils": "workspace:^",
|
||||||
"jsan": "^3.1.14",
|
"jsan": "^3.1.14",
|
||||||
"rn-host-detect": "^1.2.0",
|
"rn-host-detect": "^1.2.0",
|
||||||
"socketcluster-client": "^19.2.3"
|
"socketcluster-client": "^20.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/jsan": "^3.1.5",
|
"@types/jsan": "^3.1.5",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/rn-host-detect": "^1.2.2",
|
"@types/rn-host-detect": "^1.2.2",
|
||||||
"@types/socketcluster-client": "^19.1.0",
|
"@types/socketcluster-client": "^20.0.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.26.0",
|
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
||||||
"@typescript-eslint/parser": "^8.26.0",
|
"@typescript-eslint/parser": "^8.53.0",
|
||||||
"eslint": "^9.21.0",
|
"eslint": "^9.39.2",
|
||||||
"eslint-config-prettier": "^10.0.2",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"redux": "^3.5.2 || ^4.0.0 || ^5.0.0"
|
"redux": "^3.5.2 || ^4.0.0 || ^5.0.0"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,16 @@
|
||||||
# Change Log
|
# 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
|
## 5.2.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# rtk-query-demo
|
# rtk-query-demo
|
||||||
|
|
||||||
|
## 0.1.16
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [6163276]
|
||||||
|
- @redux-devtools/rtk-query-monitor@6.0.0
|
||||||
|
|
||||||
## 0.1.15
|
## 0.1.15
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "rtk-query-demo",
|
"name": "rtk-query-demo",
|
||||||
"version": "0.1.15",
|
"version": "0.1.16",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
|
"start": "cross-env TS_NODE_PROJECT=\"tsconfig.webpack.json\" webpack serve --open",
|
||||||
|
|
@ -10,49 +10,48 @@
|
||||||
"type-check": "tsc --noEmit"
|
"type-check": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@chakra-ui/react": "^2.10.6",
|
"@chakra-ui/react": "^3.31.0",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
"@emotion/styled": "^11.14.0",
|
"@emotion/styled": "^11.14.1",
|
||||||
"@mswjs/data": "^0.16.2",
|
"@mswjs/data": "^0.16.2",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@redux-devtools/dock-monitor": "workspace:^",
|
"@redux-devtools/dock-monitor": "workspace:^",
|
||||||
"@redux-devtools/rtk-query-monitor": "workspace:^",
|
"@redux-devtools/rtk-query-monitor": "workspace:^",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"framer-motion": "^11.18.2",
|
"msw": "^2.12.4",
|
||||||
"msw": "^2.7.3",
|
"react": "^19.2.3",
|
||||||
"react": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
|
||||||
"react-icons": "^5.5.0",
|
"react-icons": "^5.5.0",
|
||||||
"react-is": "^18.3.1",
|
"react-is": "^19.2.3",
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"react-router-dom": "^6.30.0",
|
"react-router-dom": "^7.12.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@types/node": "^22.13.9",
|
"@types/node": "^24.10.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^19.2.3",
|
||||||
"@types/styled-components": "^5.1.34",
|
|
||||||
"babel-loader": "^10.0.0",
|
"babel-loader": "^10.0.0",
|
||||||
"copy-webpack-plugin": "^12.0.2",
|
"copy-webpack-plugin": "^13.0.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^10.1.0",
|
||||||
"css-loader": "^7.1.2",
|
"css-loader": "^7.1.2",
|
||||||
"fork-ts-checker-webpack-plugin": "^9.0.2",
|
"fork-ts-checker-webpack-plugin": "^9.1.0",
|
||||||
"html-webpack-plugin": "^5.6.3",
|
"html-webpack-plugin": "^5.6.5",
|
||||||
"style-loader": "^4.0.0",
|
"style-loader": "^4.0.0",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "~5.8.2",
|
"typescript": "~5.9.3",
|
||||||
"webpack": "^5.98.0",
|
"webpack": "^5.104.1",
|
||||||
"webpack-cli": "^6.0.1",
|
"webpack-cli": "^6.0.1",
|
||||||
"webpack-dev-server": "^5.2.0"
|
"webpack-dev-server": "^5.2.3"
|
||||||
},
|
},
|
||||||
"msw": {
|
"msw": {
|
||||||
"workerDirectory": "public"
|
"workerDirectory": [
|
||||||
|
"public"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,24 +5,23 @@
|
||||||
* Mock Service Worker.
|
* Mock Service Worker.
|
||||||
* @see https://github.com/mswjs/msw
|
* @see https://github.com/mswjs/msw
|
||||||
* - Please do NOT modify this file.
|
* - Please do NOT modify this file.
|
||||||
* - Please do NOT serve this file on production.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const PACKAGE_VERSION = '2.7.3'
|
const PACKAGE_VERSION = '2.12.4'
|
||||||
const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f'
|
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
|
||||||
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
|
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
|
||||||
const activeClientIds = new Set()
|
const activeClientIds = new Set()
|
||||||
|
|
||||||
self.addEventListener('install', function () {
|
addEventListener('install', function () {
|
||||||
self.skipWaiting()
|
self.skipWaiting()
|
||||||
})
|
})
|
||||||
|
|
||||||
self.addEventListener('activate', function (event) {
|
addEventListener('activate', function (event) {
|
||||||
event.waitUntil(self.clients.claim())
|
event.waitUntil(self.clients.claim())
|
||||||
})
|
})
|
||||||
|
|
||||||
self.addEventListener('message', async function (event) {
|
addEventListener('message', async function (event) {
|
||||||
const clientId = event.source.id
|
const clientId = Reflect.get(event.source || {}, 'id')
|
||||||
|
|
||||||
if (!clientId || !self.clients) {
|
if (!clientId || !self.clients) {
|
||||||
return
|
return
|
||||||
|
|
@ -72,11 +71,6 @@ self.addEventListener('message', async function (event) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'MOCK_DEACTIVATE': {
|
|
||||||
activeClientIds.delete(clientId)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'CLIENT_CLOSED': {
|
case 'CLIENT_CLOSED': {
|
||||||
activeClientIds.delete(clientId)
|
activeClientIds.delete(clientId)
|
||||||
|
|
||||||
|
|
@ -94,69 +88,92 @@ self.addEventListener('message', async function (event) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
self.addEventListener('fetch', function (event) {
|
addEventListener('fetch', function (event) {
|
||||||
const { request } = event
|
const requestInterceptedAt = Date.now()
|
||||||
|
|
||||||
// Bypass navigation requests.
|
// Bypass navigation requests.
|
||||||
if (request.mode === 'navigate') {
|
if (event.request.mode === 'navigate') {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opening the DevTools triggers the "only-if-cached" request
|
// Opening the DevTools triggers the "only-if-cached" request
|
||||||
// that cannot be handled by the worker. Bypass such requests.
|
// 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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bypass all requests when there are no active clients.
|
// Bypass all requests when there are no active clients.
|
||||||
// Prevents the self-unregistered worked from handling requests
|
// 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) {
|
if (activeClientIds.size === 0) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate unique request ID.
|
|
||||||
const requestId = crypto.randomUUID()
|
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 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.
|
// Send back the response clone for the "response:*" life-cycle events.
|
||||||
// Ensure MSW is active and ready to handle the message, otherwise
|
// Ensure MSW is active and ready to handle the message, otherwise
|
||||||
// this message will pend indefinitely.
|
// this message will pend indefinitely.
|
||||||
if (client && activeClientIds.has(client.id)) {
|
if (client && activeClientIds.has(client.id)) {
|
||||||
;(async function () {
|
const serializedRequest = await serializeRequest(requestCloneForEvents)
|
||||||
const responseClone = response.clone()
|
|
||||||
|
|
||||||
sendToClient(
|
// Clone the response so both the client and the library could consume it.
|
||||||
client,
|
const responseClone = response.clone()
|
||||||
{
|
|
||||||
type: 'RESPONSE',
|
sendToClient(
|
||||||
payload: {
|
client,
|
||||||
requestId,
|
{
|
||||||
isMockedResponse: IS_MOCKED_RESPONSE in response,
|
type: 'RESPONSE',
|
||||||
|
payload: {
|
||||||
|
isMockedResponse: IS_MOCKED_RESPONSE in response,
|
||||||
|
request: {
|
||||||
|
id: requestId,
|
||||||
|
...serializedRequest,
|
||||||
|
},
|
||||||
|
response: {
|
||||||
type: responseClone.type,
|
type: responseClone.type,
|
||||||
status: responseClone.status,
|
status: responseClone.status,
|
||||||
statusText: responseClone.statusText,
|
statusText: responseClone.statusText,
|
||||||
body: responseClone.body,
|
|
||||||
headers: Object.fromEntries(responseClone.headers.entries()),
|
headers: Object.fromEntries(responseClone.headers.entries()),
|
||||||
|
body: responseClone.body,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[responseClone.body],
|
},
|
||||||
)
|
responseClone.body ? [serializedRequest.body, responseClone.body] : [],
|
||||||
})()
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return response
|
return response
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resolve the main client for the given event.
|
/**
|
||||||
// Client that issues a request doesn't necessarily equal the client
|
* Resolve the main client for the given event.
|
||||||
// that registered the worker. It's with the latter the worker should
|
* Client that issues a request doesn't necessarily equal the client
|
||||||
// communicate with during the response resolving phase.
|
* 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) {
|
async function resolveMainClient(event) {
|
||||||
const client = await self.clients.get(event.clientId)
|
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
|
// Clone the request because it might've been already used
|
||||||
// (i.e. its body has been read and sent to the client).
|
// (i.e. its body has been read and sent to the client).
|
||||||
const requestClone = request.clone()
|
const requestClone = event.request.clone()
|
||||||
|
|
||||||
function passthrough() {
|
function passthrough() {
|
||||||
// Cast the request headers to a new Headers instance
|
// 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.
|
// Notify the client that a request has been intercepted.
|
||||||
const requestBuffer = await request.arrayBuffer()
|
const serializedRequest = await serializeRequest(event.request)
|
||||||
const clientMessage = await sendToClient(
|
const clientMessage = await sendToClient(
|
||||||
client,
|
client,
|
||||||
{
|
{
|
||||||
type: 'REQUEST',
|
type: 'REQUEST',
|
||||||
payload: {
|
payload: {
|
||||||
id: requestId,
|
id: requestId,
|
||||||
url: request.url,
|
interceptedAt: requestInterceptedAt,
|
||||||
mode: request.mode,
|
...serializedRequest,
|
||||||
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,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
[requestBuffer],
|
[serializedRequest.body],
|
||||||
)
|
)
|
||||||
|
|
||||||
switch (clientMessage.type) {
|
switch (clientMessage.type) {
|
||||||
|
|
@ -268,6 +279,12 @@ async function getResponse(event, client, requestId) {
|
||||||
return passthrough()
|
return passthrough()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Client} client
|
||||||
|
* @param {any} message
|
||||||
|
* @param {Array<Transferable>} transferrables
|
||||||
|
* @returns {Promise<any>}
|
||||||
|
*/
|
||||||
function sendToClient(client, message, transferrables = []) {
|
function sendToClient(client, message, transferrables = []) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const channel = new MessageChannel()
|
const channel = new MessageChannel()
|
||||||
|
|
@ -280,14 +297,18 @@ function sendToClient(client, message, transferrables = []) {
|
||||||
resolve(event.data)
|
resolve(event.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
client.postMessage(
|
client.postMessage(message, [
|
||||||
message,
|
channel.port2,
|
||||||
[channel.port2].concat(transferrables.filter(Boolean)),
|
...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.
|
// Setting response status code to 0 is a no-op.
|
||||||
// However, when responding with a "Response.error()", the produced Response
|
// 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
|
// 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
|
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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import PokemonView from './features/pokemon/PokemonView';
|
import PokemonView from './features/pokemon/PokemonView';
|
||||||
import PostsView from './features/posts/PostsView';
|
import PostsView from './features/posts/PostsView';
|
||||||
import { Box, Flex, Heading } from '@chakra-ui/react';
|
import { Box, Flex, Heading, List } from '@chakra-ui/react';
|
||||||
import { Link, UnorderedList, ListItem } from '@chakra-ui/react';
|
import { Link } from '@chakra-ui/react';
|
||||||
import { Code } from '@chakra-ui/react';
|
import { Code } from '@chakra-ui/react';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { DevToolsSelector } from './features/DevTools/DevToolsSelector';
|
import { DevToolsSelector } from './features/DevTools/DevToolsSelector';
|
||||||
|
|
@ -27,44 +27,48 @@ export function App() {
|
||||||
</Box>
|
</Box>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Flex p="2" as="footer">
|
<Flex p="2" as="footer">
|
||||||
<UnorderedList p="2">
|
<List.Root p="2">
|
||||||
<ListItem>
|
<List.Item>
|
||||||
<Link
|
<Link
|
||||||
className="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"
|
href="https://github.com/FaberVitale/redux-devtools/tree/feat/rtk-query-monitor/packages/redux-devtools-rtk-query-monitor/demo"
|
||||||
>
|
>
|
||||||
demo source
|
demo source
|
||||||
</Link>
|
</Link>
|
||||||
</ListItem>
|
</List.Item>
|
||||||
<ListItem>
|
<List.Item>
|
||||||
<Link
|
<Link
|
||||||
className="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"
|
href="https://github.com/FaberVitale/redux-devtools/tree/feat/rtk-query-monitor/packages/redux-devtools-rtk-query-monitor"
|
||||||
>
|
>
|
||||||
@redux-devtools/rtk-query-monitor source
|
@redux-devtools/rtk-query-monitor source
|
||||||
</Link>
|
</Link>
|
||||||
</ListItem>
|
</List.Item>
|
||||||
<ListItem>
|
<List.Item>
|
||||||
<Link
|
<Link
|
||||||
className="link"
|
className="link"
|
||||||
isExternal
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/polling"
|
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/polling"
|
||||||
>
|
>
|
||||||
polling example
|
polling example
|
||||||
</Link>
|
</Link>
|
||||||
</ListItem>
|
</List.Item>
|
||||||
<ListItem>
|
<List.Item>
|
||||||
<Link
|
<Link
|
||||||
className="link"
|
className="link"
|
||||||
isExternal
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/mutations"
|
href="https://github.com/reduxjs/redux-toolkit/tree/master/examples/query/react/mutations"
|
||||||
>
|
>
|
||||||
mutations example
|
mutations example
|
||||||
</Link>
|
</Link>
|
||||||
</ListItem>
|
</List.Item>
|
||||||
</UnorderedList>
|
</List.Root>
|
||||||
</Flex>
|
</Flex>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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>;
|
||||||
|
}
|
||||||
|
|
@ -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>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
@ -14,7 +14,7 @@ export function DevToolsSelector() {
|
||||||
return (
|
return (
|
||||||
<Box as="section" p="2">
|
<Box as="section" p="2">
|
||||||
<Heading as="h2">Set active devTools</Heading>
|
<Heading as="h2">Set active devTools</Heading>
|
||||||
<ButtonGroup variant="outline" spacing="4" p="4">
|
<ButtonGroup variant="outline" gap="4" p="4">
|
||||||
<Button
|
<Button
|
||||||
aria-selected={!extensionEnabled}
|
aria-selected={!extensionEnabled}
|
||||||
colorScheme="blue"
|
colorScheme="blue"
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
import React, { useState } from 'react';
|
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 { useGetPokemonByNameQuery } from '../../services/pokemon';
|
||||||
import type { PokemonName } from '../../pokemon.data';
|
import type { PokemonName } from '../../pokemon.data';
|
||||||
|
|
||||||
const intervalOptions = [
|
const intervalOptions = createListCollection({
|
||||||
{ label: 'Off', value: 0 },
|
items: [
|
||||||
{ label: '3s', value: 3000 },
|
{ label: 'Off', value: '0' },
|
||||||
{ label: '5s', value: 5000 },
|
{ label: '3s', value: '3000' },
|
||||||
{ label: '10s', value: 10000 },
|
{ label: '5s', value: '5000' },
|
||||||
{ label: '1m', value: 60000 },
|
{ label: '10s', value: '10000' },
|
||||||
];
|
{ label: '1m', value: '60000' },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
export function Pokemon({ name }: { name: PokemonName }) {
|
export function Pokemon({ name }: { name: PokemonName }) {
|
||||||
const [pollingInterval, setPollingInterval] = useState(60000);
|
const [pollingInterval, setPollingInterval] = useState(60000);
|
||||||
|
|
@ -41,19 +43,39 @@ export function Pokemon({ name }: { name: PokemonName }) {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label style={{ display: 'block' }}>Polling interval</label>
|
<Select.Root
|
||||||
<Select
|
collection={intervalOptions}
|
||||||
value={pollingInterval}
|
value={[pollingInterval.toString()]}
|
||||||
onChange={({ target: { value } }) =>
|
onValueChange={({ value }) =>
|
||||||
setPollingInterval(Number(value))
|
setPollingInterval(Number(value[0]))
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{intervalOptions.map(({ label, value }) => (
|
<Select.HiddenSelect />
|
||||||
<option key={value} value={value}>
|
<Select.Label>Polling interval</Select.Label>
|
||||||
{label}
|
<Select.Control>
|
||||||
</option>
|
<Select.Trigger>
|
||||||
))}
|
<Select.ValueText placeholder="Polling interval" />
|
||||||
</Select>
|
</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>
|
||||||
<div>
|
<div>
|
||||||
<Button
|
<Button
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ import {
|
||||||
Input,
|
Input,
|
||||||
Spacer,
|
Spacer,
|
||||||
Stack,
|
Stack,
|
||||||
useToast,
|
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
|
import { toaster } from '../../components/ui/toaster';
|
||||||
|
|
||||||
const EditablePostName = ({
|
const EditablePostName = ({
|
||||||
name: initialName,
|
name: initialName,
|
||||||
|
|
@ -50,8 +50,8 @@ const EditablePostName = ({
|
||||||
</Box>
|
</Box>
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<Box>
|
<Box>
|
||||||
<Stack spacing={4} direction="row" align="center">
|
<Stack gap={4} direction="row" align="center">
|
||||||
<Button onClick={handleUpdate} isLoading={isLoading}>
|
<Button onClick={handleUpdate} loading={isLoading}>
|
||||||
Update
|
Update
|
||||||
</Button>
|
</Button>
|
||||||
<CloseButton bg="red" onClick={handleCancel} disabled={isLoading} />
|
<CloseButton bg="red" onClick={handleCancel} disabled={isLoading} />
|
||||||
|
|
@ -75,8 +75,6 @@ export const PostDetail = () => {
|
||||||
const { id } = useParams<{ id: string }>();
|
const { id } = useParams<{ id: string }>();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const toast = useToast();
|
|
||||||
|
|
||||||
const [isEditing, setIsEditing] = useState(false);
|
const [isEditing, setIsEditing] = useState(false);
|
||||||
|
|
||||||
const { data: post, isLoading } = useGetPostQuery(id!);
|
const { data: post, isLoading } = useGetPostQuery(id!);
|
||||||
|
|
@ -108,12 +106,12 @@ export const PostDetail = () => {
|
||||||
try {
|
try {
|
||||||
await updatePost({ id: id!, name }).unwrap();
|
await updatePost({ id: id!, name }).unwrap();
|
||||||
} catch {
|
} catch {
|
||||||
toast({
|
toaster.create({
|
||||||
title: 'An error occurred',
|
title: 'An error occurred',
|
||||||
description: "We couldn't save your changes, try again!",
|
description: "We couldn't save your changes, try again!",
|
||||||
status: 'error',
|
type: 'error',
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
isClosable: true,
|
closable: true,
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
|
|
@ -129,7 +127,7 @@ export const PostDetail = () => {
|
||||||
</Box>
|
</Box>
|
||||||
<Spacer />
|
<Spacer />
|
||||||
<Box>
|
<Box>
|
||||||
<Stack spacing={4} direction="row" align="center">
|
<Stack gap={4} direction="row" align="center">
|
||||||
<Button
|
<Button
|
||||||
onClick={() => setIsEditing(true)}
|
onClick={() => setIsEditing(true)}
|
||||||
disabled={isDeleting || isUpdating}
|
disabled={isDeleting || isUpdating}
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,15 @@ import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Center,
|
Center,
|
||||||
Divider,
|
Field,
|
||||||
Flex,
|
Flex,
|
||||||
FormControl,
|
FormatNumber,
|
||||||
FormLabel,
|
|
||||||
Heading,
|
Heading,
|
||||||
Input,
|
Input,
|
||||||
List,
|
List,
|
||||||
ListIcon,
|
Separator,
|
||||||
ListItem,
|
|
||||||
Spacer,
|
Spacer,
|
||||||
Stat,
|
Stat,
|
||||||
StatLabel,
|
|
||||||
StatNumber,
|
|
||||||
useToast,
|
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { Route, Routes, useNavigate } from 'react-router-dom';
|
import { Route, Routes, useNavigate } from 'react-router-dom';
|
||||||
import { MdBook } from 'react-icons/md';
|
import { MdBook } from 'react-icons/md';
|
||||||
|
|
@ -26,12 +21,12 @@ import {
|
||||||
useGetPostsQuery,
|
useGetPostsQuery,
|
||||||
} from '../../services/posts';
|
} from '../../services/posts';
|
||||||
import { PostDetail } from './PostDetail';
|
import { PostDetail } from './PostDetail';
|
||||||
|
import { toaster } from '../../components/ui/toaster';
|
||||||
|
|
||||||
const AddPost = () => {
|
const AddPost = () => {
|
||||||
const initialValue = { name: '' };
|
const initialValue = { name: '' };
|
||||||
const [post, setPost] = useState<Pick<Post, 'name'>>(initialValue);
|
const [post, setPost] = useState<Pick<Post, 'name'>>(initialValue);
|
||||||
const [addPost, { isLoading }] = useAddPostMutation();
|
const [addPost, { isLoading }] = useAddPostMutation();
|
||||||
const toast = useToast();
|
|
||||||
|
|
||||||
const handleChange = ({ target }: React.ChangeEvent<HTMLInputElement>) => {
|
const handleChange = ({ target }: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
setPost((prev) => ({
|
setPost((prev) => ({
|
||||||
|
|
@ -45,12 +40,12 @@ const AddPost = () => {
|
||||||
await addPost(post).unwrap();
|
await addPost(post).unwrap();
|
||||||
setPost(initialValue);
|
setPost(initialValue);
|
||||||
} catch {
|
} catch {
|
||||||
toast({
|
toaster.create({
|
||||||
title: 'An error occurred',
|
title: 'An error occurred',
|
||||||
description: "We couldn't save your post, try again!",
|
description: "We couldn't save your post, try again!",
|
||||||
status: 'error',
|
type: 'error',
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
isClosable: true,
|
closable: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -58,11 +53,11 @@ const AddPost = () => {
|
||||||
return (
|
return (
|
||||||
<Flex p={'5px 0'} flexDirection="row" flexWrap="wrap" maxWidth={'85%'}>
|
<Flex p={'5px 0'} flexDirection="row" flexWrap="wrap" maxWidth={'85%'}>
|
||||||
<Box flex={'5 0 auto'} padding="0 5px 0 0">
|
<Box flex={'5 0 auto'} padding="0 5px 0 0">
|
||||||
<FormControl
|
<Field.Root
|
||||||
flexDirection="column"
|
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
|
<Input
|
||||||
id="name"
|
id="name"
|
||||||
name="name"
|
name="name"
|
||||||
|
|
@ -70,13 +65,13 @@ const AddPost = () => {
|
||||||
value={post.name}
|
value={post.name}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</Field.Root>
|
||||||
</Box>
|
</Box>
|
||||||
<Box>
|
<Box>
|
||||||
<Button
|
<Button
|
||||||
mt={8}
|
mt={8}
|
||||||
colorScheme="purple"
|
colorScheme="purple"
|
||||||
isLoading={isLoading}
|
loading={isLoading}
|
||||||
onClick={handleAddPost}
|
onClick={handleAddPost}
|
||||||
>
|
>
|
||||||
Add Post
|
Add Post
|
||||||
|
|
@ -99,13 +94,16 @@ const PostList = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<List spacing={3}>
|
<List.Root gap={3}>
|
||||||
{posts.map(({ id, name }) => (
|
{posts.map(({ id, name }) => (
|
||||||
<ListItem key={id} onClick={() => navigate(`/posts/${id}`)}>
|
<List.Item key={id} onClick={() => navigate(`/posts/${id}`)}>
|
||||||
<ListIcon as={MdBook} color="green.500" /> {name}
|
<List.Indicator asChild color="green.500">
|
||||||
</ListItem>
|
<MdBook />
|
||||||
|
</List.Indicator>
|
||||||
|
{name}
|
||||||
|
</List.Item>
|
||||||
))}
|
))}
|
||||||
</List>
|
</List.Root>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -115,10 +113,12 @@ export const PostsCountStat = () => {
|
||||||
if (!posts) return null;
|
if (!posts) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stat>
|
<Stat.Root>
|
||||||
<StatLabel>Active Posts</StatLabel>
|
<Stat.Label>Active Posts</Stat.Label>
|
||||||
<StatNumber>{posts?.length}</StatNumber>
|
<Stat.ValueText>
|
||||||
</Stat>
|
<FormatNumber value={posts?.length} />
|
||||||
|
</Stat.ValueText>
|
||||||
|
</Stat.Root>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -134,9 +134,9 @@ export const PostsManager = () => {
|
||||||
<PostsCountStat />
|
<PostsCountStat />
|
||||||
</Box>
|
</Box>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Divider />
|
<Separator />
|
||||||
<AddPost />
|
<AddPost />
|
||||||
<Divider />
|
<Separator />
|
||||||
<Flex wrap="wrap">
|
<Flex wrap="wrap">
|
||||||
<Box flex={1} borderRight="1px solid #eee">
|
<Box flex={1} borderRight="1px solid #eee">
|
||||||
<Box p={4} borderBottom="1px solid #eee">
|
<Box p={4} borderBottom="1px solid #eee">
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ReactDOM from 'react-dom/client';
|
import ReactDOM from 'react-dom/client';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { ChakraProvider } from '@chakra-ui/react';
|
import { Provider as ChakraProvider } from './components/ui/provider';
|
||||||
import './index.css';
|
import './index.css';
|
||||||
import { store } from './store';
|
import { store } from './store';
|
||||||
import DevTools from './features/DevTools/DevTools';
|
import DevTools from './features/DevTools/DevTools';
|
||||||
import { BrowserRouter } from 'react-router-dom';
|
import { BrowserRouter } from 'react-router-dom';
|
||||||
import { App } from './App';
|
import { App } from './App';
|
||||||
import { worker } from './mocks/browser';
|
import { worker } from './mocks/browser';
|
||||||
|
import { Toaster } from './components/ui/toaster';
|
||||||
|
|
||||||
function renderApp() {
|
function renderApp() {
|
||||||
const rootElement = document.getElementById('root');
|
const rootElement = document.getElementById('root');
|
||||||
|
|
@ -17,6 +18,7 @@ function renderApp() {
|
||||||
<ChakraProvider>
|
<ChakraProvider>
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<App />
|
<App />
|
||||||
|
<Toaster />
|
||||||
<DevTools />
|
<DevTools />
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
</ChakraProvider>
|
</ChakraProvider>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
/// <reference types="react-scripts" />
|
|
||||||
|
|
||||||
declare module '@redux-devtools/app';
|
declare module '@redux-devtools/app';
|
||||||
|
|
||||||
declare module 'remote-redux-devtools';
|
declare module 'remote-redux-devtools';
|
||||||
|
|
|
||||||
|
|
@ -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`
|
// adding the api middleware enables caching, invalidation, polling and other features of `rtk-query`
|
||||||
middleware: (getDefaultMiddleware) =>
|
middleware: (getDefaultMiddleware) =>
|
||||||
getDefaultMiddleware().concat([pokemonApi.middleware, postsApi.middleware]),
|
getDefaultMiddleware().concat([pokemonApi.middleware, postsApi.middleware]),
|
||||||
enhancers: (devTools ? [] : [DevTools.instrument()]) as any,
|
enhancers: devTools
|
||||||
|
? undefined
|
||||||
|
: (getDefaultEnhancers) =>
|
||||||
|
getDefaultEnhancers().concat(DevTools.instrument()),
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,7 @@ module.exports = {
|
||||||
'^.+\\.jsx?$': 'babel-jest',
|
'^.+\\.jsx?$': 'babel-jest',
|
||||||
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.test.json' }],
|
'^.+\\.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)',
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@redux-devtools/rtk-query-monitor",
|
"name": "@redux-devtools/rtk-query-monitor",
|
||||||
"version": "5.2.0",
|
"version": "6.0.0",
|
||||||
"description": "rtk-query monitor for Redux DevTools",
|
"description": "rtk-query monitor for Redux DevTools",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"redux",
|
"redux",
|
||||||
|
|
@ -44,52 +44,52 @@
|
||||||
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
"prepublish": "pnpm run type-check && pnpm run lint && pnpm run test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.9",
|
"@babel/runtime": "^7.28.6",
|
||||||
"@redux-devtools/ui": "workspace:^",
|
"@redux-devtools/ui": "workspace:^",
|
||||||
"@types/lodash": "^4.17.16",
|
"@types/lodash": "^4.17.23",
|
||||||
"hex-rgba": "^1.0.2",
|
"hex-rgba": "^1.0.2",
|
||||||
"immutable": "^5.0.3",
|
"immutable": "^5.1.4",
|
||||||
"lodash.debounce": "^4.0.8",
|
"lodash.debounce": "^4.0.8",
|
||||||
"react-base16-styling": "workspace:^",
|
"react-base16-styling": "workspace:^",
|
||||||
"react-json-tree": "workspace:^"
|
"react-json-tree": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.26.4",
|
"@babel/cli": "^7.28.6",
|
||||||
"@babel/core": "^7.26.9",
|
"@babel/core": "^7.28.6",
|
||||||
"@babel/eslint-parser": "^7.26.8",
|
"@babel/eslint-parser": "^7.28.6",
|
||||||
"@babel/plugin-transform-runtime": "^7.26.9",
|
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||||
"@babel/preset-env": "^7.26.9",
|
"@babel/preset-env": "^7.28.6",
|
||||||
"@babel/preset-react": "^7.26.3",
|
"@babel/preset-react": "^7.28.5",
|
||||||
"@babel/preset-typescript": "^7.26.0",
|
"@babel/preset-typescript": "^7.28.5",
|
||||||
"@emotion/babel-preset-css-prop": "^11.12.0",
|
"@emotion/babel-preset-css-prop": "^11.12.0",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@reduxjs/toolkit": "^2.6.0",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/jest-dom": "^6.6.3",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@testing-library/react": "^16.2.0",
|
"@testing-library/react": "^16.3.1",
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/hex-rgba": "^1.0.3",
|
"@types/hex-rgba": "^1.0.3",
|
||||||
"@types/lodash.debounce": "^4.0.9",
|
"@types/lodash.debounce": "^4.0.9",
|
||||||
"@types/react": "^18.3.18",
|
"@types/react": "^19.2.8",
|
||||||
"jest": "^29.7.0",
|
"jest": "^30.2.0",
|
||||||
"jest-environment-jsdom": "^29.7.0",
|
"jest-environment-jsdom": "^30.2.0",
|
||||||
"react": "^18.3.1",
|
"react": "^19.2.3",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^19.2.3",
|
||||||
"react-redux": "^9.2.0",
|
"react-redux": "^9.2.0",
|
||||||
"redux": "^5.0.1",
|
"redux": "^5.0.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.1.2",
|
||||||
"ts-jest": "^29.2.6",
|
"ts-jest": "^29.4.6",
|
||||||
"typescript": "~5.8.2"
|
"typescript": "~5.9.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
|
"@emotion/styled": "^11.14.1",
|
||||||
"@redux-devtools/core": "workspace:^",
|
"@redux-devtools/core": "workspace:^",
|
||||||
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
"@reduxjs/toolkit": "^1.0.0 || ^2.0.0",
|
||||||
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.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": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0",
|
"redux": "^3.4.0 || ^4.0.0 || ^5.0.0"
|
||||||
"styled-components": "^5.3.11"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user