- Set the browser target to ES6 and reduce the JS bundle size considerably

- Upgrade ESLint to v9.x and migrate the .eslintrc.js file to make it work
This commit is contained in:
Aditya Toshniwal 2024-07-04 18:25:47 +05:30 committed by GitHub
parent 10b2e91e29
commit dcfef154ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 266 additions and 233 deletions

View File

@ -1,7 +0,0 @@
generated
node_modules
vendor
templates/
templates\
ycache
regression/htmlcov

View File

@ -6,98 +6,122 @@
// This software is released under the PostgreSQL Licence // 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': { module.exports = [
'browser': true, {
'es6': true, ignores: [
'amd': true, '**/generated',
'**/node_modules',
'**/vendor',
'**/templates/',
'**/templates\\',
'**/ycache',
'**/regression/htmlcov',
],
}, },
'extends': [ js.configs.recommended,
'eslint:recommended', {
'plugin:react/recommended', files: ['**/*.{js,jsx,mjs,cjs,ts,tsx}'],
/* Uncomment the below line to use linter error for React Hooks. languageOptions: {
By Default commented so that builds are generated successfully. 'parser': babelParser,
Once all the errors will be resolved will uncomment it and commit it. ecmaVersion: 2018,
*/ parserOptions: {
// "plugin:react-hooks/recommended", 'ecmaFeatures': {
], 'jsx': true,
'parser': '@babel/eslint-parser', },
'parserOptions': { 'requireConfigFile': false,
'requireConfigFile': false, 'babelOptions': {
'ecmaVersion': 2018, 'plugins': [
'ecmaFeatures': { '@babel/plugin-syntax-jsx',
'jsx': true, '@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', 'plugins': {
'babelOptions': { 'react': reactjs,
'plugins': [ '@babel': babel,
'@babel/plugin-syntax-jsx', },
'@babel/plugin-proposal-class-properties', 'rules': {
'indent': [
'error',
2,
], ],
}, 'linebreak-style': 0,
}, 'quotes': [
'plugins': [ 'error',
'react', 'single',
'@babel',
'jest'
],
'overrides': [
{
'files': ['**/*.{ts,tsx}'],
'plugins': [
'@typescript-eslint',
], ],
'extends': ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/eslint-recommended'], 'semi': [
'parser': '@typescript-eslint/parser', 'error',
'rules': { 'always',
'@typescript-eslint/no-explicit-any': ['off'], ],
'@typescript-eslint/no-this-alias': ['off'], 'comma-dangle': [
} 'error',
'only-multiline',
],
'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'
}, },
{ 'settings': {
'files': ['**/*{spec,test}.{js,jsx}', './regression/javascript/**/*.{js}'], 'react': {
'extends': ['eslint:recommended'], 'version': 'detect',
'env': { },
'jest': true
}
},
],
'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',
},
}
];

View File

@ -8,8 +8,8 @@
"license": "PostgreSQL", "license": "PostgreSQL",
"devDependencies": { "devDependencies": {
"@babel/core": "^7.10.2", "@babel/core": "^7.10.2",
"@babel/eslint-parser": "^7.21.3", "@babel/eslint-parser": "^7.24.7",
"@babel/eslint-plugin": "^7.17.7", "@babel/eslint-plugin": "^7.24.7",
"@babel/plugin-proposal-object-rest-spread": "^7.10.1", "@babel/plugin-proposal-object-rest-spread": "^7.10.1",
"@babel/plugin-syntax-jsx": "^7.16.0", "@babel/plugin-syntax-jsx": "^7.16.0",
"@babel/plugin-transform-runtime": "^7.22.15", "@babel/plugin-transform-runtime": "^7.22.15",
@ -25,8 +25,6 @@
"@testing-library/react": "16.0.0", "@testing-library/react": "16.0.0",
"@testing-library/user-event": "^14.5.2", "@testing-library/user-event": "^14.5.2",
"@types/jest": "^29.5.4", "@types/jest": "^29.5.4",
"@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.12.0",
"autoprefixer": "^10.2.4", "autoprefixer": "^10.2.4",
"axios-mock-adapter": "^1.17.0", "axios-mock-adapter": "^1.17.0",
"babel-loader": "^9.1.3", "babel-loader": "^9.1.3",
@ -36,11 +34,12 @@
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"css-loader": "^6.7.2", "css-loader": "^6.7.2",
"css-minimizer-webpack-plugin": "^5.0.0", "css-minimizer-webpack-plugin": "^5.0.0",
"eslint": "^8.37.0", "eslint": "^9.5.0",
"eslint-plugin-jest": "^27.4.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", "eslint-plugin-react-hooks": "^4.3.0",
"exports-loader": "^4.0.0", "exports-loader": "^4.0.0",
"globals": "^15.8.0",
"html-react-parser": "^5.0.6", "html-react-parser": "^5.0.6",
"image-minimizer-webpack-plugin": "^4.0.2", "image-minimizer-webpack-plugin": "^4.0.2",
"imagemin": "^8.0.1", "imagemin": "^8.0.1",
@ -62,6 +61,7 @@
"svgo-loader": "^2.2.0", "svgo-loader": "^2.2.0",
"terser-webpack-plugin": "^5.1.1", "terser-webpack-plugin": "^5.1.1",
"typescript": "^5.4.5", "typescript": "^5.4.5",
"typescript-eslint": "^7.15.0",
"url-loader": "^4.1.1", "url-loader": "^4.1.1",
"webfonts-loader": "^8.0.1", "webfonts-loader": "^8.0.1",
"webpack": "^5.88.2", "webpack": "^5.88.2",
@ -156,7 +156,7 @@
"zustand": "^4.4.1" "zustand": "^4.4.1"
}, },
"scripts": { "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": "yarn run webpack --config webpack.config.js --progress",
"webpacker:watch": "yarn run webpack --config webpack.config.js --progress --watch", "webpacker:watch": "yarn run webpack --config webpack.config.js --progress --watch",
"bundle:watch": "yarn run linter && yarn run webpacker: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", "auditpy": "safety check --full-report -i 51668 -i 52495yarn npm audit",
"audit-all": "yarn run auditjs && yarn run auditpy" "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"
]
} }

View File

@ -32,8 +32,8 @@ export default class RoleSchema extends BaseUISchema {
variables: [], variables: [],
rolbypassrls: false, rolbypassrls: false,
}); });
this.getVariableSchema = getVariableSchema; this.variableSchema = getVariableSchema();
this.getMembershipSchema = getMembershipSchema; this.membershipSchema = getMembershipSchema();
this.fieldOptions = { this.fieldOptions = {
role: [], role: [],
...fieldOptions, ...fieldOptions,
@ -165,7 +165,7 @@ export default class RoleSchema extends BaseUISchema {
disabled: obj.readOnly, disabled: obj.readOnly,
mode: ['edit', 'create'], cell: 'text', mode: ['edit', 'create'], cell: 'text',
type: 'collection', 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.'), 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'), id: 'rolmembers', label: gettext('Members'), group: gettext('Membership'),
mode: ['edit', 'create'], cell: 'text', mode: ['edit', 'create'], cell: 'text',
type: 'collection', type: 'collection',
schema: new obj.getMembershipSchema(), schema: obj.membershipSchema,
disabled: obj.readOnly, 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.') , 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', id: 'variables', label: '', type: 'collection',
group: gettext('Parameters'), group: gettext('Parameters'),
schema: this.getVariableSchema(), schema: this.variableSchema,
mode: [ 'edit', 'create'], canAdd: true, canDelete: true, mode: [ 'edit', 'create'], canAdd: true, canDelete: true,
disabled: obj.readOnly, disabled: obj.readOnly,
}, },

View File

@ -468,7 +468,7 @@ function Dashboard({
link.click(); link.click();
} }
document.body.removeChild(link); document.body.removeChild(link);
} catch (error) { } catch {
setSsMsg(gettext('Failed to download the logs.')); setSsMsg(gettext('Failed to download the logs.'));
} }
}; };

View File

@ -6,7 +6,7 @@
// This software is released under the PostgreSQL Licence // 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 React, { useState, useEffect, useRef, useReducer, useMemo } from 'react';
import PgTable from 'sources/components/PgTable'; import PgTable from 'sources/components/PgTable';
import gettext from 'sources/gettext'; import gettext from 'sources/gettext';

View File

@ -3,7 +3,7 @@ import pgAdmin from 'sources/pgadmin';
export async function copyToClipboard(text) { export async function copyToClipboard(text) {
try { try {
await navigator.clipboard.writeText(text); await navigator.clipboard.writeText(text);
} catch(err) { } catch {
/* Suppress error */ /* Suppress error */
pgAdmin.Browser.notifier.error('Does not have clipboard access'); pgAdmin.Browser.notifier.error('Does not have clipboard access');
} }

View File

@ -66,7 +66,7 @@ function handleDrop(e, editor) {
if (e.stopPropagation) { if (e.stopPropagation) {
e.stopPropagation(); e.stopPropagation();
} }
} catch (error) { } catch {
/* if parsing fails, it must be the drag internal of codemirror text */ /* if parsing fails, it must be the drag internal of codemirror text */
return false; return false;
} }

View File

@ -15,7 +15,7 @@ import PropTypes from 'prop-types';
import { fullHexColor } from '../utils'; import { fullHexColor } from '../utils';
export function withColorPicker(Component) { export function withColorPicker(Component) {
// eslint-disable-next-line react/display-name
const HOCComponent = ({value, currObj, onChange, onSave, options, ...props})=>{ const HOCComponent = ({value, currObj, onChange, onSave, options, ...props})=>{
const pickrOptions = { const pickrOptions = {
showPalette: true, showPalette: true,

View File

@ -14,7 +14,7 @@ import { usePgAdmin } from '../../../static/js/BrowserComponent';
import ErrorBoundary from './ErrorBoundary'; import ErrorBoundary from './ErrorBoundary';
export default function withStandardTabInfo(Component, tabId) { export default function withStandardTabInfo(Component, tabId) {
// eslint-disable-next-line react/display-name
const HOCComponent = (props)=>{ const HOCComponent = (props)=>{
const [[isStale, nodeItem, nodeData], setNodeInfo] = useState([true, undefined, undefined]); const [[isStale, nodeItem, nodeData], setNodeInfo] = useState([true, undefined, undefined]);
const pgAdmin = usePgAdmin(); const pgAdmin = usePgAdmin();

View File

@ -84,7 +84,7 @@ export default function toPx(value, prop, force, el) {
// set the style on the target element // set the style on the target element
try { try {
style[prop] = value; style[prop] = value;
} catch (e) { } catch {
// IE 8 and below throw an exception when setting unsupported units // IE 8 and below throw an exception when setting unsupported units
return 0; return 0;
} }

View File

@ -141,7 +141,7 @@ export default function ObjectExplorer() {
try { try {
const _node_path = parentPath + '/' + _data.id; const _node_path = parentPath + '/' + _data.id;
return mtree.addNode(parentPath, _node_path, _data); return mtree.addNode(parentPath, _node_path, _data);
} catch (error) { } catch {
return null; // or throw error as you see fit return null; // or throw error as you see fit
} }
}; };
@ -151,7 +151,7 @@ export default function ObjectExplorer() {
try { try {
await mtree.removeNode(path, _removeOnlyChild); await mtree.removeNode(path, _removeOnlyChild);
return true; return true;
} catch (error) { } catch {
return false; // or throw error as you see fit return false; // or throw error as you see fit
} }
}; };
@ -161,7 +161,7 @@ export default function ObjectExplorer() {
try { try {
await mtree.updateNode(path, data); await mtree.updateNode(path, data);
return true; return true;
} catch (error) { } catch {
return false; // or throw error as you see fit return false; // or throw error as you see fit
} }
}; };

View File

@ -24,7 +24,7 @@ const pgWindow = function() {
} else { } else {
localPgWindow = window; localPgWindow = window;
} }
} catch (error) { } catch {
localPgWindow = window; localPgWindow = window;
} }
return localPgWindow; return localPgWindow;

View File

@ -367,7 +367,7 @@ export default class DebuggerModule {
let browser_preferences = usePreferences.getState().getPreferencesForModule('browser'); let browser_preferences = usePreferences.getState().getPreferencesForModule('browser');
let open_new_tab = browser_preferences.new_browser_tab_open; 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); let label = getAppropriateLabel(newTreeInfo);
pgAdmin.Browser.Events.trigger( pgAdmin.Browser.Events.trigger(
'pgadmin:tool:show', 'pgadmin:tool:show',

View File

@ -147,7 +147,7 @@ export default function DebuggerComponent({ pgAdmin, selectedNodeInfo, panelId,
} }
}); });
} }
} catch (e) { } catch {
alert(xhr); alert(xhr);
pgAdmin.Browser.notifier.alert( pgAdmin.Browser.notifier.alert(
gettext('Debugger Error'), gettext('Debugger Error'),

View File

@ -87,7 +87,7 @@ function parseEwkbData(rows, column) {
} }
supportedGeometries.push(geometry); supportedGeometries.push(geometry);
geometryItemMap.set(geometry, item); geometryItemMap.set(geometry, item);
} catch (e) { } catch {
unsupportedRows.push(item); unsupportedRows.push(item);
} }
return true; return true;

View File

@ -1075,7 +1075,7 @@ export function ResultSet() {
'info': gettext('This query was generated by pgAdmin as part of a "Save Data" operation'), '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) { if(!respData.data.status) {
eventBus.fireEvent(QUERY_TOOL_EVENTS.SAVE_DATA_DONE, false); eventBus.fireEvent(QUERY_TOOL_EVENTS.SAVE_DATA_DONE, false);

View File

@ -65,15 +65,23 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest):
function_node.click() function_node.click()
def _debug_function(self): def _debug_function(self):
wait = WebDriverWait(self.page.driver, 2)
self.page.driver.find_element(By.CSS_SELECTOR, self.page.driver.find_element(By.CSS_SELECTOR,
NavMenuLocators.object_menu_css).click() NavMenuLocators.object_menu_css).click()
wait.until(EC.presence_of_element_located(
(By.CSS_SELECTOR, "div[data-label='Debugging']")))
ActionChains( ActionChains(
self.page.driver self.page.driver
).move_to_element( ).move_to_element(
self.page.driver.find_element( self.page.driver.find_element(
By.CSS_SELECTOR, "div[data-label='Debugging']") By.CSS_SELECTOR, "div[data-label='Debugging']")
).perform() ).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( self.page.driver.find_element(
By.CSS_SELECTOR, "li[data-label='Debug']").click() By.CSS_SELECTOR, "li[data-label='Debug']").click()

View File

@ -2,7 +2,6 @@ import React from 'react';
import Theme from 'sources/Theme'; import Theme from 'sources/Theme';
export function withTheme(WrappedComp) { export function withTheme(WrappedComp) {
// eslint-disable-next-line react/display-name
return (props)=>{ return (props)=>{
return <Theme><WrappedComp {...props}/></Theme>; return <Theme><WrappedComp {...props}/></Theme>;
}; };

View File

@ -18,7 +18,6 @@ import { act, render } from '@testing-library/react';
import userEvent from '@testing-library/user-event'; import userEvent from '@testing-library/user-event';
export function withBrowser(WrappedComp) { export function withBrowser(WrappedComp) {
// eslint-disable-next-line react/display-name
return (props)=>{ return (props)=>{
return <Theme> return <Theme>
<PgAdminContext.Provider value={fakePgAdmin}> <PgAdminContext.Provider value={fakePgAdmin}>

View File

@ -62,7 +62,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/eslint-parser@npm:^7.21.3": "@babel/eslint-parser@npm:^7.24.7":
version: 7.24.7 version: 7.24.7
resolution: "@babel/eslint-parser@npm:7.24.7" resolution: "@babel/eslint-parser@npm:7.24.7"
dependencies: dependencies:
@ -76,7 +76,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@babel/eslint-plugin@npm:^7.17.7": "@babel/eslint-plugin@npm:^7.24.7":
version: 7.24.7 version: 7.24.7
resolution: "@babel/eslint-plugin@npm:7.24.7" resolution: "@babel/eslint-plugin@npm:7.24.7"
dependencies: dependencies:
@ -1880,27 +1880,45 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/eslintrc@npm:^2.1.4": "@eslint/config-array@npm:^0.17.0":
version: 2.1.4 version: 0.17.0
resolution: "@eslint/eslintrc@npm:2.1.4" 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: dependencies:
ajv: ^6.12.4 ajv: ^6.12.4
debug: ^4.3.2 debug: ^4.3.2
espree: ^9.6.0 espree: ^10.0.1
globals: ^13.19.0 globals: ^14.0.0
ignore: ^5.2.0 ignore: ^5.2.0
import-fresh: ^3.2.1 import-fresh: ^3.2.1
js-yaml: ^4.1.0 js-yaml: ^4.1.0
minimatch: ^3.1.2 minimatch: ^3.1.2
strip-json-comments: ^3.1.1 strip-json-comments: ^3.1.1
checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/js@npm:8.57.0": "@eslint/js@npm:9.6.0":
version: 8.57.0 version: 9.6.0
resolution: "@eslint/js@npm:8.57.0" resolution: "@eslint/js@npm:9.6.0"
checksum: 315dc65b0e9893e2bff139bddace7ea601ad77ed47b4550e73da8c9c2d2766c7a575c3cddf17ef85b8fd6a36ff34f91729d0dcca56e73ca887c10df91a41b0bb 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 languageName: node
linkType: hard linkType: hard
@ -1956,17 +1974,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1 version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1" resolution: "@humanwhocodes/module-importer@npm:1.0.1"
@ -1974,10 +1981,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@humanwhocodes/object-schema@npm:^2.0.2": "@humanwhocodes/retry@npm:^0.3.0":
version: 2.0.3 version: 0.3.0
resolution: "@humanwhocodes/object-schema@npm:2.0.3" resolution: "@humanwhocodes/retry@npm:0.3.0"
checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 checksum: 4349cb8b60466a000e945fde8f8551cefb01ebba22ead4a92ac7b145f67f5da6b52e5a1e0c53185d732d0a49958ac29327934a4a5ac1d0bc20efb4429a4f7bf7
languageName: node languageName: node
linkType: hard linkType: hard
@ -3469,7 +3476,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/eslint-plugin@npm:^7.12.0": "@typescript-eslint/eslint-plugin@npm:7.15.0":
version: 7.15.0 version: 7.15.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.15.0" resolution: "@typescript-eslint/eslint-plugin@npm:7.15.0"
dependencies: dependencies:
@ -3492,7 +3499,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@typescript-eslint/parser@npm:^7.12.0": "@typescript-eslint/parser@npm:7.15.0":
version: 7.15.0 version: 7.15.0
resolution: "@typescript-eslint/parser@npm:7.15.0" resolution: "@typescript-eslint/parser@npm:7.15.0"
dependencies: dependencies:
@ -3650,13 +3657,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "@vusion/webfonts-generator@npm:^0.8.0":
version: 0.8.0 version: 0.8.0
resolution: "@vusion/webfonts-generator@npm:0.8.0" resolution: "@vusion/webfonts-generator@npm:0.8.0"
@ -3984,7 +3984,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 8.12.1
resolution: "acorn@npm:8.12.1" resolution: "acorn@npm:8.12.1"
bin: bin:
@ -6573,15 +6573,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "dom-accessibility-api@npm:^0.5.9":
version: 0.5.16 version: 0.5.16
resolution: "dom-accessibility-api@npm:0.5.16" resolution: "dom-accessibility-api@npm:0.5.16"
@ -7144,7 +7135,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint-plugin-react@npm:^7.33.2": "eslint-plugin-react@npm:^7.34.3":
version: 7.34.3 version: 7.34.3
resolution: "eslint-plugin-react@npm:7.34.3" resolution: "eslint-plugin-react@npm:7.34.3"
dependencies: dependencies:
@ -7189,13 +7180,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint-scope@npm:^7.2.2": "eslint-scope@npm:^8.0.1":
version: 7.2.2 version: 8.0.1
resolution: "eslint-scope@npm:7.2.2" resolution: "eslint-scope@npm:8.0.1"
dependencies: dependencies:
esrecurse: ^4.3.0 esrecurse: ^4.3.0
estraverse: ^5.2.0 estraverse: ^5.2.0
checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e checksum: 67a5a39312dadb8c9a677df0f2e8add8daf15280b08bfe07f898d5347ee2d7cd2a1f5c2760f34e46e8f5f13f7192f47c2c10abe676bfa4173ae5539365551940
languageName: node languageName: node
linkType: hard linkType: hard
@ -7206,47 +7197,50 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 3.4.3
resolution: "eslint-visitor-keys@npm:3.4.3" resolution: "eslint-visitor-keys@npm:3.4.3"
checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
languageName: node languageName: node
linkType: hard linkType: hard
"eslint@npm:^8.37.0": "eslint-visitor-keys@npm:^4.0.0":
version: 8.57.0 version: 4.0.0
resolution: "eslint@npm:8.57.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: dependencies:
"@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.6.1 "@eslint-community/regexpp": ^4.6.1
"@eslint/eslintrc": ^2.1.4 "@eslint/config-array": ^0.17.0
"@eslint/js": 8.57.0 "@eslint/eslintrc": ^3.1.0
"@humanwhocodes/config-array": ^0.11.14 "@eslint/js": 9.6.0
"@humanwhocodes/module-importer": ^1.0.1 "@humanwhocodes/module-importer": ^1.0.1
"@humanwhocodes/retry": ^0.3.0
"@nodelib/fs.walk": ^1.2.8 "@nodelib/fs.walk": ^1.2.8
"@ungap/structured-clone": ^1.2.0
ajv: ^6.12.4 ajv: ^6.12.4
chalk: ^4.0.0 chalk: ^4.0.0
cross-spawn: ^7.0.2 cross-spawn: ^7.0.2
debug: ^4.3.2 debug: ^4.3.2
doctrine: ^3.0.0
escape-string-regexp: ^4.0.0 escape-string-regexp: ^4.0.0
eslint-scope: ^7.2.2 eslint-scope: ^8.0.1
eslint-visitor-keys: ^3.4.3 eslint-visitor-keys: ^4.0.0
espree: ^9.6.1 espree: ^10.1.0
esquery: ^1.4.2 esquery: ^1.5.0
esutils: ^2.0.2 esutils: ^2.0.2
fast-deep-equal: ^3.1.3 fast-deep-equal: ^3.1.3
file-entry-cache: ^6.0.1 file-entry-cache: ^8.0.0
find-up: ^5.0.0 find-up: ^5.0.0
glob-parent: ^6.0.2 glob-parent: ^6.0.2
globals: ^13.19.0
graphemer: ^1.4.0
ignore: ^5.2.0 ignore: ^5.2.0
imurmurhash: ^0.1.4 imurmurhash: ^0.1.4
is-glob: ^4.0.0 is-glob: ^4.0.0
is-path-inside: ^3.0.3 is-path-inside: ^3.0.3
js-yaml: ^4.1.0
json-stable-stringify-without-jsonify: ^1.0.1 json-stable-stringify-without-jsonify: ^1.0.1
levn: ^0.4.1 levn: ^0.4.1
lodash.merge: ^4.6.2 lodash.merge: ^4.6.2
@ -7257,18 +7251,18 @@ __metadata:
text-table: ^0.2.0 text-table: ^0.2.0
bin: bin:
eslint: bin/eslint.js eslint: bin/eslint.js
checksum: 3a48d7ff85ab420a8447e9810d8087aea5b1df9ef68c9151732b478de698389ee656fd895635b5f2871c89ee5a2652b3f343d11e9db6f8486880374ebc74a2d9 checksum: b3f3de28df0ebbccbd0863637523cd443569dd32d18da021a97b53f25b2f5bc7f788fe74da8e585da6bb7b2060d7a688e9dcaa35efaabb7b596c354ff4b07963
languageName: node languageName: node
linkType: hard linkType: hard
"espree@npm:^9.6.0, espree@npm:^9.6.1": "espree@npm:^10.0.1, espree@npm:^10.1.0":
version: 9.6.1 version: 10.1.0
resolution: "espree@npm:9.6.1" resolution: "espree@npm:10.1.0"
dependencies: dependencies:
acorn: ^8.9.0 acorn: ^8.12.0
acorn-jsx: ^5.3.2 acorn-jsx: ^5.3.2
eslint-visitor-keys: ^3.4.1 eslint-visitor-keys: ^4.0.0
checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e
languageName: node languageName: node
linkType: hard linkType: hard
@ -7282,7 +7276,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"esquery@npm:^1.4.2": "esquery@npm:^1.5.0":
version: 1.5.0 version: 1.5.0
resolution: "esquery@npm:1.5.0" resolution: "esquery@npm:1.5.0"
dependencies: dependencies:
@ -7564,12 +7558,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"file-entry-cache@npm:^6.0.1": "file-entry-cache@npm:^8.0.0":
version: 6.0.1 version: 8.0.0
resolution: "file-entry-cache@npm:6.0.1" resolution: "file-entry-cache@npm:8.0.0"
dependencies: dependencies:
flat-cache: ^3.0.4 flat-cache: ^4.0.0
checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f
languageName: node languageName: node
linkType: hard linkType: hard
@ -7727,14 +7721,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"flat-cache@npm:^3.0.4": "flat-cache@npm:^4.0.0":
version: 3.2.0 version: 4.0.1
resolution: "flat-cache@npm:3.2.0" resolution: "flat-cache@npm:4.0.1"
dependencies: dependencies:
flatted: ^3.2.9 flatted: ^3.2.9
keyv: ^4.5.3 keyv: ^4.5.4
rimraf: ^3.0.2 checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6
checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec
languageName: node languageName: node
linkType: hard linkType: hard
@ -8087,12 +8080,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"globals@npm:^13.19.0": "globals@npm:^14.0.0":
version: 13.24.0 version: 14.0.0
resolution: "globals@npm:13.24.0" resolution: "globals@npm:14.0.0"
dependencies: checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac
type-fest: ^0.20.2 languageName: node
checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c linkType: hard
"globals@npm:^15.8.0":
version: 15.8.0
resolution: "globals@npm:15.8.0"
checksum: 92d0522c47226ca12f6fd8938df04b37852d812cc5a84e31890d919497f102a818d2081570bc08c2dd6353cd8b2699e7180bc468abbbec8c858a19e0fa53aeb8
languageName: node languageName: node
linkType: hard linkType: hard
@ -10141,7 +10139,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"keyv@npm:^4.5.3": "keyv@npm:^4.5.4":
version: 4.5.4 version: 4.5.4
resolution: "keyv@npm:4.5.4" resolution: "keyv@npm:4.5.4"
dependencies: dependencies:
@ -10861,7 +10859,7 @@ __metadata:
languageName: node languageName: node
linkType: hard 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 version: 3.1.2
resolution: "minimatch@npm:3.1.2" resolution: "minimatch@npm:3.1.2"
dependencies: dependencies:
@ -13937,8 +13935,8 @@ __metadata:
resolution: "root-workspace-0b6124@workspace:." resolution: "root-workspace-0b6124@workspace:."
dependencies: dependencies:
"@babel/core": ^7.10.2 "@babel/core": ^7.10.2
"@babel/eslint-parser": ^7.21.3 "@babel/eslint-parser": ^7.24.7
"@babel/eslint-plugin": ^7.17.7 "@babel/eslint-plugin": ^7.24.7
"@babel/plugin-proposal-class-properties": ^7.10.4 "@babel/plugin-proposal-class-properties": ^7.10.4
"@babel/plugin-proposal-object-rest-spread": ^7.10.1 "@babel/plugin-proposal-object-rest-spread": ^7.10.1
"@babel/plugin-syntax-jsx": ^7.16.0 "@babel/plugin-syntax-jsx": ^7.16.0
@ -13975,8 +13973,6 @@ __metadata:
"@types/jest": ^29.5.4 "@types/jest": ^29.5.4
"@types/react": ^18.0.2 "@types/react": ^18.0.2
"@types/react-dom": ^18.0.0 "@types/react-dom": ^18.0.0
"@typescript-eslint/eslint-plugin": ^7.12.0
"@typescript-eslint/parser": ^7.12.0
ajv: ^8.8.2 ajv: ^8.8.2
anti-trojan-source: ^1.4.0 anti-trojan-source: ^1.4.0
aspen-decorations: ^1.0.2 aspen-decorations: ^1.0.2
@ -14001,11 +13997,12 @@ __metadata:
cssnano: ^5.0.2 cssnano: ^5.0.2
date-fns: ^3.6.0 date-fns: ^3.6.0
diff-arrays-of-objects: ^1.1.8 diff-arrays-of-objects: ^1.1.8
eslint: ^8.37.0 eslint: ^9.5.0
eslint-plugin-jest: ^27.4.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 eslint-plugin-react-hooks: ^4.3.0
exports-loader: ^4.0.0 exports-loader: ^4.0.0
globals: ^15.8.0
hotkeys-js: ^3.13.3 hotkeys-js: ^3.13.3
html-react-parser: ^5.0.6 html-react-parser: ^5.0.6
html-to-image: ^1.11.11 html-to-image: ^1.11.11
@ -14066,6 +14063,7 @@ __metadata:
svgo-loader: ^2.2.0 svgo-loader: ^2.2.0
terser-webpack-plugin: ^5.1.1 terser-webpack-plugin: ^5.1.1
typescript: ^5.4.5 typescript: ^5.4.5
typescript-eslint: ^7.15.0
uplot: ^1.6.24 uplot: ^1.6.24
uplot-react: ^1.1.4 uplot-react: ^1.1.4
url-loader: ^4.1.1 url-loader: ^4.1.1
@ -15570,13 +15568,6 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "type-fest@npm:^0.21.3":
version: 0.21.3 version: 0.21.3
resolution: "type-fest@npm:0.21.3" resolution: "type-fest@npm:0.21.3"
@ -15650,6 +15641,22 @@ __metadata:
languageName: node languageName: node
linkType: hard 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": "typescript@npm:^5.4.5":
version: 5.5.3 version: 5.5.3
resolution: "typescript@npm:5.5.3" resolution: "typescript@npm:5.5.3"