diff --git a/common-react/yarn.lock b/common-react/yarn.lock index ce55d2f6c83..ed1cee20032 100644 --- a/common-react/yarn.lock +++ b/common-react/yarn.lock @@ -422,6 +422,7 @@ __metadata: dependencies: "@dbeaver/cli": "workspace:^" "@dbeaver/tsconfig": "workspace:^" + async-mutex: "npm:^0.5.0" rimraf: "npm:^6" typescript: "npm:^5" vitest: "npm:^3" @@ -2234,6 +2235,15 @@ __metadata: languageName: node linkType: hard +"async-mutex@npm:^0.5.0": + version: 0.5.0 + resolution: "async-mutex@npm:0.5.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/9096e6ad6b674c894d8ddd5aa4c512b09bb05931b8746ebd634952b05685608b2b0820ed5c406e6569919ff5fe237ab3c491e6f2887d6da6b6ba906db3ee9c32 + languageName: node + linkType: hard + "axe-core@npm:^4.10.2": version: 4.10.3 resolution: "axe-core@npm:4.10.3" @@ -6935,7 +6945,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2, tslib@npm:^2.0.3, tslib@npm:^2.3.0": +"tslib@npm:^2, tslib@npm:^2.0.3, tslib@npm:^2.3.0, tslib@npm:^2.4.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 diff --git a/common-typescript/@dbeaver/js-helpers/package.json b/common-typescript/@dbeaver/js-helpers/package.json index 29e872e03af..3979bcf007a 100644 --- a/common-typescript/@dbeaver/js-helpers/package.json +++ b/common-typescript/@dbeaver/js-helpers/package.json @@ -30,5 +30,8 @@ "rimraf": "^6", "typescript": "^5", "vitest": "^3" + }, + "dependencies": { + "async-mutex": "^0.5.0" } } diff --git a/common-typescript/@dbeaver/js-helpers/src/index.ts b/common-typescript/@dbeaver/js-helpers/src/index.ts index 5f3db21f5cf..2eae7dba071 100644 --- a/common-typescript/@dbeaver/js-helpers/src/index.ts +++ b/common-typescript/@dbeaver/js-helpers/src/index.ts @@ -1,2 +1,3 @@ export * from './isDefined.js'; export * from './isNotNullDefined.js'; +export * from './mutex.js'; diff --git a/common-typescript/@dbeaver/js-helpers/src/mutex.ts b/common-typescript/@dbeaver/js-helpers/src/mutex.ts new file mode 100644 index 00000000000..ef126d77a37 --- /dev/null +++ b/common-typescript/@dbeaver/js-helpers/src/mutex.ts @@ -0,0 +1 @@ +export * as mutex from 'async-mutex'; diff --git a/common-typescript/yarn.lock b/common-typescript/yarn.lock index bd51f9761ec..3a713c83c85 100644 --- a/common-typescript/yarn.lock +++ b/common-typescript/yarn.lock @@ -137,6 +137,7 @@ __metadata: dependencies: "@dbeaver/cli": "workspace:^" "@dbeaver/tsconfig": "workspace:^" + async-mutex: "npm:^0.5.0" rimraf: "npm:^6" typescript: "npm:^5" vitest: "npm:^3" @@ -949,6 +950,15 @@ __metadata: languageName: node linkType: hard +"async-mutex@npm:^0.5.0": + version: 0.5.0 + resolution: "async-mutex@npm:0.5.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/9096e6ad6b674c894d8ddd5aa4c512b09bb05931b8746ebd634952b05685608b2b0820ed5c406e6569919ff5fe237ab3c491e6f2887d6da6b6ba906db3ee9c32 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2749,7 +2759,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2, tslib@npm:^2.3.0": +"tslib@npm:^2, tslib@npm:^2.3.0, tslib@npm:^2.4.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 diff --git a/webapp/.yarn/sdks/eslint/package.json b/webapp/.yarn/sdks/eslint/package.json index f847d58636d..a048c1bb25f 100644 --- a/webapp/.yarn/sdks/eslint/package.json +++ b/webapp/.yarn/sdks/eslint/package.json @@ -1,6 +1,6 @@ { "name": "eslint", - "version": "9.25.1-sdk", + "version": "9.29.0-sdk", "main": "./lib/api.js", "type": "commonjs", "bin": { diff --git a/webapp/package.json b/webapp/package.json index 10f344e680d..b611ec4cbd8 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -38,8 +38,8 @@ "@types/react": "^19", "@types/react-dom": "^19", "concurrently": "^9", - "eslint": "^9.25.1", - "happy-dom": "^17", + "eslint": "^9.29.0", + "happy-dom": "^18", "lefthook": "^1", "mobx": "^6", "mobx-react-lite": "^4", diff --git a/webapp/packages/eslint-config/package.json b/webapp/packages/eslint-config/package.json index 2fcf928ee8c..ff54e2ddf31 100644 --- a/webapp/packages/eslint-config/package.json +++ b/webapp/packages/eslint-config/package.json @@ -21,7 +21,7 @@ "dependencies": { "@cloudbeaver/eslint-plugin": "workspace:*", "@eslint/js": "^9", - "@stylistic/eslint-plugin": "^3", + "@stylistic/eslint-plugin": "^4", "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", "eslint": "^9", diff --git a/webapp/packages/plugin-sql-editor-new/src/SQLEditor/SQLCodeEditorPanel/useSQLCodeEditorPanel.ts b/webapp/packages/plugin-sql-editor-new/src/SQLEditor/SQLCodeEditorPanel/useSQLCodeEditorPanel.ts index 719760b6cde..0524b8d3922 100644 --- a/webapp/packages/plugin-sql-editor-new/src/SQLEditor/SQLCodeEditorPanel/useSQLCodeEditorPanel.ts +++ b/webapp/packages/plugin-sql-editor-new/src/SQLEditor/SQLCodeEditorPanel/useSQLCodeEditorPanel.ts @@ -1,6 +1,6 @@ /* * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others + * Copyright (C) 2020-2025 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. @@ -26,10 +26,8 @@ export function useSQLCodeEditorPanel(data: ISQLEditorData, editor: IEditor) { highlightActiveQuery() { this.editor.clearActiveQueryHighlight(); - const segment = this.data.activeSegment; - - if (segment) { - this.editor.highlightActiveQuery(segment.begin, segment.end); + if (this.data.cursorSegment) { + this.editor.highlightActiveQuery(this.data.cursorSegment.begin, this.data.cursorSegment.end); } }, onQueryChange(query: string) { diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditor/ISQLEditorData.ts b/webapp/packages/plugin-sql-editor/src/SqlEditor/ISQLEditorData.ts index 844a3db034d..c7585e19ea3 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlEditor/ISQLEditorData.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlEditor/ISQLEditorData.ts @@ -1,6 +1,6 @@ /* * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others + * Copyright (C) 2020-2025 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. @@ -23,7 +23,6 @@ export interface ISQLEditorData { activeSegmentMode: ISQLEditorMode; readonly parser: SQLParser; readonly dialect: SqlDialectInfo | undefined; - readonly activeSegment: ISQLScriptSegment | undefined; readonly cursorSegment: ISQLScriptSegment | undefined; readonly readonly: boolean; readonly editing: boolean; diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLEditorModeContext.ts b/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLEditorModeContext.ts index d446a47b9ca..dbe946f8339 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLEditorModeContext.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlEditor/SQLEditorModeContext.ts @@ -1,26 +1,20 @@ /* * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others + * Copyright (C) 2020-2025 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ import type { ISyncContextLoader } from '@cloudbeaver/core-executor'; -import type { ISQLScriptSegment } from '../SQLParser.js'; import type { ISQLEditorData } from './ISQLEditorData.js'; export interface ISQLEditorMode { - activeSegment: ISQLScriptSegment | undefined; activeSegmentMode: boolean; } export const SQLEditorModeContext: ISyncContextLoader = function SQLEditorModeContext(context, data) { - const from = Math.min(data.cursor.anchor, data.cursor.head); - const to = Math.max(data.cursor.anchor, data.cursor.head); - return { - activeSegment: data.parser.getSegment(from, to), activeSegmentMode: false, }; }; diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditor/useSqlEditor.ts b/webapp/packages/plugin-sql-editor/src/SqlEditor/useSqlEditor.ts index 6a625e4be6f..259cb851c4a 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlEditor/useSqlEditor.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlEditor/useSqlEditor.ts @@ -1,6 +1,6 @@ /* * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2024 DBeaver Corp and others + * Copyright (C) 2020-2025 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. @@ -84,14 +84,9 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData { }, activeSegmentMode: { - activeSegment: undefined, activeSegmentMode: false, }, - get activeSegment(): ISQLScriptSegment | undefined { - return this.activeSegmentMode.activeSegment; - }, - get cursorSegment(): ISQLScriptSegment | undefined { return this.parser.getSegment(this.cursor.anchor, -1); }, @@ -428,31 +423,41 @@ export function useSqlEditor(state: ISqlEditorTabState): ISQLEditorData { return this.parser.getScriptSegment(); } - return this.activeSegment; + return this.cursorSegment; }, async getResolvedSegment(): Promise { const projectId = this.dataSource?.executionContext?.projectId; const connectionId = this.dataSource?.executionContext?.connectionId; - await data.updateParserScripts(); + while (true) { + const currentScript = this.parser.actualScript; + // TODO: we updating parser scripts + // script may be changed this will lead to temporary wrong segments offsets - if (!projectId || !connectionId || this.cursor.anchor !== this.cursor.head) { - return this.getSubQuery(); - } + await data.updateParserScripts(); - if (this.activeSegmentMode.activeSegmentMode) { - return this.activeSegment; - } + if (currentScript !== this.parser.actualScript) { + continue; + } + if (!projectId || !connectionId || this.cursor.anchor !== this.cursor.head) { + return this.getSubQuery(); + } - const result = await this.sqlEditorService.parseSQLQuery(projectId, connectionId, this.value, this.cursor.anchor); + const result = await this.sqlEditorService.parseSQLQuery(projectId, connectionId, currentScript, this.cursor.anchor); - if (result.end === 0 && result.start === 0) { - return; - } + if (currentScript !== this.parser.actualScript) { + continue; + } - const segment = this.parser.getSegment(result.start, result.end); - return segment; + if (result.end === 0 && result.start === 0) { + return; + } + + // TODO: here we use parser that may be outdated and segment will return wrong value + const segment = this.parser.getSegment(result.start, result.end); + return segment; + } }, getSubQuery(): ISQLScriptSegment | undefined { diff --git a/webapp/packages/tests-runner/package.json b/webapp/packages/tests-runner/package.json index 217d5529bda..1d3c948bf4a 100644 --- a/webapp/packages/tests-runner/package.json +++ b/webapp/packages/tests-runner/package.json @@ -37,7 +37,7 @@ "@types/node": "^22", "@types/react": "^19", "fake-indexeddb": "^6", - "happy-dom": "^17", + "happy-dom": "^18", "typescript": "^5", "vitest": "^3" } diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 99f5351b455..2f8b32afed5 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -144,30 +144,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.14.0, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.0, @babel/core@npm:^7.26.10": - version: 7.27.1 - resolution: "@babel/core@npm:7.27.1" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.1" - "@babel/helper-compilation-targets": "npm:^7.27.1" - "@babel/helper-module-transforms": "npm:^7.27.1" - "@babel/helpers": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/0fc31f87f5401ac5d375528cb009f4ea5527fc8c5bb5b64b5b22c033b60fd0ad723388933a5f3f5db14e1edd13c958e9dd7e5c68f9b68c767aeb496199c8a4bb - languageName: node - linkType: hard - -"@babel/core@npm:^7.21.3": +"@babel/core@npm:^7.14.0, @babel/core@npm:^7.21.3, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.0, @babel/core@npm:^7.26.10": version: 7.27.4 resolution: "@babel/core@npm:7.27.4" dependencies: @@ -190,20 +167,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.26.5, @babel/generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/generator@npm:7.27.1" - dependencies: - "@babel/parser": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10c0/c4156434b21818f558ebd93ce45f027c53ee570ce55a84fd2d9ba45a79ad204c17e0bff753c886fb6c07df3385445a9e34dc7ccb070d0ac7e80bb91c8b57f423 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.27.3": +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.26.5, @babel/generator@npm:^7.27.3": version: 7.27.5 resolution: "@babel/generator@npm:7.27.5" dependencies: @@ -303,20 +267,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-module-transforms@npm:7.27.1" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.27.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/196ab29635fe6eb5ba6ead2972d41b1c0d40f400f99bd8fc109cef21440de24c26c972fabf932585e618694d590379ab8d22def8da65a54459d38ec46112ead7 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.27.3": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-module-transforms@npm:7.27.3" dependencies: @@ -413,16 +364,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helpers@npm:7.27.1" - dependencies: - "@babel/template": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - checksum: 10c0/e078257b9342dae2c041ac050276c5a28701434ad09478e6dc6976abd99f721a5a92e4bebddcbca6b1c3a7e8acace56a946340c701aad5e7507d2c87446459ba - languageName: node - linkType: hard - "@babel/helpers@npm:^7.27.4": version: 7.27.6 resolution: "@babel/helpers@npm:7.27.6" @@ -433,18 +374,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.26.7, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": - version: 7.27.2 - resolution: "@babel/parser@npm:7.27.2" - dependencies: - "@babel/types": "npm:^7.27.1" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/3c06692768885c2f58207fc8c2cbdb4a44df46b7d93135a083f6eaa49310f7ced490ce76043a2a7606cdcc13f27e3d835e141b692f2f6337a2e7f43c1dbb04b4 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.26.7, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": version: 7.27.5 resolution: "@babel/parser@npm:7.27.5" dependencies: @@ -1385,22 +1315,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.4, @babel/traverse@npm:^7.26.7, @babel/traverse@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/traverse@npm:7.27.1" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.27.1" - "@babel/parser": "npm:^7.27.1" - "@babel/template": "npm:^7.27.1" - "@babel/types": "npm:^7.27.1" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/d912110037b03b1d70a2436cfd51316d930366a5f54252da2bced1ba38642f644f848240a951e5caf12f1ef6c40d3d96baa92ea6e84800f2e891c15e97b25d50 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.4": +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.4, @babel/traverse@npm:^7.26.7, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.4": version: 7.27.4 resolution: "@babel/traverse@npm:7.27.4" dependencies: @@ -1415,17 +1330,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.3, @babel/types@npm:^7.26.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.4.4": - version: 7.27.1 - resolution: "@babel/types@npm:7.27.1" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - checksum: 10c0/ed736f14db2fdf0d36c539c8e06b6bb5e8f9649a12b5c0e1c516fed827f27ef35085abe08bf4d1302a4e20c9a254e762eed453bce659786d4a6e01ba26a91377 - languageName: node - linkType: hard - -"@babel/types@npm:^7.21.3, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.3, @babel/types@npm:^7.26.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.4.4": version: 7.27.6 resolution: "@babel/types@npm:7.27.6" dependencies: @@ -2378,7 +2283,7 @@ __metadata: dependencies: "@cloudbeaver/eslint-plugin": "workspace:*" "@eslint/js": "npm:^9" - "@stylistic/eslint-plugin": "npm:^3" + "@stylistic/eslint-plugin": "npm:^4" "@typescript-eslint/eslint-plugin": "npm:^8" "@typescript-eslint/parser": "npm:^8" eslint: "npm:^9" @@ -4340,7 +4245,7 @@ __metadata: "@types/node": "npm:^22" "@types/react": "npm:^19" fake-indexeddb: "npm:^6" - happy-dom: "npm:^17" + happy-dom: "npm:^18" mobx: "npm:^6" react: "npm:^19" react-dom: "npm:^19" @@ -4574,6 +4479,7 @@ __metadata: dependencies: "@dbeaver/cli": "workspace:^" "@dbeaver/tsconfig": "workspace:^" + async-mutex: "npm:^0.5.0" rimraf: "npm:^6" typescript: "npm:^5" vitest: "npm:^3" @@ -4889,14 +4795,14 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.20.0": - version: 0.20.0 - resolution: "@eslint/config-array@npm:0.20.0" +"@eslint/config-array@npm:^0.20.1": + version: 0.20.1 + resolution: "@eslint/config-array@npm:0.20.1" dependencies: "@eslint/object-schema": "npm:^2.1.6" debug: "npm:^4.3.1" minimatch: "npm:^3.1.2" - checksum: 10c0/94bc5d0abb96dc5295ff559925242ff75a54eacfb3576677e95917e42f7175e1c4b87bf039aa2a872f949b4852ad9724bf2f7529aaea6b98f28bb3fca7f1d659 + checksum: 10c0/709108c3925d83c2166024646829ab61ba5fa85c6568daefd32508899f46ed8dc36d7153042df6dcc7e58ad543bc93298b646575daecb5eb4e39a43d838dab42 languageName: node linkType: hard @@ -4933,10 +4839,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.27.0, @eslint/js@npm:^9": - version: 9.27.0 - resolution: "@eslint/js@npm:9.27.0" - checksum: 10c0/79b219ceda79182732954b52f7a494f49995a9a6419c7ae0316866e324d3706afeb857e1306bb6f35a4caaf176a5174d00228fc93d36781a570d32c587736564 +"@eslint/js@npm:9.29.0, @eslint/js@npm:^9": + version: 9.29.0 + resolution: "@eslint/js@npm:9.29.0" + checksum: 10c0/d0ccf37063fa27a3fae9347cb044f84ca10b5a2fa19ffb2b3fedf3b96843ac1ff359ea9f0ab0e80f2f16fda4cb0dc61ea0fed0375090f050fe0a029e7d6de3a3 languageName: node linkType: hard @@ -6900,18 +6806,18 @@ __metadata: languageName: node linkType: hard -"@stylistic/eslint-plugin@npm:^3": - version: 3.1.0 - resolution: "@stylistic/eslint-plugin@npm:3.1.0" +"@stylistic/eslint-plugin@npm:^4": + version: 4.4.1 + resolution: "@stylistic/eslint-plugin@npm:4.4.1" dependencies: - "@typescript-eslint/utils": "npm:^8.13.0" + "@typescript-eslint/utils": "npm:^8.32.1" eslint-visitor-keys: "npm:^4.2.0" espree: "npm:^10.3.0" estraverse: "npm:^5.3.0" picomatch: "npm:^4.0.2" peerDependencies: - eslint: ">=8.40.0" - checksum: 10c0/e593d78103a89e0555c119625c0ba8c80c8d2c7add0e85215f6be9929002207067df53714785c2c75b8b9e6df774d25c7dead211aed89a57cb45b5cec902a19e + eslint: ">=9.0.0" + checksum: 10c0/94160bfc172a3934dd35be87887f43f7e3ffe9d1645096860a4e4c61877bb0fb62eb20a90e50ad74767ee794ed10f334f7165952cf9bcbd8bae6b80dc10c0d62 languageName: node linkType: hard @@ -7886,6 +7792,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.0.0": + version: 20.19.0 + resolution: "@types/node@npm:20.19.0" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/11979f5c4c626555351352fe1b30846700ca018747272a7ff425f883f102805b7f07737d5b7fa3c6deb0ddaeb94e367bb9a633a3d1e1d5c517de9a6283c6f21c + languageName: node + linkType: hard + "@types/postcss-modules-local-by-default@npm:^4.0.2": version: 4.0.2 resolution: "@types/postcss-modules-local-by-default@npm:4.0.2" @@ -8006,7 +7921,7 @@ __metadata: languageName: node linkType: hard -"@types/whatwg-mimetype@npm:^3": +"@types/whatwg-mimetype@npm:^3, @types/whatwg-mimetype@npm:^3.0.2": version: 3.0.2 resolution: "@types/whatwg-mimetype@npm:3.0.2" checksum: 10c0/dad39d1e4abe760a0a963c84bbdbd26b1df0eb68aff83bdf6ecbb50ad781ead777f6906d19a87007790b750f7500a12e5624d31fc6a1529d14bd19b5c3a316d1 @@ -8059,6 +7974,19 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/project-service@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/project-service@npm:8.34.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.34.0" + "@typescript-eslint/types": "npm:^8.34.0" + debug: "npm:^4.3.4" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/88e64b8daf7db9603277fcbeb9e585e70ec6d6e34fa10d4b60f421e48081cc7c1f6acb01e1ee9dd95e10c0601f164c1defbfe6c9d1edc9822089bb72dbb0fc80 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/scope-manager@npm:8.32.1" @@ -8069,6 +7997,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/scope-manager@npm:8.34.0" + dependencies: + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + checksum: 10c0/35af36bddc4c227cb0bac42192c40b38179ced30866b6aac642781e21c3f3b1c72051eb4f685d7c99517c3296dd6ba83dd8360e4072e8dcf604aae266eece1b4 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.34.0, @typescript-eslint/tsconfig-utils@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.34.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/98246f89d169d3feb453a6a8552c51d10225cb00c4ff1501549b7846e564ad0e218b644cd94ce779dceed07dcb9035c53fd32186b4c0223b7b2a1f7295b120c3 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/type-utils@npm:8.32.1" @@ -8091,6 +8038,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.34.0, @typescript-eslint/types@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/types@npm:8.34.0" + checksum: 10c0/5d32b2ac03e4cbc1ac1777a53ee83d6d7887a783363bab4f0a6f7550a9e9df0254971cdf71e13b988e2215f2939e7592404856b8acb086ec63c4479c0225c742 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/typescript-estree@npm:8.32.1" @@ -8109,7 +8063,27 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.32.1, @typescript-eslint/utils@npm:^8.13.0": +"@typescript-eslint/typescript-estree@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.34.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.34.0" + "@typescript-eslint/tsconfig-utils": "npm:8.34.0" + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/e678982b0009e895aee2b4ccc55bb9ea5473a32e846a97c63d0c6a978c72e1a29e506e6a5f9dda45e9b7803e6c3e3abcdf4c316af1c59146abef4e10e0e94129 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/utils@npm:8.32.1" dependencies: @@ -8124,6 +8098,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^8.32.1": + version: 8.34.0 + resolution: "@typescript-eslint/utils@npm:8.34.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.34.0" + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/typescript-estree": "npm:8.34.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/d759cf6f1b1b23d7d8ab922345e7b68b7c829f4bad841164312cfa3a3e8e818b962dd0d96c1aca7fd7c10248d56538d9714df5f3cfec9f159ca0a139feac60b9 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.32.1": version: 8.32.1 resolution: "@typescript-eslint/visitor-keys@npm:8.32.1" @@ -8134,6 +8123,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.34.0" + dependencies: + "@typescript-eslint/types": "npm:8.34.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/d50997e921a178589913d08ffe14d02eba40666c90bdc0c9751f2b87ce500598f64027e2d866dfc975647b2f8b907158503d0722d6b1976c8f1cf5dd8e1d6d69 + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.0.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -8354,12 +8353,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.14.0": - version: 8.14.1 - resolution: "acorn@npm:8.14.1" +"acorn@npm:^8.0.0, acorn@npm:^8.14.0, acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" bin: acorn: bin/acorn - checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123 + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec languageName: node linkType: hard @@ -8632,6 +8631,15 @@ __metadata: languageName: node linkType: hard +"async-mutex@npm:^0.5.0": + version: 0.5.0 + resolution: "async-mutex@npm:0.5.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/9096e6ad6b674c894d8ddd5aa4c512b09bb05931b8746ebd634952b05685608b2b0820ed5c406e6569919ff5fe237ab3c491e6f2887d6da6b6ba906db3ee9c32 + languageName: node + linkType: hard + "async@npm:^3.2.3": version: 3.2.6 resolution: "async@npm:3.2.6" @@ -9355,8 +9363,8 @@ __metadata: "@types/react": "npm:^19" "@types/react-dom": "npm:^19" concurrently: "npm:^9" - eslint: "npm:^9.25.1" - happy-dom: "npm:^17" + eslint: "npm:^9.29.0" + happy-dom: "npm:^18" lefthook: "npm:^1" mobx: "npm:^6" mobx-react-lite: "npm:^4" @@ -10887,13 +10895,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.3.0": - version: 8.3.0 - resolution: "eslint-scope@npm:8.3.0" +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/23bf54345573201fdf06d29efa345ab508b355492f6c6cc9e2b9f6d02b896f369b6dd5315205be94b8853809776c4d13353b85c6b531997b164ff6c3328ecf5b + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 languageName: node linkType: hard @@ -10904,24 +10912,24 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.0": - version: 4.2.0 - resolution: "eslint-visitor-keys@npm:4.2.0" - checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 +"eslint-visitor-keys@npm:^4.2.0, eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 languageName: node linkType: hard -"eslint@npm:^9, eslint@npm:^9.25.1": - version: 9.27.0 - resolution: "eslint@npm:9.27.0" +"eslint@npm:^9, eslint@npm:^9.29.0": + version: 9.29.0 + resolution: "eslint@npm:9.29.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.20.0" + "@eslint/config-array": "npm:^0.20.1" "@eslint/config-helpers": "npm:^0.2.1" "@eslint/core": "npm:^0.14.0" "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.27.0" + "@eslint/js": "npm:9.29.0" "@eslint/plugin-kit": "npm:^0.3.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -10933,9 +10941,9 @@ __metadata: cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.3.0" - eslint-visitor-keys: "npm:^4.2.0" - espree: "npm:^10.3.0" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" @@ -10957,18 +10965,18 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/135d301e37cd961000a9c1d3f0e1863bed29a61435dfddedba3db295973193024382190fd8790a8de83777d10f450082a29eaee8bc9ce0fb1bc1f2b0bb882280 + checksum: 10c0/75e3f841e0f8b0fa93dbb2ba6ae538bd8b611c3654117bc3dadf90bb009923dfd2c15ec2948dc6e6b8b571317cc125c5cceb9255da8cd644ee740020df645dd8 languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.3.0": - version: 10.3.0 - resolution: "espree@npm:10.3.0" +"espree@npm:^10.0.1, espree@npm:^10.3.0, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" dependencies: - acorn: "npm:^8.14.0" + acorn: "npm:^8.15.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462 + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b languageName: node linkType: hard @@ -11874,13 +11882,14 @@ __metadata: languageName: node linkType: hard -"happy-dom@npm:^17": - version: 17.4.7 - resolution: "happy-dom@npm:17.4.7" +"happy-dom@npm:^18": + version: 18.0.1 + resolution: "happy-dom@npm:18.0.1" dependencies: - webidl-conversions: "npm:^7.0.0" + "@types/node": "npm:^20.0.0" + "@types/whatwg-mimetype": "npm:^3.0.2" whatwg-mimetype: "npm:^3.0.0" - checksum: 10c0/7fd4577a6902939e6d3459cb1b6217ba35dc293942f8e8ec55c872d1a50e961a431773531e7c4b045d07b62145ec04ab965bc646f5dce2788ca604fe978636a0 + checksum: 10c0/10f2115f5001fdaf1aedcbda89c15248a1c2e43a25d7e774cb641a35bf6763cef9097b438ef3c2248ab59a0ef33b3e88cb94da096f2bb0fc109ba3f43f7c66d4 languageName: node linkType: hard @@ -18844,13 +18853,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 - languageName: node - linkType: hard - "wellknown@npm:^0": version: 0.5.0 resolution: "wellknown@npm:0.5.0"