diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f36c5b4c..00000000 --- a/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -.idea/ -# at project root, this directory includes a js template file used to add a license header with eslint in all files. It doesn't match the license rule because it is the template! -/config/ -coverage/ -dist/ -lib/ -node_modules/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 13d9757c..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright 2023 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/** - * @type {import("eslint").Linter.Config} - */ -module.exports = { - root: true, - plugins: ['import', 'n', 'notice', 'unicorn'], - parser: '@typescript-eslint/parser', // Specifies the ESLint parser - extends: [ - 'plugin:import/recommended', - 'plugin:unicorn/recommended', - 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - parserOptions: { - ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features - sourceType: 'module', // Allows for the use of imports - }, - rules: { - 'notice/notice': ['error', { templateFile: 'config/license-header.js', onNonMatchingHeader: 'replace' }], - 'no-console': ['error', { allow: ['warn', 'error'] }], - // as defined in `bpmn-visualization` b122995c - 'import/newline-after-import': ['error', { count: 1 }], - 'import/first': 'error', - 'import/order': [ - 'error', - { - groups: ['type', 'builtin', 'external', 'parent', 'sibling', 'index', 'internal'], - 'newlines-between': 'always', - alphabetize: { - order: 'asc', - orderImportKind: 'asc', - caseInsensitive: true, - }, - }, - ], - 'n/file-extension-in-import': ['error', 'always'], - }, - overrides: [ - // typescript - { - files: ['*.ts'], - extends: [ - 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin - 'plugin:@typescript-eslint/stylistic', - 'plugin:import/typescript', - 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - settings: { - 'import/resolver': { - typescript: { - alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - project: '**/tsconfig.json', - }, - }, - }, - parserOptions: { - // This setting is required if you want to use rules which require type information - // https://typescript-eslint.io/packages/parser/#project - project: ['./packages/**/tsconfig.json', './tsconfig.eslint.json'], - }, - rules: { - '@typescript-eslint/explicit-function-return-type': [ - 'error', - { - allowExpressions: true, - allowTypedFunctionExpressions: true, - }, - ], - '@typescript-eslint/explicit-member-accessibility': [ - 'error', - { - accessibility: 'no-public', - }, - ], - '@typescript-eslint/consistent-type-exports': [ - 'error', - { - fixMixedExportsWithInlineTypeSpecifier: true, - }, - ], - '@typescript-eslint/consistent-type-imports': ['error'], - }, - }, - ], -}; diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0ce62651..beb0f732 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -28,6 +28,7 @@ updates: # As the typescript version is old, it requires an old version of "@types/node". - dependency-name: "@types/node" # eslint v9 requires to first switch to flat configuration + - dependency-name: "@eslint/js" - dependency-name: "eslint" - dependency-name: "@types/eslint" # eslint-plugin-unicorn v57+ requires eslint v9 and flat configuration @@ -41,10 +42,10 @@ updates: - "tailwindcss" lint: patterns: - - "@typescript-eslint/*" - "eslint-*" - "lint-staged" - "prettier" + - "typescript-eslint" test: patterns: - "@jest/*" diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..d01d447d --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,182 @@ +/* +Copyright 2025 Bonitasoft S.A. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { readFileSync } from 'node:fs'; +import path from 'node:path'; + +import eslint from '@eslint/js'; +import importPlugin from 'eslint-plugin-import'; +import jestPlugin from 'eslint-plugin-jest'; +import jestDomPlugin from 'eslint-plugin-jest-dom'; +import nodePlugin from 'eslint-plugin-n'; +import noticePlugin from 'eslint-plugin-notice'; +import prettierRecommendedConfig from 'eslint-plugin-prettier/recommended'; +import unicornPlugin from 'eslint-plugin-unicorn'; +// eslint-disable-next-line import/no-unresolved +import tsEslint from 'typescript-eslint'; + +const jestPackagePath = path.resolve('node_modules', 'jest', 'package.json'); +const jestPackage = JSON.parse(readFileSync(jestPackagePath, 'utf8')); + +export default tsEslint.config( + { + // Need to be in first before any other configuration + // https://eslint.org/docs/latest/use/configure/ignore + ignores: [ + '.github/*', + '.idea/*', + // at project root, this directory includes a js template file used to add a license header with eslint in all files. It doesn't match the license rule because it is the template! + 'config/*', + '**/coverage/*', + '**/dist/*', + '**/lib/*', + '**/node_modules/*', + ], + }, + + eslint.configs.recommended, + + { + plugins: { + notice: noticePlugin, + }, + rules: { + 'notice/notice': ['error', { templateFile: 'config/license-header.js', onNonMatchingHeader: 'replace' }], + 'no-console': ['error', { allow: ['warn', 'error'] }], + }, + }, + + unicornPlugin.configs['flat/recommended'], // https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config + + importPlugin.flatConfigs.recommended, + { + rules: { + // as defined in `bpmn-visualization` b122995c + 'import/newline-after-import': ['error', { count: 1 }], + 'import/first': 'error', + 'import/order': [ + 'error', + { + groups: ['type', 'builtin', 'external', 'parent', 'sibling', 'index', 'internal'], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', + orderImportKind: 'asc', + caseInsensitive: true, + }, + }, + ], + }, + }, + + // disable type-aware linting on JS files + { + files: ['**/*.{js,cjs,mjs}'], + ...tsEslint.configs.disableTypeChecked, + }, + + // typescript + tsEslint.configs.recommended, + tsEslint.configs.stylistic, + + /** @type {import('@typescript-eslint').ConfigWithExtends} */ + { + files: ['**/*.{ts,cts,mts}'], + ...importPlugin.flatConfigs.typescript, + settings: { + 'import/resolver': { + typescript: { + alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` + project: '**/tsconfig.json', + }, + }, + }, + languageOptions: { + parser: tsEslint.parser, + parserOptions: { + // This setting is required if you want to use rules which require type information + // https://typescript-eslint.io/packages/parser/#project + project: ['./packages/**/tsconfig.json', './tsconfig.eslint.json'], + }, + }, + rules: { + '@typescript-eslint/explicit-function-return-type': [ + 'error', + { + allowExpressions: true, + allowTypedFunctionExpressions: true, + }, + ], + '@typescript-eslint/explicit-member-accessibility': [ + 'error', + { + accessibility: 'no-public', + }, + ], + '@typescript-eslint/consistent-type-exports': [ + 'error', + { + fixMixedExportsWithInlineTypeSpecifier: true, + }, + ], + '@typescript-eslint/consistent-type-imports': ['error'], + }, + }, + + // node plugin + { + ...nodePlugin.configs['flat/recommended-script'], + settings: { + node: { + allowModules: ['@process-analytics/bpmn-visualization-addons'], + }, + }, + rules: { + 'n/file-extension-in-import': ['error', 'always'], + }, + }, + + // for test files + { + files: ['**/test/**/*'], + ...jestPlugin.configs['flat/recommended'], + ...jestPlugin.configs['flat/style'], + ...jestDomPlugin.configs['flat/recommended'], + plugins: { + jest: jestPlugin, + 'jest-dom': jestDomPlugin, + }, + languageOptions: { + globals: jestPlugin.environments.globals.globals, + }, + settings: { + jest: { + version: jestPackage.version, + }, + }, + rules: { + ...jestPlugin.configs['flat/recommended'].rules, + ...jestPlugin.configs['flat/style'].rules, + ...jestDomPlugin.configs['flat/recommended'].rules, + /* The rule list: https://github.com/jest-community/eslint-plugin-jest#rules */ + 'jest/prefer-expect-resolves': 'warn', + 'jest/prefer-spy-on': 'warn', + 'jest/prefer-todo': 'warn', + }, + }, + + prettierRecommendedConfig, // Enables eslint-plugin-prettier, eslint-config-prettier and prettier/prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration. +); diff --git a/package-lock.json b/package-lock.json index e6d2f0ea..dd89059b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,15 +9,16 @@ "./packages/*" ], "devDependencies": { + "@eslint/js": "~8.57.1", "@types/eslint": "~8.56.12", "@types/node": "~20.19.1", - "@typescript-eslint/eslint-plugin": "~8.34.1", - "@typescript-eslint/parser": "~8.34.1", "concurrently": "~9.1.2", "eslint": "~8.57.1", "eslint-config-prettier": "~10.1.5", "eslint-import-resolver-typescript": "~4.4.3", "eslint-plugin-import": "~2.31.0", + "eslint-plugin-jest": "~29.0.1", + "eslint-plugin-jest-dom": "~5.5.0", "eslint-plugin-n": "~17.20.0", "eslint-plugin-notice": "~1.0.0", "eslint-plugin-prettier": "~5.5.0", @@ -25,7 +26,8 @@ "husky": "~9.1.7", "lint-staged": "~16.1.2", "npm-run-all": "~4.1.5", - "typescript": "~5.8.3" + "typescript": "~5.8.3", + "typescript-eslint": "~8.34.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -44,13 +46,14 @@ "dev": true }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -138,6 +141,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -196,13 +200,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", @@ -310,6 +307,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -322,6 +320,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -334,6 +333,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -378,6 +378,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -390,6 +391,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -418,6 +420,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -430,6 +433,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -442,6 +446,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -454,6 +459,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -466,6 +472,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -478,6 +485,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -506,6 +514,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1411,22 +1420,23 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.1.tgz", - "integrity": "sha512-ThsJ+1I1/7CSTCmddZWqwkwremh3kmKCEoa7oafYL0A1a4tiXWKHzp8+a4m0EbXfGsYVjaVjjzywOQ1ZCnLlzg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.2.tgz", + "integrity": "sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.0.1", "@types/node": "*", "chalk": "^4.1.2", - "jest-message-util": "30.0.1", - "jest-util": "30.0.1", + "jest-message-util": "30.0.2", + "jest-util": "30.0.2", "slash": "^3.0.0" }, "engines": { @@ -1549,17 +1559,17 @@ } }, "node_modules/@jest/core": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.1.tgz", - "integrity": "sha512-wImaJH4bFaV8oDJkCureHnnua0dOtgVgogh62gFKjTMXyKRVLjiVOJU9VypxXNqDUAM+W23VHJrJRauW3OLPeQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.2.tgz", + "integrity": "sha512-mUMFdDtYWu7la63NxlyNIhgnzynszxunXWrtryR7bV24jV9hmi7XCZTzZHaLJjcBU66MeUAPZ81HjwASVpYhYQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.1", + "@jest/console": "30.0.2", "@jest/pattern": "30.0.1", - "@jest/reporters": "30.0.1", - "@jest/test-result": "30.0.1", - "@jest/transform": "30.0.1", + "@jest/reporters": "30.0.2", + "@jest/test-result": "30.0.2", + "@jest/transform": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", "ansi-escapes": "^4.3.2", @@ -1567,21 +1577,21 @@ "ci-info": "^4.2.0", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "jest-changed-files": "30.0.1", - "jest-config": "30.0.1", - "jest-haste-map": "30.0.1", - "jest-message-util": "30.0.1", + "jest-changed-files": "30.0.2", + "jest-config": "30.0.2", + "jest-haste-map": "30.0.2", + "jest-message-util": "30.0.2", "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.1", - "jest-resolve-dependencies": "30.0.1", - "jest-runner": "30.0.1", - "jest-runtime": "30.0.1", - "jest-snapshot": "30.0.1", - "jest-util": "30.0.1", - "jest-validate": "30.0.1", - "jest-watcher": "30.0.1", + "jest-resolve": "30.0.2", + "jest-resolve-dependencies": "30.0.2", + "jest-runner": "30.0.2", + "jest-runtime": "30.0.2", + "jest-snapshot": "30.0.2", + "jest-util": "30.0.2", + "jest-validate": "30.0.2", + "jest-watcher": "30.0.2", "micromatch": "^4.0.8", - "pretty-format": "30.0.1", + "pretty-format": "30.0.2", "slash": "^3.0.0" }, "engines": { @@ -1764,35 +1774,35 @@ } }, "node_modules/@jest/environment": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.1.tgz", - "integrity": "sha512-JFI3qCT4ps9UjQNievPdsmpX+mOcAjOR2aemGUJbNiwpsuSCbiAaXwa2yBCND7OqCxUoiWMh6Lf/cwGxt/m2NA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.2.tgz", + "integrity": "sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.0.1", + "@jest/fake-timers": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", - "jest-mock": "30.0.1" + "jest-mock": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.1.tgz", - "integrity": "sha512-J67eu5nxk5vO0FmntjjRdCHVrJNIrAWB6Lbn8Z6tieseBjH5H26fWfCIwebPqDZZPQswyC8Ykdoe0zIluxW/dg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.2.tgz", + "integrity": "sha512-8aMoEzGdUuJeQl71BUACkys1ZEX437AF376VBqdYXsGFd4l3F1SdTjFHmNq8vF0Rp+CYhUyxa0kRAzXbBaVzfQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/fake-timers": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/fake-timers": "30.0.2", "@jest/types": "30.0.1", "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "30.0.1", - "jest-util": "30.0.1" + "jest-mock": "30.0.2", + "jest-util": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -2038,23 +2048,23 @@ } }, "node_modules/@jest/expect": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.1.tgz", - "integrity": "sha512-mxhK5Zt8z+gOrXkv6RxQoRb1741EkcliTaNAIzrj1w4ch3TruFW+1QbLOTarovxo02EIh+a+JGky3r25p0nhIA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.2.tgz", + "integrity": "sha512-blWRFPjv2cVfh42nLG6L3xIEbw+bnuiZYZDl/BZlsNG/i3wKV6FpPZ2EPHguk7t5QpLaouIu+7JmYO4uBR6AOg==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.0.1", - "jest-snapshot": "30.0.1" + "expect": "30.0.2", + "jest-snapshot": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.1.tgz", - "integrity": "sha512-txHSNST7ud1V7JVFS5N1qqU+Wf6tiFPxDbjQpklTnckeVecFF8O+LD6efgF5z1dBigp4nMmDIYYxslQJHaS7QA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.2.tgz", + "integrity": "sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2065,18 +2075,18 @@ } }, "node_modules/@jest/fake-timers": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.1.tgz", - "integrity": "sha512-H/rYdOcSa+vlux7a3aw6bqQ/nMFMGQqmflAl4qFTThidyakO63ATiHSuhHL1yY39IFBCIbIiUpqr8ognXZA54A==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.2.tgz", + "integrity": "sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.0.1", "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "30.0.1", - "jest-mock": "30.0.1", - "jest-util": "30.0.1" + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", + "jest-util": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -2208,16 +2218,16 @@ } }, "node_modules/@jest/globals": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.1.tgz", - "integrity": "sha512-5IdHDqKVayXzBL8sKM5AvPaAnrfO9GXphDLwOg6VWjUiqSrGcj/Hd518QpfDWOeu1aWjBblst3rxeRgbtOEJ8Q==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.2.tgz", + "integrity": "sha512-DwTtus9jjbG7b6jUdkcVdptf0wtD1v153A+PVwWB/zFwXhqu6hhtSd+uq88jofMhmYPtkmPmVGUBRNCZEKXn+w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/expect": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/expect": "30.0.2", "@jest/types": "30.0.1", - "jest-mock": "30.0.1" + "jest-mock": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -2353,16 +2363,16 @@ } }, "node_modules/@jest/reporters": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.1.tgz", - "integrity": "sha512-r0vZe9j3J97Luj/qQ4G+nYpcvdhl1JuEeoJ7WgUN6FOUixztDKkqHjVtURmfUCoU7rqd1Hj5g5nKm35jClFhfw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.2.tgz", + "integrity": "sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.0.1", - "@jest/test-result": "30.0.1", - "@jest/transform": "30.0.1", + "@jest/console": "30.0.2", + "@jest/test-result": "30.0.2", + "@jest/transform": "30.0.2", "@jest/types": "30.0.1", "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", @@ -2376,9 +2386,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "30.0.1", - "jest-util": "30.0.1", - "jest-worker": "30.0.1", + "jest-message-util": "30.0.2", + "jest-util": "30.0.2", + "jest-worker": "30.0.2", "slash": "^3.0.0", "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" @@ -2756,13 +2766,13 @@ } }, "node_modules/@jest/test-result": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.1.tgz", - "integrity": "sha512-VpPEdwN+NivPsExCb9FCcIfIIP4x6vzGg4xfaH0URYkZcJixwe2E69uRqp9MPq6A4mWUoQRtjPNocFA/kRoiFg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.2.tgz", + "integrity": "sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.1", + "@jest/console": "30.0.2", "@jest/types": "30.0.1", "@types/istanbul-lib-coverage": "^2.0.6", "collect-v8-coverage": "^1.0.2" @@ -2887,15 +2897,15 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.1.tgz", - "integrity": "sha512-2D3F5XSPIfGMvdK+T6z8fExQso3sPnkBJsUM5x3YQ1Aaz+4Qrs4X8eqzMyC0i0ENfhcijidzz5yMTM4PvK+mKg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz", + "integrity": "sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.0.1", + "@jest/test-result": "30.0.2", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.1", + "jest-haste-map": "30.0.2", "slash": "^3.0.0" }, "engines": { @@ -2903,9 +2913,9 @@ } }, "node_modules/@jest/transform": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.1.tgz", - "integrity": "sha512-BXZJPGD56+bwIq8EM0X6VqtM+/W4NCMBOxTe4MtfpPVyoZ+rIs6thzdem853vav2jQzpXDsyKir3DRQS5mS9Rw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.2.tgz", + "integrity": "sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA==", "dev": true, "license": "MIT", "dependencies": { @@ -2917,9 +2927,9 @@ "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.1", + "jest-haste-map": "30.0.2", "jest-regex-util": "30.0.1", - "jest-util": "30.0.1", + "jest-util": "30.0.2", "micromatch": "^4.0.8", "pirates": "^4.0.7", "slash": "^3.0.0", @@ -4098,7 +4108,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "~8.34.1", + "@typescript-eslint/parser": "^8.34.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } @@ -4850,13 +4860,13 @@ } }, "node_modules/babel-jest": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.1.tgz", - "integrity": "sha512-JlqAR53kHcRkLUpxvLYzUdo/Zn5HYPtheVMpSh+JQQppC9TYjkXoEt/PGUT86L3t7lNZLH83Wa+wziYVARYWXQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.2.tgz", + "integrity": "sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "30.0.1", + "@jest/transform": "30.0.2", "@types/babel__core": "^7.20.5", "babel-plugin-istanbul": "^7.0.0", "babel-preset-jest": "30.0.1", @@ -5579,7 +5589,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-js-compat": { "version": "3.38.1", @@ -6957,6 +6968,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7136,18 +7148,18 @@ } }, "node_modules/expect": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.1.tgz", - "integrity": "sha512-FLzSqyMY397aV5awKVGWOKrfrzQRxoGAofdTt9ucJ6dSVY+1c6yEfcw/JZ1oqfLnL78FONo9GfVaEb8VJ5irGw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.2.tgz", + "integrity": "sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.0.1", + "@jest/expect-utils": "30.0.2", "@jest/get-type": "30.0.1", - "jest-matcher-utils": "30.0.1", - "jest-message-util": "30.0.1", - "jest-mock": "30.0.1", - "jest-util": "30.0.1" + "jest-matcher-utils": "30.0.2", + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", + "jest-util": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -7489,6 +7501,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -8373,10 +8386,11 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -8398,26 +8412,12 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8511,16 +8511,16 @@ } }, "node_modules/jest": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.0.1.tgz", - "integrity": "sha512-T+zDYAoEa8+mZuLlRO6VzvHi/D+CtXSvLAPhmVdEYa7mUV7yshs9kvc/6wespnQx0FUHxnhIP7GuZGiIe/BWcg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.0.2.tgz", + "integrity": "sha512-HlSEiHRcmTuGwNyeawLTEzpQUMFn+f741FfoNg7RXG2h0WLJKozVCpcQLT0GW17H6kNCqRwGf+Ii/I1YVNvEGQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.0.1", + "@jest/core": "30.0.2", "@jest/types": "30.0.1", "import-local": "^3.2.0", - "jest-cli": "30.0.1" + "jest-cli": "30.0.2" }, "bin": { "jest": "bin/jest.js" @@ -8538,14 +8538,14 @@ } }, "node_modules/jest-changed-files": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.1.tgz", - "integrity": "sha512-5F/T4oaUdWPE6Ttms/hq5M4YVJA1+s1lWqmUK27xfnj1MBy6HmtnRpXXD2KuKZbD5ntwCxTDVAaRrDyIh+HkBg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.2.tgz", + "integrity": "sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA==", "dev": true, "license": "MIT", "dependencies": { "execa": "^5.1.1", - "jest-util": "30.0.1", + "jest-util": "30.0.2", "p-limit": "^3.1.0" }, "engines": { @@ -8553,29 +8553,29 @@ } }, "node_modules/jest-circus": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.1.tgz", - "integrity": "sha512-gJl83BUlAgtIx7UkLjIbsTwuQI+PE/959AE+/NbJaUuAgh23LGXWAGQqLdIlXU6TvLEEAmDR4caEI6pfW2PGBg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.2.tgz", + "integrity": "sha512-NRozwx4DaFHcCUtwdEd/0jBLL1imyMrCbla3vF//wdsB2g6jIicMbjx9VhqE/BYU4dwsOQld+06ODX0oZ9xOLg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/expect": "30.0.1", - "@jest/test-result": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/expect": "30.0.2", + "@jest/test-result": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", "chalk": "^4.1.2", "co": "^4.6.0", "dedent": "^1.6.0", "is-generator-fn": "^2.1.0", - "jest-each": "30.0.1", - "jest-matcher-utils": "30.0.1", - "jest-message-util": "30.0.1", - "jest-runtime": "30.0.1", - "jest-snapshot": "30.0.1", - "jest-util": "30.0.1", + "jest-each": "30.0.2", + "jest-matcher-utils": "30.0.2", + "jest-message-util": "30.0.2", + "jest-runtime": "30.0.2", + "jest-snapshot": "30.0.2", + "jest-util": "30.0.2", "p-limit": "^3.1.0", - "pretty-format": "30.0.1", + "pretty-format": "30.0.2", "pure-rand": "^7.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" @@ -8700,21 +8700,21 @@ } }, "node_modules/jest-cli": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.1.tgz", - "integrity": "sha512-jULGjC6PV7vA7oB2gFh3h6lZBWo0XvGnLA9d9Ct2PyM7hmr7DTApStl3beqR0aglUIxCOTHIwmQsnWlbJbGCtg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.2.tgz", + "integrity": "sha512-yQ6Qz747oUbMYLNAqOlEby+hwXx7WEJtCl0iolBRpJhr2uvkBgiVMrvuKirBc8utwQBnkETFlDUkYifbRpmBrQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.0.1", - "@jest/test-result": "30.0.1", + "@jest/core": "30.0.2", + "@jest/test-result": "30.0.2", "@jest/types": "30.0.1", "chalk": "^4.1.2", "exit-x": "^0.2.2", "import-local": "^3.2.0", - "jest-config": "30.0.1", - "jest-util": "30.0.1", - "jest-validate": "30.0.1", + "jest-config": "30.0.2", + "jest-util": "30.0.2", + "jest-validate": "30.0.2", "yargs": "^17.7.2" }, "bin": { @@ -8848,34 +8848,34 @@ } }, "node_modules/jest-config": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.1.tgz", - "integrity": "sha512-5BGh/41Pe1p/aWj9HlEEjbi5JzTFZXYAszGS1cw19//jaPr4Usb16qPGkznzyJLL8ud/7jCplbmF7msTkzqYoA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.2.tgz", + "integrity": "sha512-vo0fVq+uzDcXETFVnCUyr5HaUCM8ES6DEuS9AFpma34BVXMRRNlsqDyiW5RDHaEFoeFlJHoI4Xjh/WSYIAL58g==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.0.1", "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.0.1", + "@jest/test-sequencer": "30.0.2", "@jest/types": "30.0.1", - "babel-jest": "30.0.1", + "babel-jest": "30.0.2", "chalk": "^4.1.2", "ci-info": "^4.2.0", "deepmerge": "^4.3.1", "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "jest-circus": "30.0.1", + "jest-circus": "30.0.2", "jest-docblock": "30.0.1", - "jest-environment-node": "30.0.1", + "jest-environment-node": "30.0.2", "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.1", - "jest-runner": "30.0.1", - "jest-util": "30.0.1", - "jest-validate": "30.0.1", + "jest-resolve": "30.0.2", + "jest-runner": "30.0.2", + "jest-util": "30.0.2", + "jest-validate": "30.0.2", "micromatch": "^4.0.8", "parse-json": "^5.2.0", - "pretty-format": "30.0.1", + "pretty-format": "30.0.2", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -9121,16 +9121,16 @@ } }, "node_modules/jest-diff": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.1.tgz", - "integrity": "sha512-9uJGfS2tBBFTvn3ZjfPjrw0r7KtAcutTMs3k39+ur2xD0/MTdmz8SrTzuy1dMlGxmbSet1k79UFSJ2+U7dNEvQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.2.tgz", + "integrity": "sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/diff-sequences": "30.0.1", "@jest/get-type": "30.0.1", "chalk": "^4.1.2", - "pretty-format": "30.0.1" + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -9226,17 +9226,17 @@ } }, "node_modules/jest-each": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.1.tgz", - "integrity": "sha512-zQIKhGrSq6NudJ6SKUBv7wsgRZ3iVe9TXfJ0UNWmrAxaFlsxyVDVq5WkTTWVvCCTCs99fy0s3y62Jx7lLHVJPg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.2.tgz", + "integrity": "sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.0.1", "@jest/types": "30.0.1", "chalk": "^4.1.2", - "jest-util": "30.0.1", - "pretty-format": "30.0.1" + "jest-util": "30.0.2", + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -9358,14 +9358,14 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.1.tgz", - "integrity": "sha512-iDX+OoM248mHBi1ifMnN9sKqr0PDYqpe1tnOtsHfubKzWHOjnHSdk0kjIGUtCHezwo/OgyDjvqbS4y6h7F+bLg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz", + "integrity": "sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/environment-jsdom-abstract": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/environment-jsdom-abstract": "30.0.2", "@types/jsdom": "^21.1.7", "@types/node": "*", "jsdom": "^26.1.0" @@ -9383,19 +9383,19 @@ } }, "node_modules/jest-environment-node": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.1.tgz", - "integrity": "sha512-3MnzhHa1pGH8NgkYp0AjBqFplAW2LECRSpNjM4iA4MBbnyuMf0sBiZG7pzd66smSgilF7hnJr3qVLnlHRsRdIA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.2.tgz", + "integrity": "sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/fake-timers": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/fake-timers": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", - "jest-mock": "30.0.1", - "jest-util": "30.0.1", - "jest-validate": "30.0.1" + "jest-mock": "30.0.2", + "jest-util": "30.0.2", + "jest-validate": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -9517,9 +9517,9 @@ } }, "node_modules/jest-haste-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.1.tgz", - "integrity": "sha512-NnvtwP+HmTZQ5blCTjigGlmqHktvGSXk8fqh9qvtbPI04CXX9Qf3hEE8FjtAZiSAkPgYZopZm8jTezvXNStDGA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.2.tgz", + "integrity": "sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9529,8 +9529,8 @@ "fb-watchman": "^2.0.2", "graceful-fs": "^4.2.11", "jest-regex-util": "30.0.1", - "jest-util": "30.0.1", - "jest-worker": "30.0.1", + "jest-util": "30.0.2", + "jest-worker": "30.0.2", "micromatch": "^4.0.8", "walker": "^1.0.8" }, @@ -9657,30 +9657,30 @@ } }, "node_modules/jest-leak-detector": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.1.tgz", - "integrity": "sha512-67NTiVwvaI5K35oEy2Z3Xo6z4WIzSgcw08AEUXTcgNxhu8D8A7jOol/9YqA6ZJMVXC0QttsU7fxMOJYee08n0A==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz", + "integrity": "sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.0.1", - "pretty-format": "30.0.1" + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.1.tgz", - "integrity": "sha512-4R9ct2D3kZTtRTjPVqWbuQpRgG4lVQ5ifI+Ni52OhEeT4XWnNaPe0AtixpkueMKUJDdh96r6xE7V1+imN2hhHQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz", + "integrity": "sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.0.1", "chalk": "^4.1.2", - "jest-diff": "30.0.1", - "pretty-format": "30.0.1" + "jest-diff": "30.0.2", + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -9763,9 +9763,9 @@ } }, "node_modules/jest-message-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.1.tgz", - "integrity": "sha512-/TZhT/tMqBVHhOOYY/VdCBoFN66f7rTAQ0TTh4igilDDd6y0SRP8OW7Fm+IV5bYW8MmdEstDQMZkBivmzDPy8A==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz", + "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==", "dev": true, "license": "MIT", "dependencies": { @@ -9775,7 +9775,7 @@ "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "micromatch": "^4.0.8", - "pretty-format": "30.0.1", + "pretty-format": "30.0.2", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, @@ -9899,15 +9899,15 @@ } }, "node_modules/jest-mock": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.1.tgz", - "integrity": "sha512-t57+MErWxWWCrhy4JyQHkgELFHv83u9MqO4XVNP9qAsrknDeX031hG1dEPPwDx77obsciQjXptN2nq1Y83T3CQ==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz", + "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.0.1", "@types/node": "*", - "jest-util": "30.0.1" + "jest-util": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -10057,18 +10057,18 @@ } }, "node_modules/jest-resolve": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.1.tgz", - "integrity": "sha512-VWbbfmQVqEjwRZKo/UgBdUE8RbPCZMEDeR3KLLZe+GaGeCmyUraTdSdfDa8WfmyK/JSHxF/zM7OtGoBr5KXiMw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.2.tgz", + "integrity": "sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.1", + "jest-haste-map": "30.0.2", "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.0.1", - "jest-validate": "30.0.1", + "jest-util": "30.0.2", + "jest-validate": "30.0.2", "slash": "^3.0.0", "unrs-resolver": "^1.7.11" }, @@ -10077,14 +10077,14 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.1.tgz", - "integrity": "sha512-9lTOL/lsSs1o39/urF1J7eiN+w432Hf2EBVH6V6bzDoxJcr0juRJoWNH0fwDkF/725IjyU5JDEzUUZ/MATXzNA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.2.tgz", + "integrity": "sha512-Lp1iIXpsF5fGM4vyP8xHiIy2H5L5yO67/nXoYJzH4kz+fQmO+ZMKxzYLyWxYy4EeCLeNQ6a9OozL+uHZV2iuEA==", "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "30.0.1", - "jest-snapshot": "30.0.1" + "jest-snapshot": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -10167,16 +10167,16 @@ } }, "node_modules/jest-runner": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.1.tgz", - "integrity": "sha512-ntEAnH2AtpAi34j/5mEJTczXMjpVnw5jOKParWM0A0POrelfzJT+WEucIQWIonwlHo96T42B3lHzEUggZfaDNw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.2.tgz", + "integrity": "sha512-6H+CIFiDLVt1Ix6jLzASXz3IoIiDukpEIxL9FHtDQ2BD/k5eFtDF5e5N9uItzRE3V1kp7VoSRyrGBytXKra4xA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.1", - "@jest/environment": "30.0.1", - "@jest/test-result": "30.0.1", - "@jest/transform": "30.0.1", + "@jest/console": "30.0.2", + "@jest/environment": "30.0.2", + "@jest/test-result": "30.0.2", + "@jest/transform": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", "chalk": "^4.1.2", @@ -10184,15 +10184,15 @@ "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", "jest-docblock": "30.0.1", - "jest-environment-node": "30.0.1", - "jest-haste-map": "30.0.1", - "jest-leak-detector": "30.0.1", - "jest-message-util": "30.0.1", - "jest-resolve": "30.0.1", - "jest-runtime": "30.0.1", - "jest-util": "30.0.1", - "jest-watcher": "30.0.1", - "jest-worker": "30.0.1", + "jest-environment-node": "30.0.2", + "jest-haste-map": "30.0.2", + "jest-leak-detector": "30.0.2", + "jest-message-util": "30.0.2", + "jest-resolve": "30.0.2", + "jest-runtime": "30.0.2", + "jest-util": "30.0.2", + "jest-watcher": "30.0.2", + "jest-worker": "30.0.2", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -10327,18 +10327,18 @@ } }, "node_modules/jest-runtime": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.1.tgz", - "integrity": "sha512-lseQgeKgA9B2BYbGQUrd/XF22wB/Sic6MOCLz7VZ2M159Etzl3dO337foInA68f+f2exmmK0cDxq1lbMToBIVA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.2.tgz", + "integrity": "sha512-H1a51/soNOeAjoggu6PZKTH7DFt8JEGN4mesTSwyqD2jU9PXD04Bp6DKbt2YVtQvh2JcvH2vjbkEerCZ3lRn7A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.1", - "@jest/fake-timers": "30.0.1", - "@jest/globals": "30.0.1", + "@jest/environment": "30.0.2", + "@jest/fake-timers": "30.0.2", + "@jest/globals": "30.0.2", "@jest/source-map": "30.0.1", - "@jest/test-result": "30.0.1", - "@jest/transform": "30.0.1", + "@jest/test-result": "30.0.2", + "@jest/transform": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", "chalk": "^4.1.2", @@ -10346,13 +10346,13 @@ "collect-v8-coverage": "^1.0.2", "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.1", - "jest-message-util": "30.0.1", - "jest-mock": "30.0.1", + "jest-haste-map": "30.0.2", + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.1", - "jest-snapshot": "30.0.1", - "jest-util": "30.0.1", + "jest-resolve": "30.0.2", + "jest-snapshot": "30.0.2", + "jest-util": "30.0.2", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -10573,9 +10573,9 @@ } }, "node_modules/jest-snapshot": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.1.tgz", - "integrity": "sha512-Ap2g2X9dkA9Dd9a79DIBkAsE7jsMBydT/xjNGfj8V5ng1kuxpPTqOYHAlHjBZM+cppmCzHSbWn89BVQ9Qh9ibw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.2.tgz", + "integrity": "sha512-KeoHikoKGln3OlN7NS7raJ244nIVr2K46fBTNdfuxqYv2/g4TVyWDSO4fmk08YBJQMjs3HNfG1rlLfL/KA+nUw==", "dev": true, "license": "MIT", "dependencies": { @@ -10584,20 +10584,20 @@ "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.0.1", + "@jest/expect-utils": "30.0.2", "@jest/get-type": "30.0.1", "@jest/snapshot-utils": "30.0.1", - "@jest/transform": "30.0.1", + "@jest/transform": "30.0.2", "@jest/types": "30.0.1", "babel-preset-current-node-syntax": "^1.1.0", "chalk": "^4.1.2", - "expect": "30.0.1", + "expect": "30.0.2", "graceful-fs": "^4.2.11", - "jest-diff": "30.0.1", - "jest-matcher-utils": "30.0.1", - "jest-message-util": "30.0.1", - "jest-util": "30.0.1", - "pretty-format": "30.0.1", + "jest-diff": "30.0.2", + "jest-matcher-utils": "30.0.2", + "jest-message-util": "30.0.2", + "jest-util": "30.0.2", + "pretty-format": "30.0.2", "semver": "^7.7.2", "synckit": "^0.11.8" }, @@ -10734,9 +10734,9 @@ } }, "node_modules/jest-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.1.tgz", - "integrity": "sha512-yKUK3Pq+9NtL2XbGhMW0O5PnHYPjvu3kpplm3j08fyqH6lsa/wLg1SCcNJAI4p8LTtfUMj71MnF3L4PKrlIcJg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz", + "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", "dev": true, "license": "MIT", "dependencies": { @@ -10880,9 +10880,9 @@ } }, "node_modules/jest-validate": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.1.tgz", - "integrity": "sha512-Wy5a3L0wNncZiVeEe8g0uL9ZkHqjXBuDYzl4+SVQ9y5VShSpSi+INSfWipDRX57EG0KCa4k+1N1qAj1s+gDBdg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.2.tgz", + "integrity": "sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10891,7 +10891,7 @@ "camelcase": "^6.3.0", "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "30.0.1" + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -11026,19 +11026,19 @@ } }, "node_modules/jest-watcher": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.1.tgz", - "integrity": "sha512-TZUy0f9VypPGse7ObbKyfUo7fhVtzLmmDhX84dv4KMvu2j27Nj49L06hBjAiGwi9m3jZruQuUEtQlctaVLSRZg==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.2.tgz", + "integrity": "sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.0.1", + "@jest/test-result": "30.0.2", "@jest/types": "30.0.1", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "30.0.1", + "jest-util": "30.0.2", "string-length": "^4.0.2" }, "engines": { @@ -11190,15 +11190,15 @@ } }, "node_modules/jest-worker": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.1.tgz", - "integrity": "sha512-W3zW27LH1+DYwvz5pw4Xw/t83JcWJv24WWp/CtjA2RvQse0k1OViFqUXBAGlUGM6/zTSek/K7EQea+h+SPUKNw==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.2.tgz", + "integrity": "sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.1", + "jest-util": "30.0.2", "merge-stream": "^2.0.0", "supports-color": "^8.1.1" }, @@ -11448,6 +11448,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -12603,9 +12604,9 @@ } }, "node_modules/pretty-format": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.1.tgz", - "integrity": "sha512-2pkYD4WKYrAVyx/Jo7DmV+XAVJ9PuC0gVi9/gCPOxd+dN6WD+Pa7+ScUdh3f9m2klEPEZmfu8HoyYnuaGXzGAA==", + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", + "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -13269,6 +13270,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13401,6 +13403,7 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -13413,6 +13416,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -14131,6 +14135,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz", + "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.34.1", + "@typescript-eslint/parser": "8.34.1", + "@typescript-eslint/utils": "8.34.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -14675,10 +14702,11 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.8.0", @@ -14783,8 +14811,6 @@ "@swc/jest": "~0.2.38", "@testing-library/jest-dom": "~6.6.3", "cross-env": "~7.0.3", - "eslint-plugin-jest": "~29.0.1", - "eslint-plugin-jest-dom": "~5.5.0", "jest": "~30.0.1", "jest-environment-jsdom": "~30.0.1", "npm-run-all": "~4.1.5", diff --git a/package.json b/package.json index 2a55e71a..2a28e885 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,16 @@ "prepare:husky": "husky" }, "devDependencies": { + "@eslint/js": "~8.57.1", "@types/eslint": "~8.56.12", "@types/node": "~20.19.1", - "@typescript-eslint/eslint-plugin": "~8.34.1", - "@typescript-eslint/parser": "~8.34.1", "concurrently": "~9.1.2", "eslint": "~8.57.1", "eslint-config-prettier": "~10.1.5", "eslint-import-resolver-typescript": "~4.4.3", "eslint-plugin-import": "~2.31.0", + "eslint-plugin-jest": "~29.0.1", + "eslint-plugin-jest-dom": "~5.5.0", "eslint-plugin-n": "~17.20.0", "eslint-plugin-notice": "~1.0.0", "eslint-plugin-prettier": "~5.5.0", @@ -29,7 +30,8 @@ "husky": "~9.1.7", "lint-staged": "~16.1.2", "npm-run-all": "~4.1.5", - "typescript": "~5.8.3" + "typescript": "~5.8.3", + "typescript-eslint": "~8.34.1" }, "lint-staged": { "*.{js,cjs,mjs,ts,cts,mts}": [ diff --git a/packages/addons/package.json b/packages/addons/package.json index 9161bb79..8fdc5f1d 100644 --- a/packages/addons/package.json +++ b/packages/addons/package.json @@ -54,8 +54,6 @@ "@swc/jest": "~0.2.38", "@testing-library/jest-dom": "~6.6.3", "cross-env": "~7.0.3", - "eslint-plugin-jest": "~29.0.1", - "eslint-plugin-jest-dom": "~5.5.0", "jest": "~30.0.1", "jest-environment-jsdom": "~30.0.1", "npm-run-all": "~4.1.5", diff --git a/packages/addons/test/.eslintrc.cjs b/packages/addons/test/.eslintrc.cjs deleted file mode 100644 index 8c079718..00000000 --- a/packages/addons/test/.eslintrc.cjs +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2023 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - plugins: ['jest', 'jest-dom'], - env: { - 'jest/globals': true, - }, - settings: { - jest: { - version: require('jest/package.json').version, - }, - }, - extends: ['plugin:jest/recommended', 'plugin:jest/style', 'plugin:jest-dom/recommended'], - rules: { - /* The rule list: https://github.com/jest-community/eslint-plugin-jest#rules */ - 'jest/prefer-expect-resolves': 'warn', - 'jest/prefer-spy-on': 'warn', - 'jest/prefer-todo': 'warn', - /* The rule didn't find the 'expect' in the called methods */ - 'jest/expect-expect': 'off', - }, -}; diff --git a/packages/addons/test/spec/plugins/overlays.test.ts b/packages/addons/test/spec/plugins/overlays.test.ts index c8cb110d..44ebfe24 100644 --- a/packages/addons/test/spec/plugins/overlays.test.ts +++ b/packages/addons/test/spec/plugins/overlays.test.ts @@ -224,12 +224,14 @@ describe('Add and remove Overlays', () => { bpmnVisualization.load(readFileSync('./fixtures/bpmn/1_pool_custom_colors_with_1_text-annotation.bpmn')); }); + // eslint-disable-next-line jest/expect-expect -- the expectation is done in overlaysExpectation test('Add overlays', () => { overlaysExpectation.expectNoOverlay('ServiceTask_1.2'); overlaysPlugin.addOverlays('ServiceTask_1.2', createOverlay('overlay 1')); overlaysExpectation.expectOverlays('ServiceTask_1.2', ['overlay 1']); }); + // eslint-disable-next-line jest/expect-expect -- the expectation is done in overlaysExpectation test('Remove overlays', () => { overlaysExpectation.expectNoOverlay('Activity_1wr0s0r'); overlaysExpectation.expectNoOverlay('StartEvent_0av7pgo');