mirror of
https://github.com/woodchen-ink/clash-and-dashboard.git
synced 2025-07-18 14:01:56 +08:00
Feature: use react-table v8
This commit is contained in:
parent
002629d506
commit
fa98e692bd
@ -27,7 +27,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/lodash-es": "^4.17.6",
|
"@types/lodash-es": "^4.17.6",
|
||||||
"@types/node": "^17.0.23",
|
"@types/node": "^17.0.23",
|
||||||
"@types/react": "^17.0.42",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.14",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
"@types/react-table": "^7.7.10",
|
"@types/react-table": "^7.7.10",
|
||||||
@ -47,7 +47,7 @@
|
|||||||
"eslint-plugin-react-hooks": "^4.3.0",
|
"eslint-plugin-react-hooks": "^4.3.0",
|
||||||
"sass": "^1.49.9",
|
"sass": "^1.49.9",
|
||||||
"type-fest": "^2.12.1",
|
"type-fest": "^2.12.1",
|
||||||
"typescript": "^4.6.2",
|
"typescript": "^4.6.3",
|
||||||
"vite": "^2.8.6",
|
"vite": "^2.8.6",
|
||||||
"vite-plugin-pwa": "^0.11.13",
|
"vite-plugin-pwa": "^0.11.13",
|
||||||
"vite-plugin-windicss": "^1.8.3",
|
"vite-plugin-windicss": "^1.8.3",
|
||||||
@ -55,6 +55,7 @@
|
|||||||
"windicss": "^3.5.1"
|
"windicss": "^3.5.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@tanstack/react-table": "^8.0.0-alpha.8",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"classnames": "^2.3.1",
|
"classnames": "^2.3.1",
|
||||||
"dayjs": "^1.11.0",
|
"dayjs": "^1.11.0",
|
||||||
@ -66,7 +67,6 @@
|
|||||||
"react": "^18.0.0-rc.3",
|
"react": "^18.0.0-rc.3",
|
||||||
"react-dom": "^18.0.0-rc.3",
|
"react-dom": "^18.0.0-rc.3",
|
||||||
"react-router-dom": "^6.2.2",
|
"react-router-dom": "^6.2.2",
|
||||||
"react-table": "^7.7.0",
|
|
||||||
"react-use": "^17.3.2",
|
"react-use": "^17.3.2",
|
||||||
"react-virtualized-auto-sizer": "^1.0.6",
|
"react-virtualized-auto-sizer": "^1.0.6",
|
||||||
"react-window": "^1.8.6",
|
"react-window": "^1.8.6",
|
||||||
|
296
pnpm-lock.yaml
generated
296
pnpm-lock.yaml
generated
@ -1,9 +1,10 @@
|
|||||||
lockfileVersion: 5.3
|
lockfileVersion: 5.3
|
||||||
|
|
||||||
specifiers:
|
specifiers:
|
||||||
|
'@tanstack/react-table': ^8.0.0-alpha.8
|
||||||
'@types/lodash-es': ^4.17.6
|
'@types/lodash-es': ^4.17.6
|
||||||
'@types/node': ^17.0.23
|
'@types/node': ^17.0.23
|
||||||
'@types/react': ^17.0.42
|
'@types/react': ^17.0.43
|
||||||
'@types/react-dom': ^17.0.14
|
'@types/react-dom': ^17.0.14
|
||||||
'@types/react-router-dom': ^5.3.3
|
'@types/react-router-dom': ^5.3.3
|
||||||
'@types/react-table': ^7.7.10
|
'@types/react-table': ^7.7.10
|
||||||
@ -32,14 +33,13 @@ specifiers:
|
|||||||
react: ^18.0.0-rc.3
|
react: ^18.0.0-rc.3
|
||||||
react-dom: ^18.0.0-rc.3
|
react-dom: ^18.0.0-rc.3
|
||||||
react-router-dom: ^6.2.2
|
react-router-dom: ^6.2.2
|
||||||
react-table: ^7.7.0
|
|
||||||
react-use: ^17.3.2
|
react-use: ^17.3.2
|
||||||
react-virtualized-auto-sizer: ^1.0.6
|
react-virtualized-auto-sizer: ^1.0.6
|
||||||
react-window: ^1.8.6
|
react-window: ^1.8.6
|
||||||
sass: ^1.49.9
|
sass: ^1.49.9
|
||||||
swr: ^1.2.2
|
swr: ^1.2.2
|
||||||
type-fest: ^2.12.1
|
type-fest: ^2.12.1
|
||||||
typescript: ^4.6.2
|
typescript: ^4.6.3
|
||||||
use-immer: ^0.6.0
|
use-immer: ^0.6.0
|
||||||
vite: ^2.8.6
|
vite: ^2.8.6
|
||||||
vite-plugin-pwa: ^0.11.13
|
vite-plugin-pwa: ^0.11.13
|
||||||
@ -48,6 +48,7 @@ specifiers:
|
|||||||
windicss: ^3.5.1
|
windicss: ^3.5.1
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@tanstack/react-table': 8.0.0-alpha.8_581fa33d3647c30d8078674dcd1b240a
|
||||||
axios: 0.26.1
|
axios: 0.26.1
|
||||||
classnames: 2.3.1
|
classnames: 2.3.1
|
||||||
dayjs: 1.11.0
|
dayjs: 1.11.0
|
||||||
@ -59,7 +60,6 @@ dependencies:
|
|||||||
react: 18.0.0-rc.3
|
react: 18.0.0-rc.3
|
||||||
react-dom: 18.0.0-rc.3_react@18.0.0-rc.3
|
react-dom: 18.0.0-rc.3_react@18.0.0-rc.3
|
||||||
react-router-dom: 6.2.2_581fa33d3647c30d8078674dcd1b240a
|
react-router-dom: 6.2.2_581fa33d3647c30d8078674dcd1b240a
|
||||||
react-table: 7.7.0_react@18.0.0-rc.3
|
|
||||||
react-use: 17.3.2_581fa33d3647c30d8078674dcd1b240a
|
react-use: 17.3.2_581fa33d3647c30d8078674dcd1b240a
|
||||||
react-virtualized-auto-sizer: 1.0.6_581fa33d3647c30d8078674dcd1b240a
|
react-virtualized-auto-sizer: 1.0.6_581fa33d3647c30d8078674dcd1b240a
|
||||||
react-window: 1.8.6_581fa33d3647c30d8078674dcd1b240a
|
react-window: 1.8.6_581fa33d3647c30d8078674dcd1b240a
|
||||||
@ -69,19 +69,19 @@ dependencies:
|
|||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/lodash-es': 4.17.6
|
'@types/lodash-es': 4.17.6
|
||||||
'@types/node': 17.0.23
|
'@types/node': 17.0.23
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
'@types/react-dom': 17.0.14
|
'@types/react-dom': 17.0.14
|
||||||
'@types/react-router-dom': 5.3.3
|
'@types/react-router-dom': 5.3.3
|
||||||
'@types/react-table': 7.7.10
|
'@types/react-table': 7.7.10
|
||||||
'@types/react-virtualized-auto-sizer': 1.0.1
|
'@types/react-virtualized-auto-sizer': 1.0.1
|
||||||
'@types/react-window': 1.8.5
|
'@types/react-window': 1.8.5
|
||||||
'@typescript-eslint/eslint-plugin': 5.16.0_3fed250b11519414a4c7d52468dd6bf5
|
'@typescript-eslint/eslint-plugin': 5.16.0_bc68a9cd5bf604202498b1a9faaf9387
|
||||||
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
'@vitejs/plugin-react': 1.2.0
|
'@vitejs/plugin-react': 1.2.0
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
eslint-config-airbnb: 19.0.4_21dd17da442cb057dd6c2041daee4072
|
eslint-config-airbnb: 19.0.4_21dd17da442cb057dd6c2041daee4072
|
||||||
eslint-config-airbnb-typescript: 16.1.4_199a3777d25e90e3898667ddb95142b1
|
eslint-config-airbnb-typescript: 16.1.4_199a3777d25e90e3898667ddb95142b1
|
||||||
eslint-config-standard-with-typescript: 21.0.1_315c78f51e15e2bcdd46c27787a90888
|
eslint-config-standard-with-typescript: 21.0.1_9af640a1891a7e55dd23a89beb2108f1
|
||||||
eslint-import-resolver-typescript: 2.7.0_fe22d862ffeecaee86c93a006d59e41e
|
eslint-import-resolver-typescript: 2.7.0_fe22d862ffeecaee86c93a006d59e41e
|
||||||
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
||||||
eslint-plugin-node: 11.1.0_eslint@8.11.0
|
eslint-plugin-node: 11.1.0_eslint@8.11.0
|
||||||
@ -89,7 +89,7 @@ devDependencies:
|
|||||||
eslint-plugin-react-hooks: 4.3.0_eslint@8.11.0
|
eslint-plugin-react-hooks: 4.3.0_eslint@8.11.0
|
||||||
sass: 1.49.9
|
sass: 1.49.9
|
||||||
type-fest: 2.12.1
|
type-fest: 2.12.1
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
vite: 2.8.6_sass@1.49.9
|
vite: 2.8.6_sass@1.49.9
|
||||||
vite-plugin-pwa: 0.11.13_vite@2.8.6
|
vite-plugin-pwa: 0.11.13_vite@2.8.6
|
||||||
vite-plugin-windicss: 1.8.3_vite@2.8.6
|
vite-plugin-windicss: 1.8.3_vite@2.8.6
|
||||||
@ -1443,6 +1443,18 @@ packages:
|
|||||||
string.prototype.matchall: 4.0.7
|
string.prototype.matchall: 4.0.7
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@tanstack/react-table/8.0.0-alpha.8_581fa33d3647c30d8078674dcd1b240a:
|
||||||
|
resolution: {integrity: sha512-Byp6ScoGxVRLXAWJQm24LbFS5VfYSDJgo7mN4+DuuhBJY88VaWLPcbDcj60OHfxWA+ttUemLJqHEqjlH1ELa9w==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16'
|
||||||
|
react-dom: '>=16'
|
||||||
|
dependencies:
|
||||||
|
react: 18.0.0-rc.3
|
||||||
|
react-dom: 18.0.0-rc.3_react@18.0.0-rc.3
|
||||||
|
use-sync-external-store: 1.0.0-rc.0_react@18.0.0-rc.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/estree/0.0.39:
|
/@types/estree/0.0.39:
|
||||||
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
|
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -1484,14 +1496,14 @@ packages:
|
|||||||
/@types/react-dom/17.0.14:
|
/@types/react-dom/17.0.14:
|
||||||
resolution: {integrity: sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==}
|
resolution: {integrity: sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-router-dom/5.3.3:
|
/@types/react-router-dom/5.3.3:
|
||||||
resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
|
resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/history': 4.7.11
|
'@types/history': 4.7.11
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
'@types/react-router': 5.1.18
|
'@types/react-router': 5.1.18
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@ -1499,29 +1511,29 @@ packages:
|
|||||||
resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==}
|
resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/history': 4.7.11
|
'@types/history': 4.7.11
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-table/7.7.10:
|
/@types/react-table/7.7.10:
|
||||||
resolution: {integrity: sha512-yt7FHv/2cFsucStSWLBOB3OmsRZF08DvVHzz8Zg41B4tzRL6pQ+5VYvmhaR1dKS//tDG4UOJ1RQJPEINHYoRtg==}
|
resolution: {integrity: sha512-yt7FHv/2cFsucStSWLBOB3OmsRZF08DvVHzz8Zg41B4tzRL6pQ+5VYvmhaR1dKS//tDG4UOJ1RQJPEINHYoRtg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-virtualized-auto-sizer/1.0.1:
|
/@types/react-virtualized-auto-sizer/1.0.1:
|
||||||
resolution: {integrity: sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==}
|
resolution: {integrity: sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-window/1.8.5:
|
/@types/react-window/1.8.5:
|
||||||
resolution: {integrity: sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==}
|
resolution: {integrity: sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 17.0.42
|
'@types/react': 17.0.43
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react/17.0.42:
|
/@types/react/17.0.43:
|
||||||
resolution: {integrity: sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q==}
|
resolution: {integrity: sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/prop-types': 15.7.4
|
'@types/prop-types': 15.7.4
|
||||||
'@types/scheduler': 0.16.2
|
'@types/scheduler': 0.16.2
|
||||||
@ -1542,7 +1554,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
|
resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/eslint-plugin/5.16.0_3fed250b11519414a4c7d52468dd6bf5:
|
/@typescript-eslint/eslint-plugin/5.16.0_bc68a9cd5bf604202498b1a9faaf9387:
|
||||||
resolution: {integrity: sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==}
|
resolution: {integrity: sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1553,23 +1565,23 @@ packages:
|
|||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
'@typescript-eslint/scope-manager': 5.16.0
|
'@typescript-eslint/scope-manager': 5.16.0
|
||||||
'@typescript-eslint/type-utils': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/type-utils': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
'@typescript-eslint/utils': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/utils': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
functional-red-black-tree: 1.0.1
|
functional-red-black-tree: 1.0.1
|
||||||
ignore: 5.2.0
|
ignore: 5.2.0
|
||||||
regexpp: 3.2.0
|
regexpp: 3.2.0
|
||||||
semver: 7.3.5
|
semver: 7.3.5
|
||||||
tsutils: 3.21.0_typescript@4.6.2
|
tsutils: 3.21.0_typescript@4.6.3
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/parser/4.33.0_eslint@8.11.0+typescript@4.6.2:
|
/@typescript-eslint/parser/4.33.0_eslint@8.11.0+typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==}
|
resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==}
|
||||||
engines: {node: ^10.12.0 || >=12.0.0}
|
engines: {node: ^10.12.0 || >=12.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1581,15 +1593,15 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 4.33.0
|
'@typescript-eslint/scope-manager': 4.33.0
|
||||||
'@typescript-eslint/types': 4.33.0
|
'@typescript-eslint/types': 4.33.0
|
||||||
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.6.2
|
'@typescript-eslint/typescript-estree': 4.33.0_typescript@4.6.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/parser/5.16.0_eslint@8.11.0+typescript@4.6.2:
|
/@typescript-eslint/parser/5.16.0_eslint@8.11.0+typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==}
|
resolution: {integrity: sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1601,10 +1613,10 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 5.16.0
|
'@typescript-eslint/scope-manager': 5.16.0
|
||||||
'@typescript-eslint/types': 5.16.0
|
'@typescript-eslint/types': 5.16.0
|
||||||
'@typescript-eslint/typescript-estree': 5.16.0_typescript@4.6.2
|
'@typescript-eslint/typescript-estree': 5.16.0_typescript@4.6.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -1625,7 +1637,7 @@ packages:
|
|||||||
'@typescript-eslint/visitor-keys': 5.16.0
|
'@typescript-eslint/visitor-keys': 5.16.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/type-utils/5.16.0_eslint@8.11.0+typescript@4.6.2:
|
/@typescript-eslint/type-utils/5.16.0_eslint@8.11.0+typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==}
|
resolution: {integrity: sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1635,11 +1647,11 @@ packages:
|
|||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/utils': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
tsutils: 3.21.0_typescript@4.6.2
|
tsutils: 3.21.0_typescript@4.6.3
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -1654,7 +1666,7 @@ packages:
|
|||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/typescript-estree/4.33.0_typescript@4.6.2:
|
/@typescript-eslint/typescript-estree/4.33.0_typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==}
|
resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==}
|
||||||
engines: {node: ^10.12.0 || >=12.0.0}
|
engines: {node: ^10.12.0 || >=12.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1669,13 +1681,13 @@ packages:
|
|||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
semver: 7.3.5
|
semver: 7.3.5
|
||||||
tsutils: 3.21.0_typescript@4.6.2
|
tsutils: 3.21.0_typescript@4.6.3
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/typescript-estree/5.16.0_typescript@4.6.2:
|
/@typescript-eslint/typescript-estree/5.16.0_typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==}
|
resolution: {integrity: sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1690,13 +1702,13 @@ packages:
|
|||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
semver: 7.3.5
|
semver: 7.3.5
|
||||||
tsutils: 3.21.0_typescript@4.6.2
|
tsutils: 3.21.0_typescript@4.6.3
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@typescript-eslint/utils/5.16.0_eslint@8.11.0+typescript@4.6.2:
|
/@typescript-eslint/utils/5.16.0_eslint@8.11.0+typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==}
|
resolution: {integrity: sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -1705,7 +1717,7 @@ packages:
|
|||||||
'@types/json-schema': 7.0.10
|
'@types/json-schema': 7.0.10
|
||||||
'@typescript-eslint/scope-manager': 5.16.0
|
'@typescript-eslint/scope-manager': 5.16.0
|
||||||
'@typescript-eslint/types': 5.16.0
|
'@typescript-eslint/types': 5.16.0
|
||||||
'@typescript-eslint/typescript-estree': 5.16.0_typescript@4.6.2
|
'@typescript-eslint/typescript-estree': 5.16.0_typescript@4.6.3
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
eslint-scope: 5.1.1
|
eslint-scope: 5.1.1
|
||||||
eslint-utils: 3.0.0_eslint@8.11.0
|
eslint-utils: 3.0.0_eslint@8.11.0
|
||||||
@ -1764,7 +1776,7 @@ packages:
|
|||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
fast-glob: 3.2.11
|
fast-glob: 3.2.11
|
||||||
magic-string: 0.25.9
|
magic-string: 0.25.9
|
||||||
micromatch: 4.0.4
|
micromatch: 4.0.5
|
||||||
windicss: 3.5.1
|
windicss: 3.5.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -1949,8 +1961,8 @@ packages:
|
|||||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001319
|
caniuse-lite: 1.0.30001320
|
||||||
electron-to-chromium: 1.4.91
|
electron-to-chromium: 1.4.93
|
||||||
escalade: 3.1.1
|
escalade: 3.1.1
|
||||||
node-releases: 2.0.2
|
node-releases: 2.0.2
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
@ -1977,8 +1989,8 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/caniuse-lite/1.0.30001319:
|
/caniuse-lite/1.0.30001320:
|
||||||
resolution: {integrity: sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==}
|
resolution: {integrity: sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/chalk/2.4.2:
|
/chalk/2.4.2:
|
||||||
@ -2179,8 +2191,8 @@ packages:
|
|||||||
jake: 10.8.4
|
jake: 10.8.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/electron-to-chromium/1.4.91:
|
/electron-to-chromium/1.4.93:
|
||||||
resolution: {integrity: sha512-Z7Jkc4+ouEg8F6RrrgLOs0kkJjI0cnyFQmnGVpln8pPifuKBNbUr37GMgJsCTSwy6Z9TK7oTwW33Oe+3aERYew==}
|
resolution: {integrity: sha512-ywq9Pc5Gwwpv7NG767CtoU8xF3aAUQJjH9//Wy3MBCg4w5JSLbJUq2L8IsCdzPMjvSgxuue9WcVaTOyyxCL0aQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/error-stack-parser/2.0.7:
|
/error-stack-parser/2.0.7:
|
||||||
@ -2470,8 +2482,8 @@ packages:
|
|||||||
eslint: ^7.32.0 || ^8.2.0
|
eslint: ^7.32.0 || ^8.2.0
|
||||||
eslint-plugin-import: ^2.25.3
|
eslint-plugin-import: ^2.25.3
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 5.16.0_3fed250b11519414a4c7d52468dd6bf5
|
'@typescript-eslint/eslint-plugin': 5.16.0_bc68a9cd5bf604202498b1a9faaf9387
|
||||||
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/parser': 5.16.0_eslint@8.11.0+typescript@4.6.3
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
eslint-config-airbnb-base: 15.0.0_fe22d862ffeecaee86c93a006d59e41e
|
eslint-config-airbnb-base: 15.0.0_fe22d862ffeecaee86c93a006d59e41e
|
||||||
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
||||||
@ -2495,7 +2507,7 @@ packages:
|
|||||||
object.entries: 1.1.5
|
object.entries: 1.1.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-config-standard-with-typescript/21.0.1_315c78f51e15e2bcdd46c27787a90888:
|
/eslint-config-standard-with-typescript/21.0.1_9af640a1891a7e55dd23a89beb2108f1:
|
||||||
resolution: {integrity: sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==}
|
resolution: {integrity: sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@typescript-eslint/eslint-plugin': ^4.0.1
|
'@typescript-eslint/eslint-plugin': ^4.0.1
|
||||||
@ -2505,14 +2517,14 @@ packages:
|
|||||||
eslint-plugin-promise: ^4.2.1 || ^5.0.0
|
eslint-plugin-promise: ^4.2.1 || ^5.0.0
|
||||||
typescript: ^3.9 || ^4.0.0
|
typescript: ^3.9 || ^4.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 5.16.0_3fed250b11519414a4c7d52468dd6bf5
|
'@typescript-eslint/eslint-plugin': 5.16.0_bc68a9cd5bf604202498b1a9faaf9387
|
||||||
'@typescript-eslint/parser': 4.33.0_eslint@8.11.0+typescript@4.6.2
|
'@typescript-eslint/parser': 4.33.0_eslint@8.11.0+typescript@4.6.3
|
||||||
eslint: 8.11.0
|
eslint: 8.11.0
|
||||||
eslint-config-standard: 16.0.3_7dc77a0be22b3241d34262bf15f20ff9
|
eslint-config-standard: 16.0.3_7dc77a0be22b3241d34262bf15f20ff9
|
||||||
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
eslint-plugin-import: 2.25.4_eslint@8.11.0
|
||||||
eslint-plugin-node: 11.1.0_eslint@8.11.0
|
eslint-plugin-node: 11.1.0_eslint@8.11.0
|
||||||
eslint-plugin-promise: 6.0.0_eslint@8.11.0
|
eslint-plugin-promise: 6.0.0_eslint@8.11.0
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -2783,7 +2795,7 @@ packages:
|
|||||||
'@nodelib/fs.walk': 1.2.8
|
'@nodelib/fs.walk': 1.2.8
|
||||||
glob-parent: 5.1.2
|
glob-parent: 5.1.2
|
||||||
merge2: 1.4.1
|
merge2: 1.4.1
|
||||||
micromatch: 4.0.4
|
micromatch: 4.0.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/fast-json-stable-stringify/2.1.0:
|
/fast-json-stable-stringify/2.1.0:
|
||||||
@ -3412,8 +3424,8 @@ packages:
|
|||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/micromatch/4.0.4:
|
/micromatch/4.0.5:
|
||||||
resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
|
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
|
||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
dependencies:
|
dependencies:
|
||||||
braces: 3.0.2
|
braces: 3.0.2
|
||||||
@ -3667,14 +3679,6 @@ packages:
|
|||||||
react: 18.0.0-rc.3
|
react: 18.0.0-rc.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/react-table/7.7.0_react@18.0.0-rc.3:
|
|
||||||
resolution: {integrity: sha512-jBlj70iBwOTvvImsU9t01LjFjy4sXEtclBovl3mTiqjz23Reu0DKnRza4zlLtOPACx6j2/7MrQIthIK1Wi+LIA==}
|
|
||||||
peerDependencies:
|
|
||||||
react: ^16.8.3 || ^17.0.0-0
|
|
||||||
dependencies:
|
|
||||||
react: 18.0.0-rc.3
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/react-universal-interface/0.6.2_react@18.0.0-rc.3+tslib@2.3.1:
|
/react-universal-interface/0.6.2_react@18.0.0-rc.3+tslib@2.3.1:
|
||||||
resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==}
|
resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -4195,14 +4199,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
|
resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/tsutils/3.21.0_typescript@4.6.2:
|
/tsutils/3.21.0_typescript@4.6.3:
|
||||||
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
|
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
|
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 1.14.1
|
tslib: 1.14.1
|
||||||
typescript: 4.6.2
|
typescript: 4.6.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/type-check/0.4.0:
|
/type-check/0.4.0:
|
||||||
@ -4227,8 +4231,8 @@ packages:
|
|||||||
engines: {node: '>=12.20'}
|
engines: {node: '>=12.20'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/typescript/4.6.2:
|
/typescript/4.6.3:
|
||||||
resolution: {integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==}
|
resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==}
|
||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
@ -4298,6 +4302,14 @@ packages:
|
|||||||
react: 18.0.0-rc.3
|
react: 18.0.0-rc.3
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/use-sync-external-store/1.0.0-rc.0_react@18.0.0-rc.3:
|
||||||
|
resolution: {integrity: sha512-0U9Xlc2QDFzSGMB0DvcJQL0+DIdxDPJC7mnZlYFbl7wrSrPMcs89X5TVkNB6Dzg618m8lZop+U+J6ow3vq9RAQ==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0 || ^18.0.0-rc
|
||||||
|
dependencies:
|
||||||
|
react: 18.0.0-rc.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/v8-compile-cache/2.3.0:
|
/v8-compile-cache/2.3.0:
|
||||||
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
|
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -4312,8 +4324,8 @@ packages:
|
|||||||
pretty-bytes: 5.6.0
|
pretty-bytes: 5.6.0
|
||||||
rollup: 2.70.1
|
rollup: 2.70.1
|
||||||
vite: 2.8.6_sass@1.49.9
|
vite: 2.8.6_sass@1.49.9
|
||||||
workbox-build: 6.5.1
|
workbox-build: 6.5.2
|
||||||
workbox-window: 6.5.1
|
workbox-window: 6.5.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/babel__core'
|
- '@types/babel__core'
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -4413,21 +4425,21 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-background-sync/6.5.1:
|
/workbox-background-sync/6.5.2:
|
||||||
resolution: {integrity: sha512-T5a35fagLXQvV8Dr4+bDU+XYsP90jJ3eBLjZMKuCNELMQZNj+VekCODz1QK44jgoBeQk+vp94pkZV6G+e41pgg==}
|
resolution: {integrity: sha512-EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
idb: 6.1.5
|
idb: 6.1.5
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-broadcast-update/6.5.1:
|
/workbox-broadcast-update/6.5.2:
|
||||||
resolution: {integrity: sha512-mb/oyblyEpDbw167cCTyHnC3RqCnCQHtFYuYZd+QTpuExxM60qZuBH1AuQCgvLtDcztBKdEYK2VFD9SZYgRbaQ==}
|
resolution: {integrity: sha512-DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-build/6.5.1:
|
/workbox-build/6.5.2:
|
||||||
resolution: {integrity: sha512-coDUDzHvFZ1ADOl3wKCsCSyOBvkPKlPgcQDb6LMMShN1zgF31Mev/1HzN3+9T2cjjWAgFwZKkuRyExqc1v21Zw==}
|
resolution: {integrity: sha512-TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@apideck/better-ajv-errors': 0.3.3_ajv@8.11.0
|
'@apideck/better-ajv-errors': 0.3.3_ajv@8.11.0
|
||||||
@ -4452,111 +4464,111 @@ packages:
|
|||||||
strip-comments: 2.0.1
|
strip-comments: 2.0.1
|
||||||
tempy: 0.6.0
|
tempy: 0.6.0
|
||||||
upath: 1.2.0
|
upath: 1.2.0
|
||||||
workbox-background-sync: 6.5.1
|
workbox-background-sync: 6.5.2
|
||||||
workbox-broadcast-update: 6.5.1
|
workbox-broadcast-update: 6.5.2
|
||||||
workbox-cacheable-response: 6.5.1
|
workbox-cacheable-response: 6.5.2
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
workbox-expiration: 6.5.1
|
workbox-expiration: 6.5.2
|
||||||
workbox-google-analytics: 6.5.1
|
workbox-google-analytics: 6.5.2
|
||||||
workbox-navigation-preload: 6.5.1
|
workbox-navigation-preload: 6.5.2
|
||||||
workbox-precaching: 6.5.1
|
workbox-precaching: 6.5.2
|
||||||
workbox-range-requests: 6.5.1
|
workbox-range-requests: 6.5.2
|
||||||
workbox-recipes: 6.5.1
|
workbox-recipes: 6.5.2
|
||||||
workbox-routing: 6.5.1
|
workbox-routing: 6.5.2
|
||||||
workbox-strategies: 6.5.1
|
workbox-strategies: 6.5.2
|
||||||
workbox-streams: 6.5.1
|
workbox-streams: 6.5.2
|
||||||
workbox-sw: 6.5.1
|
workbox-sw: 6.5.2
|
||||||
workbox-window: 6.5.1
|
workbox-window: 6.5.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/babel__core'
|
- '@types/babel__core'
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-cacheable-response/6.5.1:
|
/workbox-cacheable-response/6.5.2:
|
||||||
resolution: {integrity: sha512-3TdtH/luDiytmM+Cn72HCBLZXmbeRNJqZx2yaVOfUZhj0IVwZqQXhNarlGE9/k6U5Jelb+TtpH2mLVhnzfiSMg==}
|
resolution: {integrity: sha512-UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-core/6.5.1:
|
/workbox-core/6.5.2:
|
||||||
resolution: {integrity: sha512-qObXZ39aFJ2N8X7IUbGrJHKWguliCuU1jOXM/I4MTT84u9BiKD2rHMkIzgeRP1Ixu9+cXU4/XHJq3Cy0Qqc5hw==}
|
resolution: {integrity: sha512-IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-expiration/6.5.1:
|
/workbox-expiration/6.5.2:
|
||||||
resolution: {integrity: sha512-iY/cTADAQATMmPkUBRmQdacqq0TJd2wMHimBQz+tRnPGHSMH+/BoLPABPnu7O7rT/g/s59CUYYRGxe3mEgoJCA==}
|
resolution: {integrity: sha512-5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
idb: 6.1.5
|
idb: 6.1.5
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-google-analytics/6.5.1:
|
/workbox-google-analytics/6.5.2:
|
||||||
resolution: {integrity: sha512-qZU46/h4dbionYT6Yk6iBkUwpiEzAfnO1W7KkI+AMmY7G9/gA03dQQ7rpTw8F4vWrG7ahTUGWDFv6fERtaw1BQ==}
|
resolution: {integrity: sha512-8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-background-sync: 6.5.1
|
workbox-background-sync: 6.5.2
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
workbox-routing: 6.5.1
|
workbox-routing: 6.5.2
|
||||||
workbox-strategies: 6.5.1
|
workbox-strategies: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-navigation-preload/6.5.1:
|
/workbox-navigation-preload/6.5.2:
|
||||||
resolution: {integrity: sha512-aKrgAbn2IMgzTowTi/ZyKdQUcES2m++9aGtpxqsX7Gn9ovCY8zcssaMEAMMwrIeveij5HiWNBrmj6MWDHi+0rg==}
|
resolution: {integrity: sha512-iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-precaching/6.5.1:
|
/workbox-precaching/6.5.2:
|
||||||
resolution: {integrity: sha512-EzlPBxvmjGfE56YZzsT/vpVkpLG1XJhoplgXa5RPyVWLUL1LbwEAxhkrENElSS/R9tgiTw80IFwysidfUqLihg==}
|
resolution: {integrity: sha512-OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
workbox-routing: 6.5.1
|
workbox-routing: 6.5.2
|
||||||
workbox-strategies: 6.5.1
|
workbox-strategies: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-range-requests/6.5.1:
|
/workbox-range-requests/6.5.2:
|
||||||
resolution: {integrity: sha512-57Da/qRbd9v33YlHX0rlSUVFmE4THCjKqwkmfhY3tNLnSKN2L5YBS3qhWeDO0IrMNgUj+rGve2moKYXeUqQt4A==}
|
resolution: {integrity: sha512-zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-recipes/6.5.1:
|
/workbox-recipes/6.5.2:
|
||||||
resolution: {integrity: sha512-DGsyKygHggcGPQpWafC/Nmbm1Ny3sB2vE9r//3UbeidXiQ+pLF14KEG1/0NNGRaY+lfOXOagq6d1H7SC8KA+rA==}
|
resolution: {integrity: sha512-2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-cacheable-response: 6.5.1
|
workbox-cacheable-response: 6.5.2
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
workbox-expiration: 6.5.1
|
workbox-expiration: 6.5.2
|
||||||
workbox-precaching: 6.5.1
|
workbox-precaching: 6.5.2
|
||||||
workbox-routing: 6.5.1
|
workbox-routing: 6.5.2
|
||||||
workbox-strategies: 6.5.1
|
workbox-strategies: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-routing/6.5.1:
|
/workbox-routing/6.5.2:
|
||||||
resolution: {integrity: sha512-yAAncdTwanvlR8KPjubyvFKeAok8ZcIws6UKxvIAg0I+wsf7UYi93DXNuZr6RBSQrByrN6HkCyjuhmk8P63+PA==}
|
resolution: {integrity: sha512-nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-strategies/6.5.1:
|
/workbox-strategies/6.5.2:
|
||||||
resolution: {integrity: sha512-JNaTXPy8wXzKkr+6za7/eJX9opoZk7UgY261I2kPxl80XQD8lMjz0vo9EOcBwvD72v3ZhGJbW84ZaDwFEhFvWA==}
|
resolution: {integrity: sha512-fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-streams/6.5.1:
|
/workbox-streams/6.5.2:
|
||||||
resolution: {integrity: sha512-7jaTWm6HRGJ/ewECnhb+UgjTT50R42E0/uNCC4eTKQwnLO/NzNGjoXTdQgFjo4zteR+L/K6AtFAiYKH3ZJbAYw==}
|
resolution: {integrity: sha512-ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
workbox-routing: 6.5.1
|
workbox-routing: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-sw/6.5.1:
|
/workbox-sw/6.5.2:
|
||||||
resolution: {integrity: sha512-hVrQa19yo9wzN1fQQ/h2JlkzFpkuH2qzYT2/rk7CLaWt6tLnTJVFCNHlGRRPhytZSf++LoIy7zThT714sowT/Q==}
|
resolution: {integrity: sha512-2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/workbox-window/6.5.1:
|
/workbox-window/6.5.2:
|
||||||
resolution: {integrity: sha512-oRlun9u7b7YEjo2fIDBqJkU2hXtrEljXcOytRhfeQRbqXxjUOpFgXSGRSAkmDx1MlKUNOSbr+zfi8h5n7In3yA==}
|
resolution: {integrity: sha512-2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/trusted-types': 2.0.2
|
'@types/trusted-types': 2.0.2
|
||||||
workbox-core: 6.5.1
|
workbox-core: 6.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/wrappy/1.0.2:
|
/wrappy/1.0.2:
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
import { columnFilterRowsFn, createTable, sortRowsFn } from '@tanstack/react-table'
|
||||||
|
import { type ColumnSort } from '@tanstack/react-table/build/types/features/Sorting'
|
||||||
import classnames from 'classnames'
|
import classnames from 'classnames'
|
||||||
|
import produce from 'immer'
|
||||||
import { groupBy } from 'lodash-es'
|
import { groupBy } from 'lodash-es'
|
||||||
import { useMemo, useLayoutEffect, useCallback, useRef, useState, useEffect } from 'react'
|
import { useMemo, useLayoutEffect, useRef, useState, useEffect } from 'react'
|
||||||
import { Cell, Column, ColumnInstance, TableInstance, TableOptions, useBlockLayout, useFilters, UseFiltersColumnOptions, UseFiltersInstanceProps, UseFiltersOptions, useResizeColumns, UseResizeColumnsColumnProps, UseResizeColumnsOptions, useSortBy, UseSortByColumnOptions, UseSortByColumnProps, UseSortByOptions, useTable } from 'react-table'
|
|
||||||
import { useLatest, useScroll } from 'react-use'
|
import { useLatest, useScroll } from 'react-use'
|
||||||
|
|
||||||
import { Header, Checkbox, Modal, Icon, Drawer, Card, Button } from '@components'
|
import { Header, Checkbox, Modal, Icon, Drawer, Card, Button } from '@components'
|
||||||
@ -9,7 +11,7 @@ import { fromNow } from '@lib/date'
|
|||||||
import { formatTraffic } from '@lib/helper'
|
import { formatTraffic } from '@lib/helper'
|
||||||
import { useObject, useVisible } from '@lib/hook'
|
import { useObject, useVisible } from '@lib/hook'
|
||||||
import * as API from '@lib/request'
|
import * as API from '@lib/request'
|
||||||
import { RuleType } from '@models'
|
import { BaseComponentProps, RuleType } from '@models'
|
||||||
import { useClient, useConnectionStreamReader, useI18n } from '@stores'
|
import { useClient, useConnectionStreamReader, useI18n } from '@stores'
|
||||||
|
|
||||||
import { Devices } from './Devices'
|
import { Devices } from './Devices'
|
||||||
@ -32,26 +34,6 @@ enum Columns {
|
|||||||
|
|
||||||
const shouldCenter = new Set<string>([Columns.Network, Columns.Type, Columns.Rule, Columns.Speed, Columns.Upload, Columns.Download, Columns.SourceIP, Columns.Time])
|
const shouldCenter = new Set<string>([Columns.Network, Columns.Type, Columns.Rule, Columns.Speed, Columns.Upload, Columns.Download, Columns.SourceIP, Columns.Time])
|
||||||
|
|
||||||
interface TableColumn<D extends object> extends
|
|
||||||
ColumnInstance<D>,
|
|
||||||
UseSortByColumnProps<D>,
|
|
||||||
UseResizeColumnsColumnProps<D> {}
|
|
||||||
|
|
||||||
type TableColumnOption<D extends object> =
|
|
||||||
Column<D> &
|
|
||||||
UseResizeColumnsOptions<D> &
|
|
||||||
UseFiltersColumnOptions<D> &
|
|
||||||
UseSortByColumnOptions<D>
|
|
||||||
|
|
||||||
interface ITableOptions<D extends object> extends
|
|
||||||
TableOptions<D>,
|
|
||||||
UseSortByOptions<D>,
|
|
||||||
UseFiltersOptions<D> {}
|
|
||||||
|
|
||||||
interface ITableInstance<D extends object> extends
|
|
||||||
TableInstance<D>,
|
|
||||||
UseFiltersInstanceProps<D> {}
|
|
||||||
|
|
||||||
function formatSpeed (upload: number, download: number) {
|
function formatSpeed (upload: number, download: number) {
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case upload === 0 && download === 0:
|
case upload === 0 && download === 0:
|
||||||
@ -65,6 +47,8 @@ function formatSpeed (upload: number, download: number) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const table = createTable().RowType<FormatConnection>()
|
||||||
|
|
||||||
export default function Connections () {
|
export default function Connections () {
|
||||||
const { translation, lang } = useI18n()
|
const { translation, lang } = useI18n()
|
||||||
const t = useMemo(() => translation('Connections').t, [translation])
|
const t = useMemo(() => translation('Connections').t, [translation])
|
||||||
@ -113,34 +97,47 @@ export default function Connections () {
|
|||||||
// table
|
// table
|
||||||
const tableRef = useRef<HTMLDivElement>(null)
|
const tableRef = useRef<HTMLDivElement>(null)
|
||||||
const { x: scrollX } = useScroll(tableRef)
|
const { x: scrollX } = useScroll(tableRef)
|
||||||
const columns: Array<TableColumnOption<FormatConnection>> = useMemo(() => [
|
const columns = useMemo(
|
||||||
{ Header: t(`columns.${Columns.Host}`), accessor: Columns.Host, minWidth: 260, width: 260 },
|
() => table.createColumns([
|
||||||
{ Header: t(`columns.${Columns.Network}`), accessor: Columns.Network, minWidth: 80, width: 80 },
|
table.createDataColumn(Columns.Host, { minWidth: 260, width: 260, header: t(`columns.${Columns.Host}`) }),
|
||||||
{ Header: t(`columns.${Columns.Type}`), accessor: Columns.Type, minWidth: 120, width: 120 },
|
table.createDataColumn(Columns.Network, { minWidth: 80, width: 80, header: t(`columns.${Columns.Network}`) }),
|
||||||
{ Header: t(`columns.${Columns.Chains}`), accessor: Columns.Chains, minWidth: 200, width: 200 },
|
table.createDataColumn(Columns.Type, { minWidth: 120, width: 120, header: t(`columns.${Columns.Type}`) }),
|
||||||
{ Header: t(`columns.${Columns.Rule}`), accessor: Columns.Rule, minWidth: 140, width: 140 },
|
table.createDataColumn(Columns.Chains, { minWidth: 200, width: 200, header: t(`columns.${Columns.Chains}`) }),
|
||||||
{
|
table.createDataColumn(Columns.Rule, { minWidth: 140, width: 140, header: t(`columns.${Columns.Rule}`) }),
|
||||||
id: Columns.Speed,
|
table.createDataColumn(
|
||||||
Header: t(`columns.${Columns.Speed}`),
|
row => [row.speed.upload, row.speed.download],
|
||||||
accessor (originalRow: FormatConnection) {
|
{
|
||||||
return [originalRow.speed.upload, originalRow.speed.download]
|
id: Columns.Speed,
|
||||||
},
|
header: t(`columns.${Columns.Speed}`),
|
||||||
sortType (rowA, rowB) {
|
minWidth: 200,
|
||||||
const speedA = rowA.original.speed
|
width: 200,
|
||||||
const speedB = rowB.original.speed
|
sortDescFirst: true,
|
||||||
return speedA.download === speedB.download
|
sortType (rowA, rowB) {
|
||||||
? speedA.upload - speedB.upload
|
const speedA = rowA.original.speed
|
||||||
: speedA.download - speedB.download
|
const speedB = rowB.original.speed
|
||||||
},
|
return speedA.download === speedB.download
|
||||||
minWidth: 200,
|
? speedA.upload - speedB.upload
|
||||||
width: 200,
|
: speedA.download - speedB.download
|
||||||
sortDescFirst: true,
|
},
|
||||||
},
|
cell: cell => formatSpeed(cell.value[0], cell.value[1]),
|
||||||
{ Header: t(`columns.${Columns.Upload}`), accessor: Columns.Upload, minWidth: 100, width: 100, sortDescFirst: true },
|
},
|
||||||
{ Header: t(`columns.${Columns.Download}`), accessor: Columns.Download, minWidth: 100, width: 100, sortDescFirst: true },
|
),
|
||||||
{ Header: t(`columns.${Columns.SourceIP}`), accessor: Columns.SourceIP, minWidth: 140, width: 140, filter: 'equals' },
|
table.createDataColumn(Columns.Upload, { minWidth: 100, width: 100, header: t(`columns.${Columns.Upload}`), cell: cell => formatTraffic(cell.value) }),
|
||||||
{ Header: t(`columns.${Columns.Time}`), accessor: Columns.Time, minWidth: 120, width: 120, sortType (rowA, rowB) { return rowB.original.time - rowA.original.time } },
|
table.createDataColumn(Columns.Download, { minWidth: 100, width: 100, header: t(`columns.${Columns.Download}`), cell: cell => formatTraffic(cell.value) }),
|
||||||
] as Array<TableColumnOption<FormatConnection>>, [t])
|
table.createDataColumn(Columns.SourceIP, { minWidth: 140, width: 140, header: t(`columns.${Columns.SourceIP}`), filterType: 'equals' }),
|
||||||
|
table.createDataColumn(
|
||||||
|
Columns.Time,
|
||||||
|
{
|
||||||
|
minWidth:
|
||||||
|
120,
|
||||||
|
width: 120,
|
||||||
|
header: t(`columns.${Columns.Time}`),
|
||||||
|
cell: cell => fromNow(new Date(cell.value), lang),
|
||||||
|
sortType: (rowA, rowB) => rowB.original.time - rowA.original.time,
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
[lang, t],
|
||||||
|
)
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
function handleConnection (snapshots: API.Snapshot[]) {
|
function handleConnection (snapshots: API.Snapshot[]) {
|
||||||
@ -161,46 +158,27 @@ export default function Connections () {
|
|||||||
}
|
}
|
||||||
}, [connStreamReader, feed, setTraffic])
|
}, [connStreamReader, feed, setTraffic])
|
||||||
|
|
||||||
const {
|
const instance = table.useTable({
|
||||||
getTableProps,
|
data,
|
||||||
getTableBodyProps,
|
columns,
|
||||||
headerGroups,
|
sortRowsFn,
|
||||||
rows,
|
columnFilterRowsFn,
|
||||||
prepareRow,
|
initialState: {
|
||||||
setFilter,
|
sorting: [{ id: Columns.Time, desc: true }],
|
||||||
} = useTable(
|
},
|
||||||
{
|
columnResizeMode: 'onChange',
|
||||||
columns,
|
enableColumnResizing: true,
|
||||||
data,
|
autoResetSorting: false,
|
||||||
autoResetSortBy: false,
|
autoResetColumnFilters: false,
|
||||||
autoResetFilters: false,
|
})
|
||||||
initialState: { sortBy: [{ id: Columns.Time, desc: false }] },
|
|
||||||
} as ITableOptions<FormatConnection>,
|
const headerGroup = instance.getHeaderGroups()[0]
|
||||||
useResizeColumns,
|
|
||||||
useBlockLayout,
|
|
||||||
useFilters,
|
|
||||||
useSortBy,
|
|
||||||
) as ITableInstance<FormatConnection>
|
|
||||||
const headerGroup = useMemo(() => headerGroups[0], [headerGroups])
|
|
||||||
const renderCell = useCallback(function (cell: Cell<FormatConnection>) {
|
|
||||||
switch (cell.column.id) {
|
|
||||||
case Columns.Speed:
|
|
||||||
return formatSpeed(cell.value[0], cell.value[1])
|
|
||||||
case Columns.Upload:
|
|
||||||
case Columns.Download:
|
|
||||||
return formatTraffic(cell.value)
|
|
||||||
case Columns.Time:
|
|
||||||
return fromNow(new Date(cell.value), lang)
|
|
||||||
default:
|
|
||||||
return cell.value
|
|
||||||
}
|
|
||||||
}, [lang])
|
|
||||||
|
|
||||||
// filter
|
// filter
|
||||||
const [device, setDevice] = useState('')
|
const [device, setDevice] = useState('')
|
||||||
function handleDeviceSelected (label: string) {
|
function handleDeviceSelected (label: string) {
|
||||||
setDevice(label)
|
setDevice(label)
|
||||||
setFilter?.(Columns.SourceIP, label || undefined)
|
instance.setColumnFilterValue(Columns.SourceIP, label || undefined)
|
||||||
}
|
}
|
||||||
|
|
||||||
// click item
|
// click item
|
||||||
@ -229,67 +207,76 @@ export default function Connections () {
|
|||||||
}, [data, drawerState.selectedID, latestConntion, setDrawerState])
|
}, [data, drawerState.selectedID, latestConntion, setDrawerState])
|
||||||
|
|
||||||
const scrolled = useMemo(() => scrollX > 0, [scrollX])
|
const scrolled = useMemo(() => scrollX > 0, [scrollX])
|
||||||
const headers = useMemo(() => headerGroup.headers.map((column, idx) => {
|
const headers = headerGroup.headers.map((header, idx) => {
|
||||||
const realColumn = column as unknown as TableColumn<FormatConnection>
|
const column = header.column // as unknown as TableColumn<FormatConnection>
|
||||||
const id = realColumn.id
|
const id = column.id
|
||||||
return (
|
return (
|
||||||
<div
|
<th
|
||||||
{...realColumn.getHeaderProps()}
|
{...header.getHeaderProps(
|
||||||
className={classnames('connections-th', {
|
(props: BaseComponentProps) => produce(props, props => {
|
||||||
resizing: realColumn.isResizing,
|
props.className = classnames('connections-th', {
|
||||||
fixed: realColumn.id === Columns.Host,
|
resizing: column.getIsResizing(),
|
||||||
shadow: scrolled && realColumn.id === Columns.Host,
|
fixed: column.id === Columns.Host,
|
||||||
})}
|
shadow: scrolled && column.id === Columns.Host,
|
||||||
|
})
|
||||||
|
!props.style && (props.style = {})
|
||||||
|
props.style.width = header.getWidth()
|
||||||
|
}),
|
||||||
|
)}
|
||||||
key={id}>
|
key={id}>
|
||||||
<div {...realColumn.getSortByToggleProps()}>
|
<div {...column.getToggleSortingProps()}>
|
||||||
{column.render('Header')}
|
{header.renderHeader()}
|
||||||
{
|
{
|
||||||
realColumn.isSorted
|
column.getIsSorted() !== false
|
||||||
? realColumn.isSortedDesc ? ' ↓' : ' ↑'
|
? column.getIsSorted() === 'desc' ? ' ↓' : ' ↑'
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
{ idx !== headerGroup.headers.length - 1 &&
|
{ idx !== headerGroup.headers.length - 1 &&
|
||||||
<div {...realColumn.getResizerProps()} className="connections-resizer" />
|
<div {...column.getResizerProps()} className="connections-resizer" />
|
||||||
}
|
}
|
||||||
</div>
|
</th>
|
||||||
)
|
)
|
||||||
}), [headerGroup.headers, scrolled])
|
})
|
||||||
|
|
||||||
const content = useMemo(
|
const content = instance.getRows().map(row => {
|
||||||
() => rows.map(row => {
|
return (
|
||||||
prepareRow(row)
|
<tr
|
||||||
return (
|
{...row.getRowProps()}
|
||||||
<div
|
className="cursor-default select-none"
|
||||||
{...row.getRowProps()}
|
key={row.original?.id}
|
||||||
className="cursor-default connections-item select-none"
|
onClick={() => setDrawerState({ visible: true, selectedID: row.original?.id })}>
|
||||||
key={row.original.id}
|
{
|
||||||
onClick={() => setDrawerState({ visible: true, selectedID: row.original.id })}>
|
row.getAllCells().map(cell => {
|
||||||
{
|
const classname = classnames(
|
||||||
row.cells.map(cell => {
|
'connections-block',
|
||||||
const classname = classnames(
|
{ 'text-center': shouldCenter.has(cell.column.id), completed: row.original?.completed },
|
||||||
'connections-block',
|
{
|
||||||
{ 'text-center': shouldCenter.has(cell.column.id), completed: row.original.completed },
|
fixed: cell.column.id === Columns.Host,
|
||||||
{
|
shadow: scrollX > 0 && cell.column.id === Columns.Host,
|
||||||
fixed: cell.column.id === Columns.Host,
|
},
|
||||||
shadow: scrollX > 0 && cell.column.id === Columns.Host,
|
)
|
||||||
},
|
return (
|
||||||
)
|
<td
|
||||||
return (
|
{...cell.getCellProps(
|
||||||
<div {...cell.getCellProps()} className={classname} key={cell.column.id}>
|
(props: BaseComponentProps) => produce(props, props => {
|
||||||
{ renderCell(cell)}
|
!props.style && (props.style = {})
|
||||||
</div>
|
props.className = classname
|
||||||
)
|
props.style.width = cell.column.getWidth()
|
||||||
})
|
}),
|
||||||
}
|
)}
|
||||||
</div>
|
key={cell.column.id}>
|
||||||
)
|
{ cell.renderCell() }
|
||||||
}),
|
</td>
|
||||||
[prepareRow, renderCell, rows, scrollX, setDrawerState],
|
)
|
||||||
)
|
})
|
||||||
|
}
|
||||||
|
</tr>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="page">
|
<div className="page !h-100vh">
|
||||||
<Header title={t('title')}>
|
<Header title={t('title')}>
|
||||||
<span className="cursor-default flex-1 connections-filter">
|
<span className="cursor-default flex-1 connections-filter">
|
||||||
{`(${t('total.text')}: ${t('total.upload')} ${formatTraffic(traffic.uploadTotal)} ${t('total.download')} ${formatTraffic(traffic.downloadTotal)})`}
|
{`(${t('total.text')}: ${t('total.upload')} ${formatTraffic(traffic.uploadTotal)} ${t('total.download')} ${formatTraffic(traffic.downloadTotal)})`}
|
||||||
@ -299,14 +286,18 @@ export default function Connections () {
|
|||||||
</Header>
|
</Header>
|
||||||
{ devices.length > 1 && <Devices devices={devices} selected={device} onChange={handleDeviceSelected} /> }
|
{ devices.length > 1 && <Devices devices={devices} selected={device} onChange={handleDeviceSelected} /> }
|
||||||
<Card ref={cardRef} className="connections-card relative">
|
<Card ref={cardRef} className="connections-card relative">
|
||||||
<div {...getTableProps()} className="flex flex-col flex-1 w-full overflow-auto" style={{ flexBasis: 0 }} ref={tableRef}>
|
<div className="overflow-auto min-h-full" ref={tableRef}>
|
||||||
<div {...headerGroup.getHeaderGroupProps()} className="connections-header">
|
<table {...instance.getTableProps()} className="flex-1">
|
||||||
{ headers }
|
<thead>
|
||||||
</div>
|
<tr {...headerGroup.getHeaderGroupProps()} className="connections-header">
|
||||||
|
{ headers }
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
<div {...getTableBodyProps()} className="flex-1">
|
<tbody {...instance.getTableBodyProps()}>
|
||||||
{ content }
|
{ content }
|
||||||
</div>
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
<Modal title={t('closeAll.title')} show={visible} onClose={hide} onOk={handleCloseConnections}>{t('closeAll.content')}</Modal>
|
<Modal title={t('closeAll.title')} show={visible} onClose={hide} onOk={handleCloseConnections}>{t('closeAll.content')}</Modal>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
.connections-card {
|
.connections-card {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -9,6 +8,7 @@
|
|||||||
.connections-th {
|
.connections-th {
|
||||||
$height: 30px;
|
$height: 30px;
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: $color-gray-darken;
|
color: $color-gray-darken;
|
||||||
@ -19,9 +19,11 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
|
||||||
&.resizing .connections-resizer {
|
&.resizing .connections-resizer {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
cursor: col-resize;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.fixed {
|
&.fixed {
|
||||||
@ -49,6 +51,7 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
touch-action: none;
|
touch-action: none;
|
||||||
|
cursor: col-resize;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
@ -74,8 +77,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.connections-block {
|
.connections-block {
|
||||||
display: flex;
|
display: inline-block;
|
||||||
align-items: center;
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user