From 67b7c0afca9af724828ae6ed1ad0b9fd9b6d5a46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 05:21:03 +0000 Subject: [PATCH 1/5] Bump the dev-dependencies group across 1 directory with 6 updates Bumps the dev-dependencies group with 6 updates in the /QualityControl directory: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.1` | `10.0.1` | | [eslint](https://github.com/eslint/eslint) | `9.39.1` | `10.2.1` | | [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) | `62.5.0` | `62.9.0` | | [globals](https://github.com/sindresorhus/globals) | `17.3.0` | `17.5.0` | | [puppeteer](https://github.com/puppeteer/puppeteer) | `24.36.0` | `24.42.0` | | [sinon](https://github.com/sinonjs/sinon) | `21.0.1` | `21.1.2` | Updates `@eslint/js` from 9.39.1 to 10.0.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js) Updates `eslint` from 9.39.1 to 10.2.1 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v9.39.1...v10.2.1) Updates `eslint-plugin-jsdoc` from 62.5.0 to 62.9.0 - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v62.5.0...v62.9.0) Updates `globals` from 17.3.0 to 17.5.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.5.0) Updates `puppeteer` from 24.36.0 to 24.42.0 - [Release notes](https://github.com/puppeteer/puppeteer/releases) - [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md) - [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.36.0...puppeteer-v24.42.0) Updates `sinon` from 21.0.1 to 21.1.2 - [Release notes](https://github.com/sinonjs/sinon/releases) - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md) - [Commits](https://github.com/sinonjs/sinon/compare/v21.0.1...v21.1.2) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-version: 10.0.1 dependency-type: direct:development update-type: version-update:semver-major dependency-group: dev-dependencies - dependency-name: eslint dependency-version: 10.2.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: dev-dependencies - dependency-name: eslint-plugin-jsdoc dependency-version: 62.9.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: globals dependency-version: 17.5.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: puppeteer dependency-version: 24.40.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies - dependency-name: sinon dependency-version: 21.1.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] --- QualityControl/package-lock.json | 571 +++++++++++++++---------------- QualityControl/package.json | 12 +- 2 files changed, 279 insertions(+), 304 deletions(-) diff --git a/QualityControl/package-lock.json b/QualityControl/package-lock.json index 9e5b221a3..b498f567d 100644 --- a/QualityControl/package-lock.json +++ b/QualityControl/package-lock.json @@ -24,15 +24,15 @@ "umzug": "^3.8.2" }, "devDependencies": { - "@eslint/js": "^9.39.1", + "@eslint/js": "^10.0.1", "@stylistic/eslint-plugin-js": "^4.4.0", - "eslint": "^9.39.1", - "eslint-plugin-jsdoc": "^62.5.0", - "globals": "^17.3.0", + "eslint": "^10.2.1", + "eslint-plugin-jsdoc": "^62.9.0", + "globals": "^17.5.0", "nock": "^15.0.0", - "puppeteer": "^24.36.0", + "puppeteer": "^24.42.0", "sequelize-cli": "^6.6.2", - "sinon": "^21.0.0", + "sinon": "^21.1.2", "supertest": "^7.2.2" }, "engines": { @@ -238,17 +238,17 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.83.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.83.0.tgz", - "integrity": "sha512-e1MHSEPJ4m35zkBvNT6kcdeH1SvMaJDsPC3Xhfseg3hvF50FUE3f46Yn36jgbrPYYXezlWUQnevv23c+lx2MCA==", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz", + "integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.53.1", - "comment-parser": "1.4.5", + "@typescript-eslint/types": "^8.58.0", + "comment-parser": "1.4.6", "esquery": "^1.7.0", - "jsdoc-type-pratt-parser": "~7.1.0" + "jsdoc-type-pratt-parser": "~7.2.0" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -297,9 +297,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -307,118 +307,89 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.7", + "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^10.2.4" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", + "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0" + "@eslint/core": "^1.2.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/js": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", - "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0", + "@eslint/core": "^1.2.1", "levn": "^0.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@hapi/address": { @@ -848,9 +819,9 @@ "license": "BSD-3-Clause" }, "node_modules/@puppeteer/browsers": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", - "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", + "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -858,7 +829,7 @@ "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.3", + "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, @@ -870,9 +841,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/tar-fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", - "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", + "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", "dev": true, "license": "MIT", "dependencies": { @@ -885,13 +856,14 @@ } }, "node_modules/@puppeteer/browsers/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", "dev": true, "license": "MIT", "dependencies": { "b4a": "^1.6.4", + "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } @@ -1081,9 +1053,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.0.tgz", - "integrity": "sha512-cqfapCxwTGsrR80FEgOoPsTonoefMBY7dnUEbQ+GRcved0jvkJLzvX6F4WtN+HBqbPX/SiFsIRUp+IrCW/2I2w==", + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.2.tgz", + "integrity": "sha512-mrn35Jl2pCpns+mE3HaZa1yPN5EYCRgiMI+135COjr2hr8Cls9DXqIZ57vZe2cz7y2XVSq92tcs6kGQcT1J8Rw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1091,9 +1063,9 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", - "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz", + "integrity": "sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1175,6 +1147,13 @@ "inBundle": true, "license": "MIT" }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1230,9 +1209,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", + "version": "8.59.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.1.tgz", + "integrity": "sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==", "dev": true, "license": "MIT", "engines": { @@ -1268,9 +1247,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -1301,9 +1280,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -1451,9 +1430,9 @@ } }, "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -1488,12 +1467,11 @@ } }, "node_modules/bare-fs": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.3.tgz", - "integrity": "sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", @@ -1514,12 +1492,11 @@ } }, "node_modules/bare-os": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", - "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz", + "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==", "dev": true, "license": "Apache-2.0", - "optional": true, "engines": { "bare": ">=1.14.0" } @@ -1530,26 +1507,29 @@ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", - "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { - "streamx": "^2.21.0" + "streamx": "^2.25.0", + "teex": "^1.0.1" }, "peerDependencies": { + "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, "bare-buffer": { "optional": true }, @@ -1559,12 +1539,11 @@ } }, "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", + "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", "dev": true, "license": "Apache-2.0", - "optional": true, "dependencies": { "bare-path": "^3.0.0" } @@ -1591,9 +1570,9 @@ "license": "MIT" }, "node_modules/basic-ftp": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.2.tgz", - "integrity": "sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", + "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", "dev": true, "license": "MIT", "engines": { @@ -1687,14 +1666,26 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -1817,23 +1808,6 @@ "node": "^18.12.0 || >= 20.9.0" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -1842,9 +1816,9 @@ "license": "ISC" }, "node_modules/chromium-bidi": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.0.1.tgz", - "integrity": "sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1991,9 +1965,9 @@ } }, "node_modules/comment-parser": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.5.tgz", - "integrity": "sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", + "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", "dev": true, "license": "MIT", "engines": { @@ -2010,13 +1984,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -2300,9 +2267,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1551306", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1551306.tgz", - "integrity": "sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg==", + "version": "0.0.1595872", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz", + "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==", "dev": true, "license": "BSD-3-Clause" }, @@ -2318,9 +2285,9 @@ } }, "node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2654,33 +2621,30 @@ } }, "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz", + "integrity": "sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", - "@eslint/plugin-kit": "^0.4.1", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.5.5", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", + "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -2690,8 +2654,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.2.4", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -2699,7 +2662,7 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://eslint.org/donate" @@ -2714,24 +2677,24 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "62.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.5.0.tgz", - "integrity": "sha512-D+1haMVDzW/ZMoPwOnsbXCK07rJtsq98Z1v+ApvDKxSzYTTcPgmFc/nyUDCGmxm2cP7g7hszyjYHO7Zodl/43w==", + "version": "62.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz", + "integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.83.0", + "@es-joy/jsdoccomment": "~0.86.0", "@es-joy/resolve.exports": "1.2.0", "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.5", + "comment-parser": "1.4.6", "debug": "^4.4.3", "escape-string-regexp": "^4.0.0", - "espree": "^11.1.0", + "espree": "^11.2.0", "esquery": "^1.7.0", "html-entities": "^2.6.0", "object-deep-merge": "^2.0.0", "parse-imports-exports": "^0.2.4", - "semver": "^7.7.3", + "semver": "^7.7.4", "spdx-expression-parse": "^4.0.0", "to-valid-identifier": "^1.0.0" }, @@ -2739,13 +2702,13 @@ "node": "^20.19.0 || ^22.13.0 || >=24" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", - "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2756,15 +2719,15 @@ } }, "node_modules/eslint-plugin-jsdoc/node_modules/espree": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.0.tgz", - "integrity": "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.0" + "eslint-visitor-keys": "^5.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" @@ -2774,17 +2737,19 @@ } }, "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2803,6 +2768,37 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esniff": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", @@ -3496,9 +3492,9 @@ } }, "node_modules/globals": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", - "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", "dev": true, "license": "MIT", "engines": { @@ -3771,9 +3767,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.1.tgz", + "integrity": "sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw==", "dev": true, "license": "MIT", "engines": { @@ -4004,9 +4000,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.1.0.tgz", - "integrity": "sha512-SX7q7XyCwzM/MEDCYz0l8GgGbJAACGFII9+WfNYr5SLEKukHWRy2Jk3iWRe7P+lpYJNs7oQ+OSei4JtKGUjd7A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz", + "integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==", "dev": true, "license": "MIT", "engines": { @@ -4277,13 +4273,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -4514,16 +4503,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -4647,9 +4639,9 @@ } }, "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz", + "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==", "dev": true, "license": "MIT", "engines": { @@ -5242,19 +5234,19 @@ } }, "node_modules/puppeteer": { - "version": "24.36.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.0.tgz", - "integrity": "sha512-BD/VCyV/Uezvd6o7Fd1DmEJSxTzofAKplzDy6T9d4WbLTQ5A+06zY7VwO91ZlNU22vYE8sidVEsTpTrKc+EEnQ==", + "version": "24.42.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.42.0.tgz", + "integrity": "sha512-94MoPfFp2eY3eYIMdINkez4IOP5TMHntlZbVx06fHlQTtiQiYgaY0L2Zzfod8PVUkPqP7m3Qlre2v8YS8cudPA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.1", - "chromium-bidi": "13.0.1", + "@puppeteer/browsers": "2.13.0", + "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1551306", - "puppeteer-core": "24.36.0", - "typed-query-selector": "^2.12.0" + "devtools-protocol": "0.0.1595872", + "puppeteer-core": "24.42.0", + "typed-query-selector": "^2.12.1" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" @@ -5264,18 +5256,18 @@ } }, "node_modules/puppeteer-core": { - "version": "24.36.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.0.tgz", - "integrity": "sha512-P3Ou0MAFDCQ0dK1d9F9+8jTrg6JvXjUacgG0YkJQP4kbEnUOGokSDEMmMId5ZhXD5HwsHM202E9VwEpEjWfwxg==", + "version": "24.42.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.42.0.tgz", + "integrity": "sha512-T4zXokk/izH01fYPhyyev1A4piWiOKrYq7CUFpdoYQxmOnXoV6YjUabmfIjCYkNspSoAXIxRid3Tw+Vg0fthYg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.1", - "chromium-bidi": "13.0.1", + "@puppeteer/browsers": "2.13.0", + "chromium-bidi": "14.0.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1551306", - "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.4.0", + "devtools-protocol": "0.0.1595872", + "typed-query-selector": "^2.12.1", + "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" }, "engines": { @@ -5553,9 +5545,9 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "inBundle": true, "license": "ISC", "bin": { @@ -5938,17 +5930,16 @@ } }, "node_modules/sinon": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.1.tgz", - "integrity": "sha512-Z0NVCW45W8Mg5oC/27/+fCqIHFnW8kpkFOq0j9XJIev4Ld0mKmERaZv5DMLAb9fGCevjKwaEeIQz5+MBXfZcDw==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.1.2.tgz", + "integrity": "sha512-FS6mN+/bx7e2ajpXkEmOcWB6xBzWiuNoAQT18/+a20SS4U7FSYl8Ms7N6VTUxN/1JAjkx7aXp+THMC8xdpp0gA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^15.1.0", - "@sinonjs/samsam": "^8.0.3", - "diff": "^8.0.2", - "supports-color": "^7.2.0" + "@sinonjs/fake-timers": "^15.3.2", + "@sinonjs/samsam": "^10.0.2", + "diff": "^8.0.4" }, "funding": { "type": "opencollective", @@ -6063,9 +6054,9 @@ } }, "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", "dev": true, "license": "MIT", "dependencies": { @@ -6165,19 +6156,6 @@ "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/superagent": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", @@ -6237,19 +6215,6 @@ "node": ">=6.6.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -6314,10 +6279,20 @@ "node": ">= 6" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6540,9 +6515,9 @@ } }, "node_modules/typed-query-selector": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", - "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz", + "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==", "dev": true, "license": "MIT" }, @@ -6656,9 +6631,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.0.tgz", - "integrity": "sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", "dev": true, "license": "Apache-2.0" }, diff --git a/QualityControl/package.json b/QualityControl/package.json index 57fbe9f34..a00f5204a 100644 --- a/QualityControl/package.json +++ b/QualityControl/package.json @@ -48,15 +48,15 @@ "umzug": "^3.8.2" }, "devDependencies": { - "@eslint/js": "^9.39.1", + "@eslint/js": "^10.0.1", "@stylistic/eslint-plugin-js": "^4.4.0", - "eslint": "^9.39.1", - "eslint-plugin-jsdoc": "^62.5.0", - "globals": "^17.3.0", + "eslint": "^10.2.1", + "eslint-plugin-jsdoc": "^62.9.0", + "globals": "^17.5.0", "nock": "^15.0.0", - "puppeteer": "^24.36.0", + "puppeteer": "^24.42.0", "sequelize-cli": "^6.6.2", - "sinon": "^21.0.0", + "sinon": "^21.1.2", "supertest": "^7.2.2" }, "bundleDependencies": [ From c934f2acc2507fafa2ecf56cfe4b10fc9b3e5d18 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Tue, 5 May 2026 12:29:33 +0200 Subject: [PATCH 2/5] Do not use caret-down even for dev deps --- QualityControl/package-lock.json | 54 +++++++++++++++----------------- QualityControl/package.json | 28 ++++++++--------- 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/QualityControl/package-lock.json b/QualityControl/package-lock.json index 3e2a606e6..724904660 100644 --- a/QualityControl/package-lock.json +++ b/QualityControl/package-lock.json @@ -18,22 +18,22 @@ "@aliceo2/web-ui": "2.10.0", "joi": "18.2.1", "jsroot": "7.10.1", - "kafkajs": "^2.2.4", - "mariadb": "^3.5.1", - "sequelize": "^6.37.8", - "umzug": "^3.8.2" + "kafkajs": "2.2.4", + "mariadb": "3.5.2", + "sequelize": "6.37.8", + "umzug": "3.8.2" }, "devDependencies": { - "@eslint/js": "^10.0.1", - "@stylistic/eslint-plugin-js": "^4.4.0", - "eslint": "^10.2.1", - "eslint-plugin-jsdoc": "^62.9.0", - "globals": "^17.5.0", - "nock": "^15.0.0", - "puppeteer": "^24.42.0", - "sequelize-cli": "^6.6.2", - "sinon": "^21.1.2", - "supertest": "^7.2.2" + "@eslint/js": "10.0.1", + "@stylistic/eslint-plugin-js": "4.4.0", + "eslint": "10.2.1", + "eslint-plugin-jsdoc": "62.9.0", + "globals": "17.5.0", + "nock": "15.0.0", + "puppeteer": "24.42.0", + "sequelize-cli": "6.6.2", + "sinon": "21.1.2", + "supertest": "7.2.2" }, "engines": { "node": ">= 22.x" @@ -1160,6 +1160,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -4298,29 +4304,19 @@ } }, "node_modules/mariadb": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.5.1.tgz", - "integrity": "sha512-ObKf/e7jU8pmwa5wTs1UwhLMrQYRBDwXPndej2Dv/rvbqsokJYlymubsNtpakVfjI+hd0bG3U6tiuVunDYoLtA==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.5.2.tgz", + "integrity": "sha512-9rztrI4nouxAY/82a+RlzzZ5ie2vxu2eYclkBvTy1ATXH1B9cnvZ0O71Pzsy/mlfDb5P3HhOg0JzQKkDRhctyA==", "license": "LGPL-2.1-or-later", "dependencies": { + "@types/geojson": "^7946.0.16", + "@types/node": ">=18", "denque": "^2.1.0", "iconv-lite": "^0.7.2", "lru-cache": "^10.4.3" }, "engines": { "node": ">= 18" - }, - "peerDependencies": { - "@types/geojson": ">=7946.0.0", - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/geojson": { - "optional": true - }, - "@types/node": { - "optional": true - } } }, "node_modules/mariadb/node_modules/iconv-lite": { diff --git a/QualityControl/package.json b/QualityControl/package.json index bcf73ea1c..79cc687c0 100644 --- a/QualityControl/package.json +++ b/QualityControl/package.json @@ -42,22 +42,22 @@ "@aliceo2/web-ui": "2.10.0", "joi": "18.2.1", "jsroot": "7.10.1", - "kafkajs": "^2.2.4", - "mariadb": "^3.5.1", - "sequelize": "^6.37.8", - "umzug": "^3.8.2" + "kafkajs": "2.2.4", + "mariadb": "3.5.2", + "sequelize": "6.37.8", + "umzug": "3.8.2" }, "devDependencies": { - "@eslint/js": "^10.0.1", - "@stylistic/eslint-plugin-js": "^4.4.0", - "eslint": "^10.2.1", - "eslint-plugin-jsdoc": "^62.9.0", - "globals": "^17.5.0", - "nock": "^15.0.0", - "puppeteer": "^24.42.0", - "sequelize-cli": "^6.6.2", - "sinon": "^21.1.2", - "supertest": "^7.2.2" + "@eslint/js": "10.0.1", + "@stylistic/eslint-plugin-js": "4.4.0", + "eslint": "10.2.1", + "eslint-plugin-jsdoc": "62.9.0", + "globals": "17.5.0", + "nock": "15.0.0", + "puppeteer": "24.42.0", + "sequelize-cli": "6.6.2", + "sinon": "21.1.2", + "supertest": "7.2.2" }, "bundleDependencies": [ "@aliceo2/web-ui", From a736969edd7e23b96dc89efcaaf8b5537539ae52 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Tue, 19 May 2026 13:40:37 +0200 Subject: [PATCH 3/5] Fix lint warnings --- Control/public/utilities/jsonDelete.js | 2 +- Control/public/utilities/jsonFetch.js | 2 +- .../lib/database/repositories/BaseRepository.js | 1 - .../lib/middleware/filters/runMode.middleware.js | 2 +- .../lib/middleware/filters/runStatusFilter.middleware.js | 2 +- .../lib/middleware/layouts/layoutId.middleware.js | 2 +- .../lib/middleware/layouts/layoutOwner.middleware.js | 2 +- .../lib/middleware/layouts/layoutService.middleware.js | 2 +- QualityControl/lib/services/BookkeepingService.js | 2 +- QualityControl/lib/services/Intervals.service.js | 2 +- .../lib/services/external/AliEcsSynchronizer.js | 9 ++++----- QualityControl/public/common/object/dateSelector.js | 2 +- QualityControl/public/folder/model/FolderModel.js | 4 ++-- QualityControl/public/folder/view/FolderComponent.js | 2 +- QualityControl/public/layout/view/panels/settings.js | 2 +- QualityControl/public/object/QCObject.js | 2 +- .../public/pages/layoutListView/FilterTypes.js | 2 +- .../pages/layoutListView/components/LayoutListCard.js | 2 +- .../pages/layoutListView/model/SearchFilterModel.js | 2 +- QualityControl/public/services/utils/jsonDelete.js | 2 +- QualityControl/public/services/utils/jsonFetch.js | 2 +- QualityControl/public/services/utils/jsonPatch.js | 2 +- QualityControl/public/services/utils/jsonPut.js | 2 +- 23 files changed, 26 insertions(+), 28 deletions(-) diff --git a/Control/public/utilities/jsonDelete.js b/Control/public/utilities/jsonDelete.js index 8638cf984..5b51b2f49 100644 --- a/Control/public/utilities/jsonDelete.js +++ b/Control/public/utilities/jsonDelete.js @@ -16,7 +16,7 @@ import {jsonFetch} from './jsonFetch.js'; /** * Build and send a DELETE request to a remote endpoint, and extract the response. * @param {String} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch} native function * @return {Promise.Error<{message: String}>>} resolve with the result of the request or reject with the error message */ export const jsonDelete = async (endpoint, options) => { diff --git a/Control/public/utilities/jsonFetch.js b/Control/public/utilities/jsonFetch.js index f20b9505d..731e7bc30 100644 --- a/Control/public/utilities/jsonFetch.js +++ b/Control/public/utilities/jsonFetch.js @@ -21,7 +21,7 @@ import {fetchClient} from '/js/src/index.js'; * - If an error occurred, there can be error with a message field describing the error that occurred * * @param {String} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch} native function * @return {Promise.Error<{message: String}>>} resolve with the result of the request or reject with the error message */ export const jsonFetch = async (endpoint, options) => { diff --git a/QualityControl/lib/database/repositories/BaseRepository.js b/QualityControl/lib/database/repositories/BaseRepository.js index c6fa33dab..ffa2801f4 100644 --- a/QualityControl/lib/database/repositories/BaseRepository.js +++ b/QualityControl/lib/database/repositories/BaseRepository.js @@ -76,7 +76,6 @@ export class BaseRepository { /** * Finds all records that match the given options. - * @param {object} [constraints={}] - Constraints to filter the records. * @param {object} [options={}] - Options for filtering, sorting, and including related models. * @returns {Promise} A promise that resolves to an array of found records. */ diff --git a/QualityControl/lib/middleware/filters/runMode.middleware.js b/QualityControl/lib/middleware/filters/runMode.middleware.js index a82fec34e..4b8f16e8d 100644 --- a/QualityControl/lib/middleware/filters/runMode.middleware.js +++ b/QualityControl/lib/middleware/filters/runMode.middleware.js @@ -18,7 +18,7 @@ import { InvalidInputError, updateAndSendExpressResponseFromNativeError } from ' * Middleware function to validate the run number if in run mode. * @param {object} req - The request object. * @param {object} res - The response object. - * @param {Function} next - The next middleware function in the stack. + * @param {() => void} next - The next middleware function in the stack. * @returns {Promise} */ export const runModeMiddleware = async (req, res, next) => { diff --git a/QualityControl/lib/middleware/filters/runStatusFilter.middleware.js b/QualityControl/lib/middleware/filters/runStatusFilter.middleware.js index 1f6782a45..69922e969 100644 --- a/QualityControl/lib/middleware/filters/runStatusFilter.middleware.js +++ b/QualityControl/lib/middleware/filters/runStatusFilter.middleware.js @@ -20,7 +20,7 @@ import { RunNumberDto } from '../../dtos/filters/RunNumberDto.js'; f * @param {object} req - The request object. * @param {object} res - The response object. - * @param {Function} next - The next middleware function in the stack. + * @param {() => void} next - The next middleware function in the stack. * @returns {Promise} */ export const runStatusFilterMiddleware = async (req, res, next) => { diff --git a/QualityControl/lib/middleware/layouts/layoutId.middleware.js b/QualityControl/lib/middleware/layouts/layoutId.middleware.js index 4c15b321e..d7481ca43 100644 --- a/QualityControl/lib/middleware/layouts/layoutId.middleware.js +++ b/QualityControl/lib/middleware/layouts/layoutId.middleware.js @@ -21,7 +21,7 @@ import { InvalidInputError, updateAndSendExpressResponseFromNativeError } from ' /** * Middleware that checks if the layout id is present in the request * @param {LayoutRepository} layoutRepository - repository for getting/setting layout data - * @returns {function(req, res, next): Function} - middleware function + * @returns {(req: Express.Request, res: Express.Response, next: Express.Next) => Promise} - middleware function */ export const layoutIdMiddleware = (layoutRepository) => diff --git a/QualityControl/lib/middleware/layouts/layoutOwner.middleware.js b/QualityControl/lib/middleware/layouts/layoutOwner.middleware.js index 40380b748..2b8dda709 100644 --- a/QualityControl/lib/middleware/layouts/layoutOwner.middleware.js +++ b/QualityControl/lib/middleware/layouts/layoutOwner.middleware.js @@ -21,7 +21,7 @@ import { NotFoundError, UnauthorizedAccessError, updateAndSendExpressResponseFro /** * Middleware that checks if the requestor is the owner of the layout * @param {LayoutRepository} layoutRepository - Repository for getting/setting layout data - * @returns {function(req, res, next): Function} - middleware function + * @returns {(req: Express.Request, res: Express.Response, next: Express.Next) => Promise} - middleware function */ export const layoutOwnerMiddleware = (layoutRepository) => diff --git a/QualityControl/lib/middleware/layouts/layoutService.middleware.js b/QualityControl/lib/middleware/layouts/layoutService.middleware.js index 9d554c6d5..ecfa38636 100644 --- a/QualityControl/lib/middleware/layouts/layoutService.middleware.js +++ b/QualityControl/lib/middleware/layouts/layoutService.middleware.js @@ -18,7 +18,7 @@ import { JsonFileService } from '../../services/JsonFileService.js'; /** * Middleware that checks if the layout service is correctly initialized * @param {JSONFileConnector} dataService - service for getting/setting layout data - * @returns {function(req, res, next): Function} - middleware function + * @returns {(req: Express.Request, res: Express.Response, next: Express.Next) => Promise} - middleware function */ export const layoutServiceMiddleware = (dataService) => diff --git a/QualityControl/lib/services/BookkeepingService.js b/QualityControl/lib/services/BookkeepingService.js index 6e648d26b..2e7ac2c57 100644 --- a/QualityControl/lib/services/BookkeepingService.js +++ b/QualityControl/lib/services/BookkeepingService.js @@ -206,7 +206,7 @@ export class BookkeepingService { } /** - * Retrieves runs that are currently ongoing (started within the last \@see {RECENT_RUN_THRESHOLD_MS} + * Retrieves runs that are currently ongoing (started within the last \@link {RECENT_RUN_THRESHOLD_MS} * but have not yet ended). * @returns {Promise|undefined>} A promise that resolves to an array of run objects, * or undefined if the service is inactive, no data is found, or an error occurs diff --git a/QualityControl/lib/services/Intervals.service.js b/QualityControl/lib/services/Intervals.service.js index 80a221841..9cab4228a 100644 --- a/QualityControl/lib/services/Intervals.service.js +++ b/QualityControl/lib/services/Intervals.service.js @@ -26,7 +26,7 @@ export class IntervalsService { /** * Method to allow other services to register events that should trigger based on an interval rate - * @param {Function} callback - function that should be called based on interval rate + * @param {() => void} callback - function that should be called based on interval rate * @param {number} intervalRate = 60 * 1000 - (ms) on how often the callback should be called * @returns {symbol} - unique key for registered callback */ diff --git a/QualityControl/lib/services/external/AliEcsSynchronizer.js b/QualityControl/lib/services/external/AliEcsSynchronizer.js index 1bd0391bf..5046e47f0 100644 --- a/QualityControl/lib/services/external/AliEcsSynchronizer.js +++ b/QualityControl/lib/services/external/AliEcsSynchronizer.js @@ -34,7 +34,7 @@ export class AliEcsSynchronizer { * @param {import('kafkajs').Kafka} kafkaClient - configured kafka client * @param {KafkaConfiguration.consumerGroups} consumerGroups - consumer groups to be used for various topics * @param {EventEmitter} eventEmitter - event emitter to be used to emit events when new data is available - * @param {class} ConsumerClass - class to be used for creating the consumer, defaults to AliEcsEventMessagesConsumer + * @param {typeof AliEcsEventMessagesConsumer} ConsumerClass - class to be used for creating the consumer */ constructor(kafkaClient, consumerGroups, eventEmitter, ConsumerClass = AliEcsEventMessagesConsumer) { this._logger = LogManager.getLogger(LOG_FACILITY); @@ -76,13 +76,12 @@ export class AliEcsSynchronizer { /** * Callback for when a message is received on the run topic - * @param {events.proto.Event} eventMessage - message received on run topic + * @param {object} eventMessage - message received on run topic + * @param {RunEvent} eventMessage.runEvent - the run event object + * @param {object} eventMessage.timestamp - the timestamp object * @returns {void} */ async _onRunMessage(eventMessage) { - /** - * @param {RunEvent} - eventMessage - message received on run topic - */ const { runEvent, timestamp } = eventMessage; if (!runEvent) { this._logger.warnMessage('Received run message on run topic without runEvent field'); diff --git a/QualityControl/public/common/object/dateSelector.js b/QualityControl/public/common/object/dateSelector.js index f52e58c2c..bcc39e3fc 100644 --- a/QualityControl/public/common/object/dateSelector.js +++ b/QualityControl/public/common/object/dateSelector.js @@ -19,7 +19,7 @@ import { prettyFormatDate } from './../utils.js'; * Display a select form with a given list of timestamps and optional callback * @param {{validFrom: number, id: string}} selected - element that should be displayed as selected * @param {Array<{validFrom: number, id: string}>} versions - list of versions available for an object in ms - * @param {Function} callback - onchange callback function + * @param {(object, validFrom: number, id: string) => void} callback - onchange callback function * @returns {vnode} - select form with passed values */ export const dateSelector = (selected, versions, callback) => h( diff --git a/QualityControl/public/folder/model/FolderModel.js b/QualityControl/public/folder/model/FolderModel.js index c80be1bc8..40581ee65 100644 --- a/QualityControl/public/folder/model/FolderModel.js +++ b/QualityControl/public/folder/model/FolderModel.js @@ -32,8 +32,8 @@ export default class FolderModel extends Observable { * @param {Model} model - The parent model utilizing this folder * @param {string} title - Display title for the folder * @param {FolderType} folderType - Visual style type for the folder - * @param {Function} itemConstructor - Constructor function for creating items in this folder. - * The constuctor is required to accept the arguments model:FolderModel and json:JSON. + * @param {LayoutCardModel} itemConstructor - Constructor function for creating items in this folder. + * The constructor is required to accept the arguments model:FolderModel and json:JSON. */ constructor(model, title, folderType, itemConstructor) { super(); diff --git a/QualityControl/public/folder/view/FolderComponent.js b/QualityControl/public/folder/view/FolderComponent.js index 5b1f20afa..e07104076 100644 --- a/QualityControl/public/folder/view/FolderComponent.js +++ b/QualityControl/public/folder/view/FolderComponent.js @@ -28,7 +28,7 @@ export default function (folderModel) { * @param {string} params.folderType - CSS class for styling the folder header * @param {boolean} params.isOpened - Flag indicating if folder is expanded * @param {string} params.title - Display text for the folder header - * @param {Function} clickFunction - Callback to execute when header is clicked + * @param {(e: Event) => void} clickFunction - Callback to execute when header is clicked * @returns {vnode} - Virtual DOM node representing the folder header */ function folderHeader({ folderType, isOpened, title }, clickFunction) { diff --git a/QualityControl/public/layout/view/panels/settings.js b/QualityControl/public/layout/view/panels/settings.js index fecabe196..5cdf6d6c1 100644 --- a/QualityControl/public/layout/view/panels/settings.js +++ b/QualityControl/public/layout/view/panels/settings.js @@ -39,7 +39,7 @@ export default (model) => /** * Build an input box, allowing users to add description * @param {string} description - description of the layout - * @param {Function} oninput - function to be executed when there is input change + * @param {(e: Event) => void} oninput - function to be executed when there is input change * @returns {vnode} - virtual node element */ const descriptionLayoutInput = (description, oninput) => h('.w-100.flex-row', [ diff --git a/QualityControl/public/object/QCObject.js b/QualityControl/public/object/QCObject.js index 3d75925b7..02dd10db0 100644 --- a/QualityControl/public/object/QCObject.js +++ b/QualityControl/public/object/QCObject.js @@ -257,7 +257,7 @@ export default class QCObject extends BaseViewModel { * @param {string} title - title of the tree to be sorted * @param {string} field - field by which the sort operation should happen * @param {number} order {-1; 1} - * @param {Function} icon - icon to be displayed based on sort order + * @param {() => icon} icon - icon to be displayed based on sort order {@link Framework/Frontend/js/src/icons.js} * @returns {undefined} */ sortTree(title, field, order, icon) { diff --git a/QualityControl/public/pages/layoutListView/FilterTypes.js b/QualityControl/public/pages/layoutListView/FilterTypes.js index f48408fd8..06b84a617 100644 --- a/QualityControl/public/pages/layoutListView/FilterTypes.js +++ b/QualityControl/public/pages/layoutListView/FilterTypes.js @@ -20,7 +20,7 @@ * @property {function(): (boolean)} isActive - has the filter any active value('s) * @property {function(): (string|string[]|null)} getValue - gets the current value('s) of the filter * @property {function(string): void} set - set value of the filter - * @property {Function} reset - reset filter to default state + * @property {function(): void} reset - reset filter to default state */ /** diff --git a/QualityControl/public/pages/layoutListView/components/LayoutListCard.js b/QualityControl/public/pages/layoutListView/components/LayoutListCard.js index d20f61fe1..472a33665 100644 --- a/QualityControl/public/pages/layoutListView/components/LayoutListCard.js +++ b/QualityControl/public/pages/layoutListView/components/LayoutListCard.js @@ -63,7 +63,7 @@ function cardHeader(isOfficial, id, name, isMinimumGlobal, toggleOfficialFunctio /** * Creates a toggle button for changing a layout's official status. * @param {boolean} isOfficial - Current official status of the layout - * @param {Function} toggleOfficialFunction - Callback to execute when button is clicked + * @param {() => void} toggleOfficialFunction - Callback to execute when button is clicked * @returns {vnode} Button element with status-appropriate text and click handler * @description * - Button text changes between "Make Official" and "Make Unofficial" diff --git a/QualityControl/public/pages/layoutListView/model/SearchFilterModel.js b/QualityControl/public/pages/layoutListView/model/SearchFilterModel.js index 904b9d279..cfbee1c15 100644 --- a/QualityControl/public/pages/layoutListView/model/SearchFilterModel.js +++ b/QualityControl/public/pages/layoutListView/model/SearchFilterModel.js @@ -82,7 +82,7 @@ export class SearchFilterModel extends BaseViewModel { /** * Set filter by key with specified value('s) * @param {string} key - filter key. - * @param {any[]} args - value('s) to set. + * @param {unknown[]} args - value('s) to set. * @returns {void} - void. */ setValue(key, ...args) { diff --git a/QualityControl/public/services/utils/jsonDelete.js b/QualityControl/public/services/utils/jsonDelete.js index 03adb2836..da0642bb3 100644 --- a/QualityControl/public/services/utils/jsonDelete.js +++ b/QualityControl/public/services/utils/jsonDelete.js @@ -16,7 +16,7 @@ import { jsonFetch } from './jsonFetch.js'; /** * Build and send a DELETE request to a remote endpoint, and extract the response. * @param {string} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch} native function * @returns {Promise>} resolve with the result of the request or reject with the error message * @rejects {Error<{message: string}>} */ diff --git a/QualityControl/public/services/utils/jsonFetch.js b/QualityControl/public/services/utils/jsonFetch.js index 5a3c547ad..469b0cda9 100644 --- a/QualityControl/public/services/utils/jsonFetch.js +++ b/QualityControl/public/services/utils/jsonFetch.js @@ -16,7 +16,7 @@ import { fetchClient } from '/js/src/index.js'; /** * Build and send a PUT request to a remote endpoint, and extract the response. * @param {string} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch} native function * @returns {Promise>} resolve with the result of the request * @rejects {Error<{message: string}>} */ diff --git a/QualityControl/public/services/utils/jsonPatch.js b/QualityControl/public/services/utils/jsonPatch.js index 72e62d5a5..ce771768d 100644 --- a/QualityControl/public/services/utils/jsonPatch.js +++ b/QualityControl/public/services/utils/jsonPatch.js @@ -16,7 +16,7 @@ import { jsonFetch } from './jsonFetch.js'; /** * Build and send a PUT request to a remote endpoint, and extract the response. * @param {string} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch } native function * @returns {Promise>} resolve with the result of the request or reject with the error message * @rejects {Error<{message: string}>} */ diff --git a/QualityControl/public/services/utils/jsonPut.js b/QualityControl/public/services/utils/jsonPut.js index 4a60e2fe9..a766db673 100644 --- a/QualityControl/public/services/utils/jsonPut.js +++ b/QualityControl/public/services/utils/jsonPut.js @@ -16,7 +16,7 @@ import { jsonFetch } from './jsonFetch.js'; /** * Build and send a PUT request to a remote endpoint, and extract the response. * @param {string} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@see fetch } native function + * @param {RequestInit} options - the request options, see {@link fetch} native function * @returns {Promise>} resolve with the result of the request or reject with the error message * @rejects {Error<{message: string}>} */ From ad4950bc50766247e46e1cbca339310407978d88 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Tue, 19 May 2026 13:46:08 +0200 Subject: [PATCH 4/5] Fix cause lint reported error --- QualityControl/eslint.config.js | 1 + QualityControl/lib/services/QcObject.service.js | 8 ++++---- QualityControl/lib/services/ccdb/CcdbService.js | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/QualityControl/eslint.config.js b/QualityControl/eslint.config.js index 3549dd5c9..431e32a40 100644 --- a/QualityControl/eslint.config.js +++ b/QualityControl/eslint.config.js @@ -240,6 +240,7 @@ export default [ 'never', ], 'no-magic-numbers': 'off', // TODO: enable + 'no-useless-assignment': 'off', }, }, ]; diff --git a/QualityControl/lib/services/QcObject.service.js b/QualityControl/lib/services/QcObject.service.js index b1e11802e..72a75d88f 100644 --- a/QualityControl/lib/services/QcObject.service.js +++ b/QualityControl/lib/services/QcObject.service.js @@ -217,7 +217,7 @@ export class QcObjectService { file = await this._rootService.openFile(`${url}+`); } catch (error) { this._logger.error(error.message || error); - throw new Error(`JSROOT failed to open file '${url}'`); + throw new Error(`JSROOT failed to open file '${url}'`, { cause: error }); } let root = undefined; @@ -225,7 +225,7 @@ export class QcObjectService { root = await file.readObject('ccdb_object'); } catch (error) { this._logger.error(error.message || error); - throw new Error(`JSROOT failed to read object 'ccdb_object' from '${url}'`); + throw new Error(`JSROOT failed to read object 'ccdb_object' from '${url}'`, { cause: error }); } root['_typename'] = root['mTreatMeAs'] || root['_typename']; @@ -238,7 +238,7 @@ export class QcObjectService { return JSON.parse(JSON.stringify(root, (_, value) => typeof value === 'bigint' ? value.toString() : value)); } catch (error) { this._logger.error(error.message || error); - throw new Error(`Failed to serialize ROOT object '${QC_CHECKER_TYPE}' with BigInt-safe JSON`); + throw new Error(`Failed to serialize ROOT object '${QC_CHECKER_TYPE}' with BigInt-safe JSON`, { cause: error }); } } @@ -246,7 +246,7 @@ export class QcObjectService { return await this._rootService.toJSON(root); } catch (error) { this._logger.error(error.message || error); - throw new Error(`JSROOT failed to convert object '${root['_typename']}' to JSON`); + throw new Error(`JSROOT failed to convert object '${root['_typename']}' to JSON`, { cause: error }); } } diff --git a/QualityControl/lib/services/ccdb/CcdbService.js b/QualityControl/lib/services/ccdb/CcdbService.js index d1255c3bd..1507b2a45 100644 --- a/QualityControl/lib/services/ccdb/CcdbService.js +++ b/QualityControl/lib/services/ccdb/CcdbService.js @@ -86,7 +86,7 @@ export class CcdbService { const path = `/monitor/${CCDB_MONITOR}/.*/${CCDB_VERSION_KEY}`; serviceInfo = await httpGetJson(this._hostname, this._port, path, { headers: { Accept: 'application/json' } }); } catch (error) { - throw new Error(`Unable to connect to CCDB due to: ${error}`); + throw new Error(`Unable to connect to CCDB due to: ${error}`, { cause: error }); } try { const monitorData = serviceInfo?.[CCDB_MONITOR] ?? {}; @@ -95,7 +95,7 @@ export class CcdbService { const version = monitorData[firstKey]?.[0]?.value ?? 'unknown version'; return { version }; } catch (error) { - throw new Error(`Unable to read version of CCDB due to: ${error}`); + throw new Error(`Unable to read version of CCDB due to: ${error}`, { cause: error }); } } @@ -190,8 +190,9 @@ export class CcdbService { let result = null; try { result = await httpGetJson(this._hostname, this._port, url, { headers }); - } catch { - throw new Error(`Failed to fetch object at url '${url}' and path '${partialIdentification.path}'.`); + } catch (error) { + const { path } = partialIdentification; + throw new Error(`Failed to fetch object at url '${url}' and path '${path}'.`, { cause: error }); } if (!result?.objects?.length) { From ea3faa55a3a5316c8ec20543f01e6bbca77e4142 Mon Sep 17 00:00:00 2001 From: George Raduta Date: Tue, 19 May 2026 13:48:28 +0200 Subject: [PATCH 5/5] Revert unwanted, unrelated changes to project --- Control/public/utilities/jsonDelete.js | 2 +- Control/public/utilities/jsonFetch.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Control/public/utilities/jsonDelete.js b/Control/public/utilities/jsonDelete.js index 5b51b2f49..8638cf984 100644 --- a/Control/public/utilities/jsonDelete.js +++ b/Control/public/utilities/jsonDelete.js @@ -16,7 +16,7 @@ import {jsonFetch} from './jsonFetch.js'; /** * Build and send a DELETE request to a remote endpoint, and extract the response. * @param {String} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@link fetch} native function + * @param {RequestInit} options - the request options, see {@see fetch } native function * @return {Promise.Error<{message: String}>>} resolve with the result of the request or reject with the error message */ export const jsonDelete = async (endpoint, options) => { diff --git a/Control/public/utilities/jsonFetch.js b/Control/public/utilities/jsonFetch.js index 731e7bc30..f20b9505d 100644 --- a/Control/public/utilities/jsonFetch.js +++ b/Control/public/utilities/jsonFetch.js @@ -21,7 +21,7 @@ import {fetchClient} from '/js/src/index.js'; * - If an error occurred, there can be error with a message field describing the error that occurred * * @param {String} endpoint - the remote endpoint to send request to - * @param {RequestInit} options - the request options, see {@link fetch} native function + * @param {RequestInit} options - the request options, see {@see fetch } native function * @return {Promise.Error<{message: String}>>} resolve with the result of the request or reject with the error message */ export const jsonFetch = async (endpoint, options) => {