diff --git a/web/.eslintignore b/web/.eslintignore
deleted file mode 100644
index eab18762b14..00000000000
--- a/web/.eslintignore
+++ /dev/null
@@ -1,7 +0,0 @@
-generated
-node_modules
-vendor
-templates/
-templates\
-ycache
-regression/htmlcov
diff --git a/web/.eslintrc.js b/web/.eslintrc.js
index f0aee055e7a..8fbbd4c717e 100644
--- a/web/.eslintrc.js
+++ b/web/.eslintrc.js
@@ -6,98 +6,122 @@
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
+const globals = require('globals');
+const js = require('@eslint/js');
+const reactjs = require('eslint-plugin-react');
+const jest = require('eslint-plugin-jest');
+const babel = require('@babel/eslint-plugin');
+const babelParser = require('@babel/eslint-parser');
+const ts = require('typescript-eslint');
-module.exports = {
- 'env': {
- 'browser': true,
- 'es6': true,
- 'amd': true,
+
+module.exports = [
+ {
+ ignores: [
+ '**/generated',
+ '**/node_modules',
+ '**/vendor',
+ '**/templates/',
+ '**/templates\\',
+ '**/ycache',
+ '**/regression/htmlcov',
+ ],
},
- 'extends': [
- 'eslint:recommended',
- 'plugin:react/recommended',
- /* Uncomment the below line to use linter error for React Hooks.
- By Default commented so that builds are generated successfully.
- Once all the errors will be resolved will uncomment it and commit it.
- */
- // "plugin:react-hooks/recommended",
- ],
- 'parser': '@babel/eslint-parser',
- 'parserOptions': {
- 'requireConfigFile': false,
- 'ecmaVersion': 2018,
- 'ecmaFeatures': {
- 'jsx': true,
+ js.configs.recommended,
+ {
+ files: ['**/*.{js,jsx,mjs,cjs,ts,tsx}'],
+ languageOptions: {
+ 'parser': babelParser,
+ ecmaVersion: 2018,
+ parserOptions: {
+ 'ecmaFeatures': {
+ 'jsx': true,
+ },
+ 'requireConfigFile': false,
+ 'babelOptions': {
+ 'plugins': [
+ '@babel/plugin-syntax-jsx',
+ '@babel/plugin-proposal-class-properties',
+ ],
+ },
+ },
+ 'sourceType': 'module',
+ globals: {
+ ...globals.browser,
+ ...globals.es2017,
+ ...globals.amd,
+ '_': 'readonly',
+ 'module': 'readonly',
+ '__dirname': 'readonly',
+ 'global': 'readonly',
+ 'jest': 'readonly',
+ 'process': 'readonly',
+ },
},
- 'sourceType': 'module',
- 'babelOptions': {
- 'plugins': [
- '@babel/plugin-syntax-jsx',
- '@babel/plugin-proposal-class-properties',
- ],
+ 'plugins': {
+ 'react': reactjs,
+ '@babel': babel,
},
- },
- 'plugins': [
- 'react',
- '@babel',
- 'jest'
- ],
- 'overrides': [
- {
- 'files': ['**/*.{ts,tsx}'],
- 'plugins': [
- '@typescript-eslint',
+ 'rules': {
+ 'indent': [
+ 'error',
+ 2,
+ ],
+ 'linebreak-style': 0,
+ 'quotes': [
+ 'error',
+ 'single',
+ ],
+ 'semi': [
+ 'error',
+ 'always',
+ ],
+ 'comma-dangle': [
+ 'error',
+ 'only-multiline',
],
- 'extends': ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/eslint-recommended'],
- 'parser': '@typescript-eslint/parser',
- 'rules': {
- '@typescript-eslint/no-explicit-any': ['off'],
- '@typescript-eslint/no-this-alias': ['off'],
- }
+ 'no-console': ['error', { allow: ['warn', 'error'] }],
+ // We need to exclude below for RegEx case
+ 'no-useless-escape': 'off',
+ 'no-prototype-builtins': 'off',
+ 'no-global-assign': 'off',
+ 'no-import-assign': 'off',
+ 'react/jsx-uses-vars': 'error',
+ 'react/jsx-uses-react': 'error'
},
- {
- 'files': ['**/*{spec,test}.{js,jsx}', './regression/javascript/**/*.{js}'],
- 'extends': ['eslint:recommended'],
- 'env': {
- 'jest': true
- }
+ 'settings': {
+ 'react': {
+ 'version': 'detect',
+ },
},
- ],
- 'globals': {
- '_': true,
- 'module': true,
- '__dirname': true,
- 'global': true,
- 'jest': true
},
- 'rules': {
- 'indent': [
- 'error',
- 2,
- ],
- 'linebreak-style': 0,
- 'quotes': [
- 'error',
- 'single',
- ],
- 'semi': [
- 'error',
- 'always',
- ],
- 'comma-dangle': [
- 'error',
- 'only-multiline',
- ],
- 'no-console': ['error', { allow: ['warn', 'error'] }],
- // We need to exclude below for RegEx case
- 'no-useless-escape': 0,
- 'no-prototype-builtins': 0,
- 'no-global-assign': 0,
- 'no-import-assign': 0,
- },
- 'settings': {
- 'react': {
- 'version': 'detect',
+ {
+ 'files': ['**/*.{ts,tsx}'],
+ languageOptions: {
+ 'parser': ts.parser,
+ },
+ 'plugins': {
+ '@typescript-eslint': ts.plugin,
},
+ 'rules': {
+ 'no-unused-vars': 'off',
+ 'no-undef': 'off',
+ '@typescript-eslint/no-unused-vars': ['error'],
+ '@typescript-eslint/no-explicit-any': ['off'],
+ '@typescript-eslint/no-this-alias': ['off'],
+ }
},
-};
+ {
+ 'files': ['**/*{spec,test}.{js,jsx}', './regression/javascript/**/*.{js}'],
+ ...jest.configs['flat/recommended'],
+ rules: {
+ ...jest.configs['flat/recommended'].rules,
+ 'jest/prefer-expect-assertions': 'off',
+ 'jest/expect-expect': 'off',
+ 'jest/no-identical-title': 'off',
+ 'jest/no-done-callback': 'off',
+ 'jest/no-conditional-expect': 'off',
+ 'jest/valid-title': 'off',
+ },
+ }
+];
diff --git a/web/package.json b/web/package.json
index 8bcda0eb0ad..7a36114395a 100644
--- a/web/package.json
+++ b/web/package.json
@@ -8,8 +8,8 @@
"license": "PostgreSQL",
"devDependencies": {
"@babel/core": "^7.10.2",
- "@babel/eslint-parser": "^7.21.3",
- "@babel/eslint-plugin": "^7.17.7",
+ "@babel/eslint-parser": "^7.24.7",
+ "@babel/eslint-plugin": "^7.24.7",
"@babel/plugin-proposal-object-rest-spread": "^7.10.1",
"@babel/plugin-syntax-jsx": "^7.16.0",
"@babel/plugin-transform-runtime": "^7.22.15",
@@ -25,8 +25,6 @@
"@testing-library/react": "16.0.0",
"@testing-library/user-event": "^14.5.2",
"@types/jest": "^29.5.4",
- "@typescript-eslint/eslint-plugin": "^7.12.0",
- "@typescript-eslint/parser": "^7.12.0",
"autoprefixer": "^10.2.4",
"axios-mock-adapter": "^1.17.0",
"babel-loader": "^9.1.3",
@@ -36,11 +34,12 @@
"cross-env": "^7.0.3",
"css-loader": "^6.7.2",
"css-minimizer-webpack-plugin": "^5.0.0",
- "eslint": "^8.37.0",
+ "eslint": "^9.5.0",
"eslint-plugin-jest": "^27.4.0",
- "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react": "^7.34.3",
"eslint-plugin-react-hooks": "^4.3.0",
"exports-loader": "^4.0.0",
+ "globals": "^15.8.0",
"html-react-parser": "^5.0.6",
"image-minimizer-webpack-plugin": "^4.0.2",
"imagemin": "^8.0.1",
@@ -62,6 +61,7 @@
"svgo-loader": "^2.2.0",
"terser-webpack-plugin": "^5.1.1",
"typescript": "^5.4.5",
+ "typescript-eslint": "^7.15.0",
"url-loader": "^4.1.1",
"webfonts-loader": "^8.0.1",
"webpack": "^5.88.2",
@@ -156,7 +156,7 @@
"zustand": "^4.4.1"
},
"scripts": {
- "linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js --ext .jsx --ext .ts --ext .tsx .",
+ "linter": "yarn run eslint -c .eslintrc.js .",
"webpacker": "yarn run webpack --config webpack.config.js --progress",
"webpacker:watch": "yarn run webpack --config webpack.config.js --progress --watch",
"bundle:watch": "yarn run linter && yarn run webpacker:watch",
@@ -175,5 +175,8 @@
"auditpy": "safety check --full-report -i 51668 -i 52495yarn npm audit",
"audit-all": "yarn run auditjs && yarn run auditpy"
},
- "packageManager": "yarn@3.8.3"
+ "packageManager": "yarn@3.8.3",
+ "browserslist": [
+ "defaults and fully supports es6-module"
+ ]
}
diff --git a/web/pgadmin/browser/server_groups/servers/roles/static/js/role.ui.js b/web/pgadmin/browser/server_groups/servers/roles/static/js/role.ui.js
index 9ba7c6e6bee..8ab594d20d4 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/static/js/role.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/roles/static/js/role.ui.js
@@ -32,8 +32,8 @@ export default class RoleSchema extends BaseUISchema {
variables: [],
rolbypassrls: false,
});
- this.getVariableSchema = getVariableSchema;
- this.getMembershipSchema = getMembershipSchema;
+ this.variableSchema = getVariableSchema();
+ this.membershipSchema = getMembershipSchema();
this.fieldOptions = {
role: [],
...fieldOptions,
@@ -165,7 +165,7 @@ export default class RoleSchema extends BaseUISchema {
disabled: obj.readOnly,
mode: ['edit', 'create'], cell: 'text',
type: 'collection',
- schema: new obj.getMembershipSchema(),
+ schema: obj.membershipSchema,
helpMessage: obj.isReadOnly ? gettext('Select the checkbox for roles to include WITH ADMIN OPTION.') : gettext('Roles shown with a check mark have the WITH ADMIN OPTION set.'),
},
{
@@ -183,7 +183,7 @@ export default class RoleSchema extends BaseUISchema {
id: 'rolmembers', label: gettext('Members'), group: gettext('Membership'),
mode: ['edit', 'create'], cell: 'text',
type: 'collection',
- schema: new obj.getMembershipSchema(),
+ schema: obj.membershipSchema,
disabled: obj.readOnly,
helpMessage: obj.isReadOnly ? gettext('Select the checkbox for roles to include WITH ADMIN OPTION.') : gettext('Roles shown with a check mark have the WITH ADMIN OPTION set.') ,
},
@@ -201,7 +201,7 @@ export default class RoleSchema extends BaseUISchema {
{
id: 'variables', label: '', type: 'collection',
group: gettext('Parameters'),
- schema: this.getVariableSchema(),
+ schema: this.variableSchema,
mode: [ 'edit', 'create'], canAdd: true, canDelete: true,
disabled: obj.readOnly,
},
diff --git a/web/pgadmin/dashboard/static/js/Dashboard.jsx b/web/pgadmin/dashboard/static/js/Dashboard.jsx
index 853fb2d6c88..6cd1915779e 100644
--- a/web/pgadmin/dashboard/static/js/Dashboard.jsx
+++ b/web/pgadmin/dashboard/static/js/Dashboard.jsx
@@ -468,7 +468,7 @@ function Dashboard({
link.click();
}
document.body.removeChild(link);
- } catch (error) {
+ } catch {
setSsMsg(gettext('Failed to download the logs.'));
}
};
diff --git a/web/pgadmin/dashboard/static/js/SystemStats/CpuDetails.jsx b/web/pgadmin/dashboard/static/js/SystemStats/CpuDetails.jsx
index 4207ff303c5..47e80dfa37f 100644
--- a/web/pgadmin/dashboard/static/js/SystemStats/CpuDetails.jsx
+++ b/web/pgadmin/dashboard/static/js/SystemStats/CpuDetails.jsx
@@ -6,7 +6,7 @@
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
-// eslint-disable-next-line react/display-name
+
import React, { useState, useEffect, useRef, useReducer, useMemo } from 'react';
import PgTable from 'sources/components/PgTable';
import gettext from 'sources/gettext';
diff --git a/web/pgadmin/static/js/clipboard.js b/web/pgadmin/static/js/clipboard.js
index 2ced92fd3ca..bb1e385766e 100644
--- a/web/pgadmin/static/js/clipboard.js
+++ b/web/pgadmin/static/js/clipboard.js
@@ -3,7 +3,7 @@ import pgAdmin from 'sources/pgadmin';
export async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
- } catch(err) {
+ } catch {
/* Suppress error */
pgAdmin.Browser.notifier.error('Does not have clipboard access');
}
diff --git a/web/pgadmin/static/js/components/ReactCodeMirror/components/Editor.jsx b/web/pgadmin/static/js/components/ReactCodeMirror/components/Editor.jsx
index 1ac749ac442..a032e319ccb 100644
--- a/web/pgadmin/static/js/components/ReactCodeMirror/components/Editor.jsx
+++ b/web/pgadmin/static/js/components/ReactCodeMirror/components/Editor.jsx
@@ -66,7 +66,7 @@ function handleDrop(e, editor) {
if (e.stopPropagation) {
e.stopPropagation();
}
- } catch (error) {
+ } catch {
/* if parsing fails, it must be the drag internal of codemirror text */
return false;
}
diff --git a/web/pgadmin/static/js/helpers/withColorPicker.js b/web/pgadmin/static/js/helpers/withColorPicker.js
index c8668f4a118..2ac97de18e8 100644
--- a/web/pgadmin/static/js/helpers/withColorPicker.js
+++ b/web/pgadmin/static/js/helpers/withColorPicker.js
@@ -15,7 +15,7 @@ import PropTypes from 'prop-types';
import { fullHexColor } from '../utils';
export function withColorPicker(Component) {
- // eslint-disable-next-line react/display-name
+
const HOCComponent = ({value, currObj, onChange, onSave, options, ...props})=>{
const pickrOptions = {
showPalette: true,
diff --git a/web/pgadmin/static/js/helpers/withStandardTabInfo.jsx b/web/pgadmin/static/js/helpers/withStandardTabInfo.jsx
index e713c76bcbd..b22cfbf2f61 100644
--- a/web/pgadmin/static/js/helpers/withStandardTabInfo.jsx
+++ b/web/pgadmin/static/js/helpers/withStandardTabInfo.jsx
@@ -14,7 +14,7 @@ import { usePgAdmin } from '../../../static/js/BrowserComponent';
import ErrorBoundary from './ErrorBoundary';
export default function withStandardTabInfo(Component, tabId) {
- // eslint-disable-next-line react/display-name
+
const HOCComponent = (props)=>{
const [[isStale, nodeItem, nodeData], setNodeInfo] = useState([true, undefined, undefined]);
const pgAdmin = usePgAdmin();
diff --git a/web/pgadmin/static/js/to_px.js b/web/pgadmin/static/js/to_px.js
index af1e3df7f87..15f0d679523 100644
--- a/web/pgadmin/static/js/to_px.js
+++ b/web/pgadmin/static/js/to_px.js
@@ -84,7 +84,7 @@ export default function toPx(value, prop, force, el) {
// set the style on the target element
try {
style[prop] = value;
- } catch (e) {
+ } catch {
// IE 8 and below throw an exception when setting unsupported units
return 0;
}
diff --git a/web/pgadmin/static/js/tree/ObjectExplorer.jsx b/web/pgadmin/static/js/tree/ObjectExplorer.jsx
index fd6e52f1bd4..ac3c65d0cab 100644
--- a/web/pgadmin/static/js/tree/ObjectExplorer.jsx
+++ b/web/pgadmin/static/js/tree/ObjectExplorer.jsx
@@ -141,7 +141,7 @@ export default function ObjectExplorer() {
try {
const _node_path = parentPath + '/' + _data.id;
return mtree.addNode(parentPath, _node_path, _data);
- } catch (error) {
+ } catch {
return null; // or throw error as you see fit
}
};
@@ -151,7 +151,7 @@ export default function ObjectExplorer() {
try {
await mtree.removeNode(path, _removeOnlyChild);
return true;
- } catch (error) {
+ } catch {
return false; // or throw error as you see fit
}
};
@@ -161,7 +161,7 @@ export default function ObjectExplorer() {
try {
await mtree.updateNode(path, data);
return true;
- } catch (error) {
+ } catch {
return false; // or throw error as you see fit
}
};
diff --git a/web/pgadmin/static/js/window.js b/web/pgadmin/static/js/window.js
index 0b57b2d7051..b19b2be3afd 100644
--- a/web/pgadmin/static/js/window.js
+++ b/web/pgadmin/static/js/window.js
@@ -24,7 +24,7 @@ const pgWindow = function() {
} else {
localPgWindow = window;
}
- } catch (error) {
+ } catch {
localPgWindow = window;
}
return localPgWindow;
diff --git a/web/pgadmin/tools/debugger/static/js/DebuggerModule.js b/web/pgadmin/tools/debugger/static/js/DebuggerModule.js
index a769aa827eb..1f8e3297e1e 100644
--- a/web/pgadmin/tools/debugger/static/js/DebuggerModule.js
+++ b/web/pgadmin/tools/debugger/static/js/DebuggerModule.js
@@ -367,7 +367,7 @@ export default class DebuggerModule {
let browser_preferences = usePreferences.getState().getPreferencesForModule('browser');
let open_new_tab = browser_preferences.new_browser_tab_open;
- const db_label = self.checkDbNameChange(data, dbNode, newTreeInfo, db_label);
+ const db_label = self.checkDbNameChange(data, dbNode, newTreeInfo);
let label = getAppropriateLabel(newTreeInfo);
pgAdmin.Browser.Events.trigger(
'pgadmin:tool:show',
diff --git a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx
index 14359c634b5..b9547e40f79 100644
--- a/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx
+++ b/web/pgadmin/tools/debugger/static/js/components/DebuggerComponent.jsx
@@ -147,7 +147,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panelId,
}
});
}
- } catch (e) {
+ } catch {
alert(xhr);
pgAdmin.Browser.notifier.alert(
gettext('Debugger Error'),
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/GeometryViewer.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/GeometryViewer.jsx
index 5746594e254..916229e38c3 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/sections/GeometryViewer.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/GeometryViewer.jsx
@@ -87,7 +87,7 @@ function parseEwkbData(rows, column) {
}
supportedGeometries.push(geometry);
geometryItemMap.set(geometry, item);
- } catch (e) {
+ } catch {
unsupportedRows.push(item);
}
return true;
diff --git a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx
index b30c52eecba..413ff0d2a5e 100644
--- a/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx
+++ b/web/pgadmin/tools/sqleditor/static/js/components/sections/ResultSet.jsx
@@ -1075,7 +1075,7 @@ export function ResultSet() {
'info': gettext('This query was generated by pgAdmin as part of a "Save Data" operation'),
});
});
- } catch (_e) {/* History errors should not bother others */}
+ } catch {/* History errors should not bother others */}
if(!respData.data.status) {
eventBus.fireEvent(QUERY_TOOL_EVENTS.SAVE_DATA_DONE, false);
diff --git a/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py b/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py
index 8cd8ed99ca0..464cf215926 100644
--- a/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py
+++ b/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py
@@ -65,15 +65,23 @@ def _function_node_expandable(self):
function_node.click()
def _debug_function(self):
+ wait = WebDriverWait(self.page.driver, 2)
self.page.driver.find_element(By.CSS_SELECTOR,
NavMenuLocators.object_menu_css).click()
+ wait.until(EC.presence_of_element_located(
+ (By.CSS_SELECTOR, "div[data-label='Debugging']")))
+
ActionChains(
self.page.driver
).move_to_element(
self.page.driver.find_element(
By.CSS_SELECTOR, "div[data-label='Debugging']")
).perform()
- time.sleep(2)
+
+ # time.sleep(2)
+ wait.until(EC.presence_of_element_located(
+ (By.CSS_SELECTOR, "li[data-label='Debug']")))
+
self.page.driver.find_element(
By.CSS_SELECTOR, "li[data-label='Debug']").click()
diff --git a/web/regression/javascript/fake_theme.js b/web/regression/javascript/fake_theme.js
index dc0ca791754..b60d7218efc 100644
--- a/web/regression/javascript/fake_theme.js
+++ b/web/regression/javascript/fake_theme.js
@@ -2,7 +2,6 @@ import React from 'react';
import Theme from 'sources/Theme';
export function withTheme(WrappedComp) {
- // eslint-disable-next-line react/display-name
return (props)=>{
return ;
};
diff --git a/web/regression/javascript/genericFunctions.jsx b/web/regression/javascript/genericFunctions.jsx
index 6bedcd8549e..ab58144fb85 100644
--- a/web/regression/javascript/genericFunctions.jsx
+++ b/web/regression/javascript/genericFunctions.jsx
@@ -18,7 +18,6 @@ import { act, render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
export function withBrowser(WrappedComp) {
- // eslint-disable-next-line react/display-name
return (props)=>{
return
diff --git a/web/yarn.lock b/web/yarn.lock
index 189206ad078..316501a27f8 100644
--- a/web/yarn.lock
+++ b/web/yarn.lock
@@ -62,7 +62,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/eslint-parser@npm:^7.21.3":
+"@babel/eslint-parser@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/eslint-parser@npm:7.24.7"
dependencies:
@@ -76,7 +76,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/eslint-plugin@npm:^7.17.7":
+"@babel/eslint-plugin@npm:^7.24.7":
version: 7.24.7
resolution: "@babel/eslint-plugin@npm:7.24.7"
dependencies:
@@ -1880,27 +1880,45 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^2.1.4":
- version: 2.1.4
- resolution: "@eslint/eslintrc@npm:2.1.4"
+"@eslint/config-array@npm:^0.17.0":
+ version: 0.17.0
+ resolution: "@eslint/config-array@npm:0.17.0"
+ dependencies:
+ "@eslint/object-schema": ^2.1.4
+ debug: ^4.3.1
+ minimatch: ^3.1.2
+ checksum: 4a7eea8e8531045ae6836c7b899776663f120b75a074fd09c5bfa52304ee969053d1daad35c30e3f657ef578078c14fe277a5ff625bceb4166c6196ff44e5d02
+ languageName: node
+ linkType: hard
+
+"@eslint/eslintrc@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "@eslint/eslintrc@npm:3.1.0"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
- espree: ^9.6.0
- globals: ^13.19.0
+ espree: ^10.0.1
+ globals: ^14.0.0
ignore: ^5.2.0
import-fresh: ^3.2.1
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127
+ checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4
languageName: node
linkType: hard
-"@eslint/js@npm:8.57.0":
- version: 8.57.0
- resolution: "@eslint/js@npm:8.57.0"
- checksum: 315dc65b0e9893e2bff139bddace7ea601ad77ed47b4550e73da8c9c2d2766c7a575c3cddf17ef85b8fd6a36ff34f91729d0dcca56e73ca887c10df91a41b0bb
+"@eslint/js@npm:9.6.0":
+ version: 9.6.0
+ resolution: "@eslint/js@npm:9.6.0"
+ checksum: 8d0c1cc81ae9182139a38555a56bd6387b663b45efa5ca642e1e50584926f749a68d497c8a5ca02d55661341a5b689fc7977c65b10191e2a315888ca403b8bcd
+ languageName: node
+ linkType: hard
+
+"@eslint/object-schema@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "@eslint/object-schema@npm:2.1.4"
+ checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271
languageName: node
linkType: hard
@@ -1956,17 +1974,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/config-array@npm:^0.11.14":
- version: 0.11.14
- resolution: "@humanwhocodes/config-array@npm:0.11.14"
- dependencies:
- "@humanwhocodes/object-schema": ^2.0.2
- debug: ^4.3.1
- minimatch: ^3.0.5
- checksum: 861ccce9eaea5de19546653bccf75bf09fe878bc39c3aab00aeee2d2a0e654516adad38dd1098aab5e3af0145bbcbf3f309bdf4d964f8dab9dcd5834ae4c02f2
- languageName: node
- linkType: hard
-
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
@@ -1974,10 +1981,10 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/object-schema@npm:^2.0.2":
- version: 2.0.3
- resolution: "@humanwhocodes/object-schema@npm:2.0.3"
- checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631
+"@humanwhocodes/retry@npm:^0.3.0":
+ version: 0.3.0
+ resolution: "@humanwhocodes/retry@npm:0.3.0"
+ checksum: 4349cb8b60466a000e945fde8f8551cefb01ebba22ead4a92ac7b145f67f5da6b52e5a1e0c53185d732d0a49958ac29327934a4a5ac1d0bc20efb4429a4f7bf7
languageName: node
linkType: hard
@@ -3469,7 +3476,7 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:^7.12.0":
+"@typescript-eslint/eslint-plugin@npm:7.15.0":
version: 7.15.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.15.0"
dependencies:
@@ -3492,7 +3499,7 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/parser@npm:^7.12.0":
+"@typescript-eslint/parser@npm:7.15.0":
version: 7.15.0
resolution: "@typescript-eslint/parser@npm:7.15.0"
dependencies:
@@ -3650,13 +3657,6 @@ __metadata:
languageName: node
linkType: hard
-"@ungap/structured-clone@npm:^1.2.0":
- version: 1.2.0
- resolution: "@ungap/structured-clone@npm:1.2.0"
- checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524
- languageName: node
- linkType: hard
-
"@vusion/webfonts-generator@npm:^0.8.0":
version: 0.8.0
resolution: "@vusion/webfonts-generator@npm:0.8.0"
@@ -3984,7 +3984,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0":
+"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.12.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2":
version: 8.12.1
resolution: "acorn@npm:8.12.1"
bin:
@@ -6573,15 +6573,6 @@ __metadata:
languageName: node
linkType: hard
-"doctrine@npm:^3.0.0":
- version: 3.0.0
- resolution: "doctrine@npm:3.0.0"
- dependencies:
- esutils: ^2.0.2
- checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce
- languageName: node
- linkType: hard
-
"dom-accessibility-api@npm:^0.5.9":
version: 0.5.16
resolution: "dom-accessibility-api@npm:0.5.16"
@@ -7144,7 +7135,7 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-react@npm:^7.33.2":
+"eslint-plugin-react@npm:^7.34.3":
version: 7.34.3
resolution: "eslint-plugin-react@npm:7.34.3"
dependencies:
@@ -7189,13 +7180,13 @@ __metadata:
languageName: node
linkType: hard
-"eslint-scope@npm:^7.2.2":
- version: 7.2.2
- resolution: "eslint-scope@npm:7.2.2"
+"eslint-scope@npm:^8.0.1":
+ version: 8.0.1
+ resolution: "eslint-scope@npm:8.0.1"
dependencies:
esrecurse: ^4.3.0
estraverse: ^5.2.0
- checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e
+ checksum: 67a5a39312dadb8c9a677df0f2e8add8daf15280b08bfe07f898d5347ee2d7cd2a1f5c2760f34e46e8f5f13f7192f47c2c10abe676bfa4173ae5539365551940
languageName: node
linkType: hard
@@ -7206,47 +7197,50 @@ __metadata:
languageName: node
linkType: hard
-"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3":
version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
languageName: node
linkType: hard
-"eslint@npm:^8.37.0":
- version: 8.57.0
- resolution: "eslint@npm:8.57.0"
+"eslint-visitor-keys@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "eslint-visitor-keys@npm:4.0.0"
+ checksum: 5c09f89cf29d87cdbfbac38802a880d3c2e65f8cb61c689888346758f1e24a4c7f6caefeac9474dfa52058a99920623599bdb00516976a30134abeba91275aa2
+ languageName: node
+ linkType: hard
+
+"eslint@npm:^9.5.0":
+ version: 9.6.0
+ resolution: "eslint@npm:9.6.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.6.1
- "@eslint/eslintrc": ^2.1.4
- "@eslint/js": 8.57.0
- "@humanwhocodes/config-array": ^0.11.14
+ "@eslint/config-array": ^0.17.0
+ "@eslint/eslintrc": ^3.1.0
+ "@eslint/js": 9.6.0
"@humanwhocodes/module-importer": ^1.0.1
+ "@humanwhocodes/retry": ^0.3.0
"@nodelib/fs.walk": ^1.2.8
- "@ungap/structured-clone": ^1.2.0
ajv: ^6.12.4
chalk: ^4.0.0
cross-spawn: ^7.0.2
debug: ^4.3.2
- doctrine: ^3.0.0
escape-string-regexp: ^4.0.0
- eslint-scope: ^7.2.2
- eslint-visitor-keys: ^3.4.3
- espree: ^9.6.1
- esquery: ^1.4.2
+ eslint-scope: ^8.0.1
+ eslint-visitor-keys: ^4.0.0
+ espree: ^10.1.0
+ esquery: ^1.5.0
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
- file-entry-cache: ^6.0.1
+ file-entry-cache: ^8.0.0
find-up: ^5.0.0
glob-parent: ^6.0.2
- globals: ^13.19.0
- graphemer: ^1.4.0
ignore: ^5.2.0
imurmurhash: ^0.1.4
is-glob: ^4.0.0
is-path-inside: ^3.0.3
- js-yaml: ^4.1.0
json-stable-stringify-without-jsonify: ^1.0.1
levn: ^0.4.1
lodash.merge: ^4.6.2
@@ -7257,18 +7251,18 @@ __metadata:
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
- checksum: 3a48d7ff85ab420a8447e9810d8087aea5b1df9ef68c9151732b478de698389ee656fd895635b5f2871c89ee5a2652b3f343d11e9db6f8486880374ebc74a2d9
+ checksum: b3f3de28df0ebbccbd0863637523cd443569dd32d18da021a97b53f25b2f5bc7f788fe74da8e585da6bb7b2060d7a688e9dcaa35efaabb7b596c354ff4b07963
languageName: node
linkType: hard
-"espree@npm:^9.6.0, espree@npm:^9.6.1":
- version: 9.6.1
- resolution: "espree@npm:9.6.1"
+"espree@npm:^10.0.1, espree@npm:^10.1.0":
+ version: 10.1.0
+ resolution: "espree@npm:10.1.0"
dependencies:
- acorn: ^8.9.0
+ acorn: ^8.12.0
acorn-jsx: ^5.3.2
- eslint-visitor-keys: ^3.4.1
- checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9
+ eslint-visitor-keys: ^4.0.0
+ checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e
languageName: node
linkType: hard
@@ -7282,7 +7276,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.4.2":
+"esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
@@ -7564,12 +7558,12 @@ __metadata:
languageName: node
linkType: hard
-"file-entry-cache@npm:^6.0.1":
- version: 6.0.1
- resolution: "file-entry-cache@npm:6.0.1"
+"file-entry-cache@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "file-entry-cache@npm:8.0.0"
dependencies:
- flat-cache: ^3.0.4
- checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74
+ flat-cache: ^4.0.0
+ checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f
languageName: node
linkType: hard
@@ -7727,14 +7721,13 @@ __metadata:
languageName: node
linkType: hard
-"flat-cache@npm:^3.0.4":
- version: 3.2.0
- resolution: "flat-cache@npm:3.2.0"
+"flat-cache@npm:^4.0.0":
+ version: 4.0.1
+ resolution: "flat-cache@npm:4.0.1"
dependencies:
flatted: ^3.2.9
- keyv: ^4.5.3
- rimraf: ^3.0.2
- checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec
+ keyv: ^4.5.4
+ checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6
languageName: node
linkType: hard
@@ -8087,12 +8080,17 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^13.19.0":
- version: 13.24.0
- resolution: "globals@npm:13.24.0"
- dependencies:
- type-fest: ^0.20.2
- checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c
+"globals@npm:^14.0.0":
+ version: 14.0.0
+ resolution: "globals@npm:14.0.0"
+ checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac
+ languageName: node
+ linkType: hard
+
+"globals@npm:^15.8.0":
+ version: 15.8.0
+ resolution: "globals@npm:15.8.0"
+ checksum: 92d0522c47226ca12f6fd8938df04b37852d812cc5a84e31890d919497f102a818d2081570bc08c2dd6353cd8b2699e7180bc468abbbec8c858a19e0fa53aeb8
languageName: node
linkType: hard
@@ -10141,7 +10139,7 @@ __metadata:
languageName: node
linkType: hard
-"keyv@npm:^4.5.3":
+"keyv@npm:^4.5.4":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
dependencies:
@@ -10861,7 +10859,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -13937,8 +13935,8 @@ __metadata:
resolution: "root-workspace-0b6124@workspace:."
dependencies:
"@babel/core": ^7.10.2
- "@babel/eslint-parser": ^7.21.3
- "@babel/eslint-plugin": ^7.17.7
+ "@babel/eslint-parser": ^7.24.7
+ "@babel/eslint-plugin": ^7.24.7
"@babel/plugin-proposal-class-properties": ^7.10.4
"@babel/plugin-proposal-object-rest-spread": ^7.10.1
"@babel/plugin-syntax-jsx": ^7.16.0
@@ -13975,8 +13973,6 @@ __metadata:
"@types/jest": ^29.5.4
"@types/react": ^18.0.2
"@types/react-dom": ^18.0.0
- "@typescript-eslint/eslint-plugin": ^7.12.0
- "@typescript-eslint/parser": ^7.12.0
ajv: ^8.8.2
anti-trojan-source: ^1.4.0
aspen-decorations: ^1.0.2
@@ -14001,11 +13997,12 @@ __metadata:
cssnano: ^5.0.2
date-fns: ^3.6.0
diff-arrays-of-objects: ^1.1.8
- eslint: ^8.37.0
+ eslint: ^9.5.0
eslint-plugin-jest: ^27.4.0
- eslint-plugin-react: ^7.33.2
+ eslint-plugin-react: ^7.34.3
eslint-plugin-react-hooks: ^4.3.0
exports-loader: ^4.0.0
+ globals: ^15.8.0
hotkeys-js: ^3.13.3
html-react-parser: ^5.0.6
html-to-image: ^1.11.11
@@ -14066,6 +14063,7 @@ __metadata:
svgo-loader: ^2.2.0
terser-webpack-plugin: ^5.1.1
typescript: ^5.4.5
+ typescript-eslint: ^7.15.0
uplot: ^1.6.24
uplot-react: ^1.1.4
url-loader: ^4.1.1
@@ -15570,13 +15568,6 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^0.20.2":
- version: 0.20.2
- resolution: "type-fest@npm:0.20.2"
- checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73
- languageName: node
- linkType: hard
-
"type-fest@npm:^0.21.3":
version: 0.21.3
resolution: "type-fest@npm:0.21.3"
@@ -15650,6 +15641,22 @@ __metadata:
languageName: node
linkType: hard
+"typescript-eslint@npm:^7.15.0":
+ version: 7.15.0
+ resolution: "typescript-eslint@npm:7.15.0"
+ dependencies:
+ "@typescript-eslint/eslint-plugin": 7.15.0
+ "@typescript-eslint/parser": 7.15.0
+ "@typescript-eslint/utils": 7.15.0
+ peerDependencies:
+ eslint: ^8.56.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 0a14724dba7a9f402db9d52f8d87b7d86b3472ffc0934627176b572680938ae60c584c5cb18db29335ea47293b6979a5ce6626d34507cd89726ceb15376c7d93
+ languageName: node
+ linkType: hard
+
"typescript@npm:^5.4.5":
version: 5.5.3
resolution: "typescript@npm:5.5.3"