diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 6a90982b3..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['./configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib}', 'vitest.workspace.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/build/Jenkinsfile b/build/Jenkinsfile index fcb9721d9..44d564e77 100644 --- a/build/Jenkinsfile +++ b/build/Jenkinsfile @@ -28,7 +28,7 @@ pipeline { currentBuild.description = "Standalone
" + "Viewer" withChecks('ESLint') { - recordIssues enabledForFailure: true, publishAllIssues: true, aggregatingResults: true, tools: [esLint(pattern: 'packages/**/eslint.xml,integration/**/eslint.xml', skipSymbolicLinks: true)], qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]] + recordIssues enabledForFailure: true, publishAllIssues: true, aggregatingResults: true, tools: [esLint(pattern: 'eslint.xml', skipSymbolicLinks: true)], qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]] } withChecks('Tests') { junit testDataPublishers: [[$class: 'StabilityTestDataPublisher']], testResults: 'report.xml' diff --git a/configs/base.eslintrc.json b/configs/base.eslintrc.json deleted file mode 100644 index 7f166b896..000000000 --- a/configs/base.eslintrc.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "plugins": ["@typescript-eslint", "import", "eslint-plugin-react-compiler"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript", - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended" - ], - "settings": { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx"] - }, - "import/resolver": { - "typescript": {} - }, - "react": { - "version": "detect" - } - }, - "env": { - "browser": true, - "es2022": true - }, - "ignorePatterns": ["node_modules", "lib", "*.d.ts", ".eslintrc.*js"], - "rules": { - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/no-namespace": "off", - "react/display-name": "off", - "react/prop-types": "off", - "react-compiler/react-compiler": "error" - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..7bdc2113e --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,29 @@ +import tseslint from 'typescript-eslint'; +import config from '@axonivy/eslint-config'; + +export default tseslint.config( + ...config.base, + // TypeScript recommended configs + { + name: 'typescript-eslint', + languageOptions: { + parserOptions: { + project: true, // Uses tsconfig.json from current directory + tsconfigRootDir: import.meta.dirname + } + } + }, + // Project specific configs + { + name: 'general', + rules: { + '@typescript-eslint/no-namespace': 'off' + } + }, + { + name: 'packages/editor', + rules: { + 'react/no-unknown-property': 'off' + } + } +); diff --git a/integration/eclipse/.eslintrc.cjs b/integration/eclipse/.eslintrc.cjs deleted file mode 100644 index 423d46e2c..000000000 --- a/integration/eclipse/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{app,css,node_modules,lib,server}', 'vite.*.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/integration/eclipse/package.json b/integration/eclipse/package.json index 3522f7d00..9924d2401 100644 --- a/integration/eclipse/package.json +++ b/integration/eclipse/package.json @@ -26,8 +26,6 @@ "type": "module", "scripts": { "clean": "rimraf lib build/* tsconfig.tsbuildinfo", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "type": "tsc --noEmit", "build": "tsc --build", "package": "vite build", diff --git a/integration/inscription/.eslintrc.cjs b/integration/inscription/.eslintrc.cjs deleted file mode 100644 index 423d46e2c..000000000 --- a/integration/inscription/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{app,css,node_modules,lib,server}', 'vite.*.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/integration/inscription/package.json b/integration/inscription/package.json index c5d91cc98..460efae4c 100644 --- a/integration/inscription/package.json +++ b/integration/inscription/package.json @@ -11,7 +11,7 @@ "dependencies": { "@axonivy/process-editor-inscription-core": "~13.1.0-next", "@axonivy/process-editor-inscription-view": "~13.1.0-next", - "@axonivy/ui-icons": "~13.1.0-next.415", + "@axonivy/ui-icons": "~13.1.0-next.419", "path-browserify": "^1.0.1" }, "devDependencies": { @@ -27,8 +27,6 @@ "type": "module", "scripts": { "clean": "rimraf lib build tsconfig.tsbuildinfo", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "type": "tsc --noEmit", "build": "tsc --build", "package": "vite build", diff --git a/integration/inscription/src/index.tsx b/integration/inscription/src/index.tsx index 200b39080..a8a4030f1 100644 --- a/integration/inscription/src/index.tsx +++ b/integration/inscription/src/index.tsx @@ -15,7 +15,11 @@ export async function start(): Promise { const pid = URLParams.pid(); const theme = URLParams.themeMode(); const queryClient = initQueryClient(); - const root = createRoot(document.getElementById('root')!); + const rootElement = document.getElementById('root'); + if (!rootElement) { + throw new Error('root element not found'); + } + const root = createRoot(rootElement); root.render( diff --git a/integration/inscription/src/mock.tsx b/integration/inscription/src/mock.tsx index 219bf7dbc..af10abb31 100644 --- a/integration/inscription/src/mock.tsx +++ b/integration/inscription/src/mock.tsx @@ -11,7 +11,11 @@ export async function start(): Promise { const readonly = URLParams.parameter('readonly') ? true : false; const type = (URLParams.parameter('type') as ElementType) ?? undefined; const theme = URLParams.themeMode(); - const root = createRoot(document.getElementById('root')!); + const rootElement = document.getElementById('root'); + if (!rootElement) { + throw new Error('root element not found'); + } + const root = createRoot(rootElement); const queryClient = initQueryClient(); const client = new InscriptionClientMock(readonly, type); await MonacoEditorUtil.configureInstance({ theme, debug: true }); diff --git a/integration/standalone/.eslintrc.cjs b/integration/standalone/.eslintrc.cjs deleted file mode 100644 index dfed8dfac..000000000 --- a/integration/standalone/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib}', 'vite.*.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/integration/standalone/package.json b/integration/standalone/package.json index d7616d585..5a739584a 100644 --- a/integration/standalone/package.json +++ b/integration/standalone/package.json @@ -13,7 +13,7 @@ "@axonivy/process-editor": "~13.1.0-next", "@axonivy/process-editor-inscription": "~13.1.0-next", "@axonivy/process-editor-inscription-view": "~13.1.0-next", - "@axonivy/ui-components": "~13.1.0-next.415", + "@axonivy/ui-components": "~13.1.0-next.419", "@eclipse-glsp/client": "2.3.0" }, "devDependencies": { @@ -26,8 +26,6 @@ "type": "module", "scripts": { "clean": "rimraf lib build/* tsconfig.tsbuildinfo", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "type": "tsc --noEmit", "build": "tsc --build", "package": "vite build", diff --git a/integration/viewer/.eslintrc.cjs b/integration/viewer/.eslintrc.cjs deleted file mode 100644 index dfed8dfac..000000000 --- a/integration/viewer/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib}', 'vite.*.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/integration/viewer/package.json b/integration/viewer/package.json index 16f96088e..c46847f55 100644 --- a/integration/viewer/package.json +++ b/integration/viewer/package.json @@ -23,8 +23,6 @@ "type": "module", "scripts": { "clean": "rimraf lib build/* tsconfig.tsbuildinfo", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "type": "tsc --noEmit", "build": "tsc --build", "package": "vite build", diff --git a/package-lock.json b/package-lock.json index 8c629fe19..14719173b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,8 @@ "name": "parent", "version": "11.4.0-next", "devDependencies": { + "@axonivy/eslint-config": "~13.1.0-next.419", "@types/node": "^22.10.2", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "@typescript-eslint/parser": "^8.18.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.7.0", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-null": "^1.0.2", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-compiler": "^19.0.0-beta-37ed2a7-20241206", - "eslint-plugin-react-hooks": "^5.1.0", "lerna": "^8.1.9", "prettier": "^2.8.0", "rimraf": "^6.0.1", @@ -62,7 +53,7 @@ "dependencies": { "@axonivy/process-editor-inscription-core": "~13.1.0-next", "@axonivy/process-editor-inscription-view": "~13.1.0-next", - "@axonivy/ui-icons": "~13.1.0-next.415", + "@axonivy/ui-icons": "~13.1.0-next.419", "path-browserify": "^1.0.1" }, "devDependencies": { @@ -83,7 +74,7 @@ "@axonivy/process-editor": "~13.1.0-next", "@axonivy/process-editor-inscription": "~13.1.0-next", "@axonivy/process-editor-inscription-view": "~13.1.0-next", - "@axonivy/ui-components": "~13.1.0-next.415", + "@axonivy/ui-components": "~13.1.0-next.419", "@eclipse-glsp/client": "2.3.0" }, "devDependencies": { @@ -133,14 +124,36 @@ "resolved": "integration/eclipse", "link": true }, + "node_modules/@axonivy/eslint-config": { + "version": "13.1.0-next.419", + "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/eslint-config/-/eslint-config-13.1.0-next.419.tgz", + "integrity": "sha512-IzQje/jS+4WhjFwwTw3TG+JTmuanueGOxxgPVS3ZcnUZFpTbgsdAyVUF5dA3c8pTyOUKbmLOFDfQWlnyregyoA==", + "dev": true, + "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)", + "dependencies": { + "@eslint/js": "^9.17.0", + "@tanstack/eslint-plugin-query": "^5.62.9", + "@typescript-eslint/eslint-plugin": "^8.19.0", + "@typescript-eslint/parser": "^8.19.0", + "eslint": "^9.17.0", + "eslint-formatter-checkstyle": "^8.40.0", + "eslint-plugin-playwright": "^2.1.0", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-compiler": "^19.0.0-beta-55955c9-20241229", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-testing-library": "^7.1.1", + "typescript-eslint": "^8.19.0" + } + }, "node_modules/@axonivy/inscription-standalone": { "resolved": "integration/inscription", "link": true }, "node_modules/@axonivy/jsonrpc": { - "version": "13.1.0-next.415", - "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/jsonrpc/-/jsonrpc-13.1.0-next.415.tgz", - "integrity": "sha512-oV0Nvzjm6JhnFoPOPQLMa4oe6o60kBjROUvKo3GF0l2W1ijIaPNNUHCieb+Rs2V4nA6jRP0jv1wd7uDKlaopDg==", + "version": "13.1.0-next.419", + "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/jsonrpc/-/jsonrpc-13.1.0-next.419.tgz", + "integrity": "sha512-lXrTPsKQYNfpWchQIiVLMyX+iZQ8kQH5DNiuvQLrBD+tFYz5CECcu69iy2v9QpjhUWuTRQg5vpuZi4iOh80q2w==", + "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)", "dependencies": { "vscode-jsonrpc": "^8.2.0" } @@ -178,9 +191,10 @@ "link": true }, "node_modules/@axonivy/ui-components": { - "version": "13.1.0-next.415", - "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/ui-components/-/ui-components-13.1.0-next.415.tgz", - "integrity": "sha512-sGzZlvLcszIeRON6CYAYPhC2i2q6B6JCdvPDC1Jt8XXj9BYudwiDVUuofE6AH5LAqg56FVn+J1Rsh7J204LMhA==", + "version": "13.1.0-next.419", + "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/ui-components/-/ui-components-13.1.0-next.419.tgz", + "integrity": "sha512-iTjbGppy39ZjHeyPdCLVAsP/iPdDiiTDW78NcDVTvfvTnUKJ6YGFs4sZ0jDhFQ8bYYP66FiYG3u1kJXsJn3Skg==", + "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)", "dependencies": { "@radix-ui/react-accordion": "1.2.1", "@radix-ui/react-checkbox": "1.1.2", @@ -209,9 +223,10 @@ } }, "node_modules/@axonivy/ui-icons": { - "version": "13.1.0-next.415", - "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/ui-icons/-/ui-icons-13.1.0-next.415.tgz", - "integrity": "sha512-vZiZXjE6tGiWN50EK7zlKHc2Uhxj+QpwQN5QwSI8PfPoqiEevuDoLzVRgskovnc5gBdkin1J94+GZMyNs5doeA==" + "version": "13.1.0-next.419", + "resolved": "https://npmjs-registry.ivyteam.ch/@axonivy/ui-icons/-/ui-icons-13.1.0-next.419.tgz", + "integrity": "sha512-BX7wzTqJ0DOj7Q6lDAfRZ/ftBfaeqBSN+RxrUAahtl5ex1YyARd3A5vQ9uhcR6xwGHu3V1lCoskPySFZFiLBbw==", + "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)" }, "node_modules/@axonivy/viewer-integration": { "resolved": "integration/viewer", @@ -1202,24 +1217,78 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "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": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1227,7 +1296,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1238,6 +1307,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1248,6 +1318,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1256,12 +1327,36 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@floating-ui/core": { @@ -1349,41 +1444,42 @@ "tslib": "2" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1399,12 +1495,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", @@ -1959,16 +2062,6 @@ "node": ">= 8" } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, "node_modules/@npmcli/agent": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", @@ -5587,13 +5680,6 @@ "win32" ] }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, "node_modules/@sigstore/bundle": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", @@ -5690,134 +5776,20 @@ } }, "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.32.1", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.32.1.tgz", - "integrity": "sha512-hlvKBV0JncpoA2HThfiD6OH8pdtn2N7WR74nWmDEuBEV1HMwXDo1QF/h/oKRPheEjzokVI13D3p11Lfw2kQr+g==", + "version": "5.62.15", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.62.15.tgz", + "integrity": "sha512-24BHoF3LIzyptjrZXc1IpaISno+fhVD3zWWso/HPSB+ZVOyOXoiQSQc2K362T13JKJ07EInhHi1+KyNoRzCCfQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^6.20.0" + "@typescript-eslint/utils": "^8.18.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "eslint": "^8.0.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@tanstack/query-core": { @@ -6172,12 +6144,6 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "node_modules/@types/lodash": { "version": "4.14.202", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", @@ -6252,12 +6218,6 @@ "@types/react": "*" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/showdown": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-2.0.6.tgz", @@ -6271,17 +6231,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", - "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", + "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/type-utils": "8.18.0", - "@typescript-eslint/utils": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/type-utils": "8.19.0", + "@typescript-eslint/utils": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6301,16 +6261,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", - "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", + "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", "dev": true, - "license": "MITClause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/typescript-estree": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4" }, "engines": { @@ -6326,14 +6286,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", - "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", + "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0" + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6344,14 +6304,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", - "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", + "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.0", - "@typescript-eslint/utils": "8.18.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/utils": "8.19.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6368,9 +6328,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz", - "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", + "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", "dev": true, "license": "MIT", "engines": { @@ -6382,14 +6342,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", - "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", + "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6409,16 +6369,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", - "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", + "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/typescript-estree": "8.18.0" + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6433,13 +6393,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz", - "integrity": "sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", + "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.0", + "@typescript-eslint/types": "8.19.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6463,12 +6423,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", @@ -6684,10 +6638,11 @@ } }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -6700,6 +6655,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -6741,6 +6697,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6868,13 +6825,14 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -6949,26 +6907,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", @@ -6988,15 +6926,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7023,19 +6962,19 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -7088,6 +7027,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -7318,16 +7258,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8112,14 +8083,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8129,29 +8101,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -8391,18 +8365,6 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", @@ -8466,6 +8428,21 @@ "react": ">=16.12.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -8541,20 +8518,6 @@ "once": "^1.4.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -8618,57 +8581,63 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -8678,13 +8647,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8699,27 +8666,28 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", - "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -8745,14 +8713,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -8768,14 +8738,15 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -8897,275 +8868,134 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz", - "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.3.7", - "enhanced-resolve": "^5.15.0", - "fast-glob": "^3.3.2", - "get-tsconfig": "^4.7.5", - "is-bun-module": "^1.0.2", - "is-glob": "^4.0.3", - "stable-hash": "^0.0.4" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + "url": "https://eslint.org/donate" }, "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" + "jiti": "*" }, "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { + "jiti": { "optional": true } } }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "node_modules/eslint-formatter-checkstyle": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-checkstyle/-/eslint-formatter-checkstyle-8.40.0.tgz", + "integrity": "sha512-OpYAiI2yejMPUlB1O2pkfyNfBQrKNWrMK6X2eOn2vg/q94roDiHnOYExK0isdNglKeaYHA5JtgmuBtokFdj0AA==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-header": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz", - "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==", - "dev": true, - "peerDependencies": { - "eslint": ">=7.7.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "node_modules/eslint-plugin-playwright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.1.0.tgz", + "integrity": "sha512-wMbHOehofSB1cBdzz2CLaCYaKNLeTQ0YnOW+7AHa281TJqlpEJUBgTHbRUYOUxiXphfWwOyTPvgr6vvEmArbSA==", "dev": true, "license": "MIT", + "workspaces": [ + "examples" + ], "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" + "globals": "^13.23.0" }, "engines": { - "node": ">=4" + "node": ">=16.6.0" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "eslint": ">=8.40.0" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint-plugin-playwright/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "type-fest": "^0.20.2" }, "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-no-null": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-null/-/eslint-plugin-no-null-1.0.2.tgz", - "integrity": "sha512-uRDiz88zCO/2rzGfgG15DBjNsgwWtWiSo4Ezy7zzajUgpnFIqd1TjepKeRmJZHEfBGu58o2a8S0D7vglvvhkVA==", - "dev": true, - "engines": { - "node": ">=5.0.0" + "node": ">=8" }, - "peerDependencies": { - "eslint": ">=3.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -9176,9 +9006,9 @@ } }, "node_modules/eslint-plugin-react-compiler": { - "version": "19.0.0-beta-37ed2a7-20241206", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.0.0-beta-37ed2a7-20241206.tgz", - "integrity": "sha512-5Pex1fUCJwLwwqEJe6NkgTn45kUjjj9TZP6IrW4IcpWM/YaEe+QvcOeF60huDjBq0kz1svGeW2nw8WdY+qszAw==", + "version": "19.0.0-beta-63e3235-20250105", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.0.0-beta-63e3235-20250105.tgz", + "integrity": "sha512-Smts5x+u+rRopr0926jCXFPkS8D8hFJexDvTW41V0Xu/xHgd4pnGWiJQRBsvTEARzOdJ6NdlmYs4n+O4Thn2iA==", "dev": true, "license": "MIT", "dependencies": { @@ -9293,16 +9123,17 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -9330,6 +9161,19 @@ "concat-map": "0.0.1" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -9358,17 +9202,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -9405,6 +9263,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -9539,7 +9398,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -9573,7 +9433,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -9617,15 +9478,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-saver": { @@ -9696,83 +9558,25 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flat-cache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.9", @@ -9800,6 +9604,7 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -9950,15 +9755,18 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -9997,16 +9805,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10139,6 +9953,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -10165,14 +9993,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -10181,19 +10010,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/git-raw-commits": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", @@ -10317,15 +10133,13 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10374,12 +10188,13 @@ "dev": true }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10453,10 +10268,14 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10483,10 +10302,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -10495,10 +10318,11 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10812,14 +10636,15 @@ } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10872,13 +10697,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -10894,13 +10721,16 @@ "dev": true }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10910,12 +10740,16 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10934,13 +10768,14 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10949,21 +10784,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bun-module": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", - "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.6.3" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11001,11 +10827,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -11016,12 +10845,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11056,13 +10887,16 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11078,13 +10912,16 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -11134,18 +10971,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -11156,12 +10981,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11179,15 +11006,6 @@ "node": ">=8" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -11221,13 +11039,16 @@ "dev": true }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11250,12 +11071,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -11285,12 +11107,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -11300,12 +11124,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -11328,12 +11155,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -11369,26 +11197,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -11414,7 +11246,8 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -11454,17 +11287,18 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11679,7 +11513,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -11792,7 +11627,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -11817,18 +11653,6 @@ "dev": true, "license": "ISC" }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -11909,6 +11733,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -12445,6 +12270,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/memoizee": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", @@ -13532,10 +13367,11 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13553,14 +13389,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -13603,27 +13442,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -13728,6 +13555,24 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -14231,6 +14076,7 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -14943,19 +14789,20 @@ "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -14970,15 +14817,18 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15048,16 +14898,6 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -15279,14 +15119,16 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -15303,15 +15145,33 @@ "dev": true, "license": "MIT" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15396,6 +15256,21 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -15454,15 +15329,73 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -15712,13 +15645,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/stable-hash": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", - "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", - "dev": true, - "license": "MIT" - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -15784,24 +15710,25 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -15822,15 +15749,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15840,15 +15771,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15932,6 +15868,7 @@ "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" }, @@ -15987,16 +15924,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -16084,12 +16011,6 @@ "node": ">=0.10" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -16332,27 +16253,6 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -16397,6 +16297,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -16405,30 +16306,32 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -16438,17 +16341,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -16458,17 +16363,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -16535,6 +16441,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/typescript-eslint": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", + "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/utils": "8.19.0" + }, + "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.8.0" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -16550,15 +16479,19 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16657,6 +16590,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -17090,40 +17024,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -17152,15 +17091,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -17552,7 +17493,7 @@ "version": "13.1.0-next", "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)", "dependencies": { - "@axonivy/jsonrpc": "~13.1.0-next.415", + "@axonivy/jsonrpc": "~13.1.0-next.419", "@axonivy/process-editor-inscription-protocol": "~13.1.0-next", "monaco-editor": "^0.44.0", "monaco-editor-workers": "^0.44.0", @@ -17575,8 +17516,8 @@ "dependencies": { "@axonivy/process-editor-inscription-core": "~13.1.0-next", "@axonivy/process-editor-inscription-protocol": "~13.1.0-next", - "@axonivy/ui-components": "~13.1.0-next.415", - "@axonivy/ui-icons": "~13.1.0-next.415", + "@axonivy/ui-components": "~13.1.0-next.419", + "@axonivy/ui-icons": "~13.1.0-next.419", "@monaco-editor/react": "^4.6.0", "@radix-ui/react-dialog": "1.1.2", "@radix-ui/react-radio-group": "1.2.1", @@ -17592,13 +17533,11 @@ "react-error-boundary": "^4.1.2" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "5.32.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@types/react": "^18.3.4", "deepmerge-ts": "^5.1.0", - "eslint-plugin-testing-library": "^7.1.1", "jsdom": "^25.0.1", "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/package.json b/package.json index cc4fc931c..e2d31b644 100644 --- a/package.json +++ b/package.json @@ -9,14 +9,15 @@ "node": "22.11.0" }, "scripts": { - "ci": "npm install && npm run build && npm run package && npm run lint:ci && npm run test:ci", + "ci": "npm install && npm run build && npm run package && (npm run lint:ci || true) && npm run test:ci", "clean": "lerna run clean", "build": "tsc --build && tscp --build", "package": "lerna run package", "type": "lerna run type", - "lint": "lerna run lint --", - "lint:ci": "npm run lint -- -o eslint.xml -f checkstyle", - "lint:fix": "lerna run --parallel lint:fix --", + "lint": "eslint", + "lint:ci": "eslint -o eslint.xml -f checkstyle", + "lint:fix": "eslint --fix", + "lint:inspect": "eslint --inspect-config", "dev": "npm run --workspace=@axonivy/standalone-integration dev", "dev:viewer": "npm run --workspace=@axonivy/viewer-integration dev", "dev:eclipse": "npm run --workspace=@axonivy/eclipse-integration dev", @@ -28,17 +29,8 @@ "publish:next": "lerna publish --exact --canary --preid next --pre-dist-tag next --no-git-tag-version --no-push --ignore-scripts --yes" }, "devDependencies": { + "@axonivy/eslint-config": "~13.1.0-next.419", "@types/node": "^22.10.2", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "@typescript-eslint/parser": "^8.18.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.7.0", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-null": "^1.0.2", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-compiler": "^19.0.0-beta-37ed2a7-20241206", - "eslint-plugin-react-hooks": "^5.1.0", "lerna": "^8.1.9", "prettier": "^2.8.0", "rimraf": "^6.0.1", diff --git a/packages/editor/.eslintrc.cjs b/packages/editor/.eslintrc.cjs deleted file mode 100644 index 4531c1687..000000000 --- a/packages/editor/.eslintrc.cjs +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib,server}', 'vitest.config.*ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - }, - rules: { - 'react/no-unknown-property': 'off' - } -}; diff --git a/packages/editor/package.json b/packages/editor/package.json index 4d712a1bb..dd368bbca 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -35,8 +35,6 @@ "scripts": { "clean": "rimraf lib tsconfig.*tsbuildinfo", "build": "tsc --build tsconfig.build.json && tscp", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "type": "tsc --noEmit", "test": "vitest", "test:ci": "vitest --watch=false" diff --git a/packages/editor/src/animate/animate-action-handler.test.ts b/packages/editor/src/animate/animate-action-handler.test.ts index 79ae81eeb..812ae8f11 100644 --- a/packages/editor/src/animate/animate-action-handler.test.ts +++ b/packages/editor/src/animate/animate-action-handler.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import type { ActionDispatcher, FeedbackActionDispatcher } from '@eclipse-glsp/client'; import { Bounds, CenterCommand, configureActionHandler, configureCommand, InitializeCanvasBoundsAction, TYPES } from '@eclipse-glsp/client'; import type { Container } from 'inversify'; diff --git a/packages/editor/src/animate/animate-action-handler.ts b/packages/editor/src/animate/animate-action-handler.ts index c58f66eec..b5e05fbd6 100644 --- a/packages/editor/src/animate/animate-action-handler.ts +++ b/packages/editor/src/animate/animate-action-handler.ts @@ -11,7 +11,7 @@ export class AnimateActionHandler implements IActionHandler { @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher; @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher; - handle(action: Action): Action | void { + handle(action: Action) { if (AnimateAction.is(action)) { for (const id of action.elementIds) { this.animateElementIDs.add(id); diff --git a/packages/editor/src/breakpoint/action-handler.test.ts b/packages/editor/src/breakpoint/action-handler.test.ts index 06a2d411b..a179ab992 100644 --- a/packages/editor/src/breakpoint/action-handler.test.ts +++ b/packages/editor/src/breakpoint/action-handler.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import type { ActionDispatcher, FeedbackActionDispatcher } from '@eclipse-glsp/client'; import { Bounds, configureActionHandler, configureCommand, InitializeCanvasBoundsAction, TYPES } from '@eclipse-glsp/client'; import type { Container } from 'inversify'; diff --git a/packages/editor/src/breakpoint/action-handler.ts b/packages/editor/src/breakpoint/action-handler.ts index 5f3d15a99..64c31d9ee 100644 --- a/packages/editor/src/breakpoint/action-handler.ts +++ b/packages/editor/src/breakpoint/action-handler.ts @@ -10,7 +10,7 @@ export class ShowBreakpointActionHandler implements IActionHandler { @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher; - handle(action: Action): Action | void { + handle(action: Action) { if (ShowBreakpointAction.is(action)) { const breakpointFeedback = BreakpointFeedbackAction.create({ breakpoints: action.elementBreakpoints, diff --git a/packages/editor/src/breakpoint/feedback-action.test.ts b/packages/editor/src/breakpoint/feedback-action.test.ts index 01cba7777..6af32e1f1 100644 --- a/packages/editor/src/breakpoint/feedback-action.test.ts +++ b/packages/editor/src/breakpoint/feedback-action.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import { ActionDispatcher, Bounds, diff --git a/packages/editor/src/breakpoint/view.test.tsx b/packages/editor/src/breakpoint/view.test.tsx index 091c729fa..569d1bda6 100644 --- a/packages/editor/src/breakpoint/view.test.tsx +++ b/packages/editor/src/breakpoint/view.test.tsx @@ -66,9 +66,9 @@ describe('BreakpointView', () => { }); test('render breakpoint', () => { - const vnode = renderBreakpoint('breakpoint'); + const view = renderBreakpoint('breakpoint'); const expectation = ''; - expect(toHTML(vnode)).to.be.equals(expectation); + expect(toHTML(view)).to.be.equals(expectation); }); test('render disabled breakpoint', () => { @@ -100,11 +100,11 @@ describe('BreakpointView', () => { }); test('render full graph', () => { - const vnode = context.renderElement(graph); + const view = context.renderElement(graph); const graphAndNode = '' + ''; - expect(toHTML(vnode)) + expect(toHTML(view)) .to.contains(graphAndNode) .and.contains('') .and.contains('') @@ -122,19 +122,19 @@ describe('BreakpointView', () => { } function assertBreakpoint(breakpointId: string, expectedCssClass: string): void { - const vnode = renderBreakpoint(breakpointId); + const view = renderBreakpoint(breakpointId); const breakpoint = `class="ivy-breakpoint-handle ${expectedCssClass}"`; - expect(toHTML(vnode)).to.contain(breakpoint); + expect(toHTML(view)).to.contain(breakpoint); } function assertBreakpointGlobalDisable(breakpointId: string, expectedCssClass?: string): void { - const vnode = renderBreakpoint(breakpointId); + const view = renderBreakpoint(breakpointId); let breakpoint = 'class="ivy-breakpoint-handle'; if (expectedCssClass) { breakpoint = `class="ivy-breakpoint-handle ${expectedCssClass}"`; } const line = ''; - expect(toHTML(vnode)).to.contain(breakpoint); - expect(toHTML(vnode)).to.contain(line); + expect(toHTML(view)).to.contain(breakpoint); + expect(toHTML(view)).to.contain(line); } }); diff --git a/packages/editor/src/breakpoint/view.tsx b/packages/editor/src/breakpoint/view.tsx index 517935cb4..27dd08bcb 100644 --- a/packages/editor/src/breakpoint/view.tsx +++ b/packages/editor/src/breakpoint/view.tsx @@ -4,7 +4,6 @@ import { isBoundsAware, IView, svg } from '@eclipse-glsp/client'; import { SBreakpointHandle } from './model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/activities/activity-views.test.tsx b/packages/editor/src/diagram/activities/activity-views.test.tsx index a8b59dd8c..36d8ca0b7 100644 --- a/packages/editor/src/diagram/activities/activity-views.test.tsx +++ b/packages/editor/src/diagram/activities/activity-views.test.tsx @@ -46,11 +46,11 @@ describe('ActivityNodeView', () => { }); test('render full activity graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); @@ -116,22 +116,20 @@ describe('ActivityNodeView', () => { }); test('render with execution badge', () => { - const view = viewRegistry.get(ActivityTypes.SCRIPT); const script = graph.index.getById('script') as ActivityNode; script.executionCount = 3; - const vnode = view.render(script, context); + const view = viewRegistry.get(ActivityTypes.SCRIPT).render(script, context); const executionBadge = '3'; - expect(toHTML(vnode)).to.contains(executionBadge); + expect(toHTML(view)).to.contains(executionBadge); }); test('render with color', () => { - const view = viewRegistry.get(ActivityTypes.SCRIPT); const script = graph.index.getById('script') as ActivityNode; script.args = { color: 'red' }; - const vnode = view.render(script, context); + const view = viewRegistry.get(ActivityTypes.SCRIPT).render(script, context); const colorRect = //; - expect(toHTML(vnode)).to.matches(colorRect); + expect(toHTML(view)).to.matches(colorRect); }); function renderNode(type: string, nodeId: string): VNode | undefined { diff --git a/packages/editor/src/diagram/activities/activity-views.tsx b/packages/editor/src/diagram/activities/activity-views.tsx index d2730a228..0b7d99a22 100644 --- a/packages/editor/src/diagram/activities/activity-views.tsx +++ b/packages/editor/src/diagram/activities/activity-views.tsx @@ -7,7 +7,6 @@ import { CustomIconToggleActionHandler } from '../../ui-tools/tool-bar/options/a import { getActivityIconDecorator } from '../icon/views'; import { ActivityNode } from '../model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/events/event-views.test.tsx b/packages/editor/src/diagram/events/event-views.test.tsx index 0945263b8..3dadb39ec 100644 --- a/packages/editor/src/diagram/events/event-views.test.tsx +++ b/packages/editor/src/diagram/events/event-views.test.tsx @@ -61,11 +61,11 @@ describe('EventNodeView', () => { }); test('render full event graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); @@ -155,29 +155,26 @@ describe('EventNodeView', () => { }); test('render with execution badge', () => { - const view = viewRegistry.get(EventStartTypes.START); const start = graph.index.getById('start') as EventNode; start.executionCount = 3; - const vnode = view.render(start, context); + const view = viewRegistry.get(EventStartTypes.START).render(start, context); const executionBadge = '3'; - expect(toHTML(vnode)).to.contains(executionBadge); + expect(toHTML(view)).to.contains(executionBadge); }); test('render with color', () => { - const view = viewRegistry.get(EventBoundaryTypes.BOUNDARY_SIGNAL); const signal = graph.index.getById('boundarySignal') as EventNode; signal.args = { color: 'red' }; - const vnode = view.render(signal, context); + const view = viewRegistry.get(EventBoundaryTypes.BOUNDARY_SIGNAL).render(signal, context); const colorCircle = //; - const newLocal = toHTML(vnode); + const newLocal = toHTML(view); expect(newLocal).to.matches(colorCircle); }); function assertEvent(type: string, nodeId: string, options: { intermediate?: boolean; icon?: boolean }): void { - const view = viewRegistry.get(type); - const vnode = view.render(graph.index.getById(nodeId) as GNode, context); - const node = toHTML(vnode); + const view = viewRegistry.get(type).render(graph.index.getById(nodeId) as GNode, context); + const node = toHTML(view); expect(node).to.contains(''); if (options.intermediate) { expect(node).to.contains(''); diff --git a/packages/editor/src/diagram/events/event-views.tsx b/packages/editor/src/diagram/events/event-views.tsx index f023b0b74..3a4d425fe 100644 --- a/packages/editor/src/diagram/events/event-views.tsx +++ b/packages/editor/src/diagram/events/event-views.tsx @@ -7,7 +7,6 @@ import { CustomIconToggleActionHandler } from '../../ui-tools/tool-bar/options/a import { getIconDecorator } from '../icon/views'; import { EventNode } from '../model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/gateways/gateway-views.test.tsx b/packages/editor/src/diagram/gateways/gateway-views.test.tsx index 0f0da443c..cd28a8093 100644 --- a/packages/editor/src/diagram/gateways/gateway-views.test.tsx +++ b/packages/editor/src/diagram/gateways/gateway-views.test.tsx @@ -27,11 +27,11 @@ describe('GatewayNodeView', () => { }); test('render full gateway graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); @@ -53,28 +53,25 @@ describe('GatewayNodeView', () => { }); test('render with execution badge', () => { - const view = viewRegistry.get(GatewayTypes.TASK); const task = graph.index.getById('gatewayTask') as GatewayNode; task.executionCount = 3; - const vnode = view.render(task, context); + const view = viewRegistry.get(GatewayTypes.TASK).render(task, context); const executionBadge = '3'; - expect(toHTML(vnode)).to.contains(executionBadge); + expect(toHTML(view)).to.contains(executionBadge); }); test('render with color', () => { - const view = viewRegistry.get(GatewayTypes.TASK); const task = graph.index.getById('gatewayTask') as GatewayNode; task.args = { color: 'red' }; - const vnode = view.render(task, context); + const view = viewRegistry.get(GatewayTypes.TASK).render(task, context); const colorPolygon = //; - expect(toHTML(vnode)).to.matches(colorPolygon); + expect(toHTML(view)).to.matches(colorPolygon); }); function assertGateway(type: string, nodeId: string): void { - const view = viewRegistry.get(type); - const vnode = view.render(graph.index.getById(nodeId) as GNode, context); - const node = toHTML(vnode); + const view = viewRegistry.get(type).render(graph.index.getById(nodeId) as GNode, context); + const node = toHTML(view); expect(node).to.contains(''); expect(node).to.contains(''); } diff --git a/packages/editor/src/diagram/gateways/gateway-views.tsx b/packages/editor/src/diagram/gateways/gateway-views.tsx index 66655a411..397c958c8 100644 --- a/packages/editor/src/diagram/gateways/gateway-views.tsx +++ b/packages/editor/src/diagram/gateways/gateway-views.tsx @@ -7,7 +7,6 @@ import { CustomIconToggleActionHandler } from '../../ui-tools/tool-bar/options/a import { getIconDecorator } from '../icon/views'; import { GatewayNode } from '../model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/grid/ivy-graph-view.tsx b/packages/editor/src/diagram/grid/ivy-graph-view.tsx index 77ddc776d..acf59645d 100644 --- a/packages/editor/src/diagram/grid/ivy-graph-view.tsx +++ b/packages/editor/src/diagram/grid/ivy-graph-view.tsx @@ -42,7 +42,7 @@ export class IvyGraphView extends GLSPProjectionView { protected renderNegativeArea(model: Readonly): VNode { if (isViewport(model.root)) { - const modelBounds = getModelBounds(model.root)!; + const modelBounds = getModelBounds(model.root) ?? Bounds.EMPTY; return h('g', { class: { 'negative-area-group': true } }, [ h('rect', { attrs: { diff --git a/packages/editor/src/diagram/icon/icons.ts b/packages/editor/src/diagram/icon/icons.ts index a7a0d7c89..00761cfd6 100644 --- a/packages/editor/src/diagram/icon/icons.ts +++ b/packages/editor/src/diagram/icon/icons.ts @@ -1,4 +1,3 @@ -/* eslint-disable max-len */ import { ActivityTypes, EventBoundaryTypes, EventEndTypes, EventIntermediateTypes, EventStartTypes, GatewayTypes } from '../view-types'; export enum IconStyle { diff --git a/packages/editor/src/diagram/icon/views.test.tsx b/packages/editor/src/diagram/icon/views.test.tsx index 4a98fc850..109e84693 100644 --- a/packages/editor/src/diagram/icon/views.test.tsx +++ b/packages/editor/src/diagram/icon/views.test.tsx @@ -1,4 +1,4 @@ -/* eslint-disable no-unused-expressions */ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { describe, test, expect } from 'vitest'; import type { VNode, VNodeData } from 'snabbdom'; import type { Bounds } from '@eclipse-glsp/client'; diff --git a/packages/editor/src/diagram/icon/views.tsx b/packages/editor/src/diagram/icon/views.tsx index 41c202091..023740759 100644 --- a/packages/editor/src/diagram/icon/views.tsx +++ b/packages/editor/src/diagram/icon/views.tsx @@ -7,7 +7,6 @@ import { IconStyle, resolveIcon } from './icons'; import { ActivityTypes } from '../view-types'; import type { ActivityNode } from '../model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; const WORKFLOW_ACTIVITY_TYPES = [ diff --git a/packages/editor/src/diagram/lanes/lane-views.test.tsx b/packages/editor/src/diagram/lanes/lane-views.test.tsx index eaf986c52..7b5e3924a 100644 --- a/packages/editor/src/diagram/lanes/lane-views.test.tsx +++ b/packages/editor/src/diagram/lanes/lane-views.test.tsx @@ -1,4 +1,3 @@ -/* eslint-disable max-len */ import type { ModelRenderer, GGraph, GModelFactory, GNode, ViewRegistry } from '@eclipse-glsp/client'; import { describe, test, expect, beforeEach } from 'vitest'; import { LaneTypes } from '../view-types'; @@ -47,52 +46,48 @@ describe('LaneNodeView', () => { }); test('render full lane graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); test('render pool node', () => { - const view = viewRegistry.get(LaneTypes.POOL); - const vnode = view.render(graph.index.getById('pool') as GNode, context); + const view = viewRegistry.get(LaneTypes.POOL).render(graph.index.getById('pool') as GNode, context); const expectation = '' + '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render pool node with multiline label', () => { - const view = viewRegistry.get(LaneTypes.POOL); - const vnode = view.render(graph.index.getById('pool2') as GNode, context); + const view = viewRegistry.get(LaneTypes.POOL).render(graph.index.getById('pool2') as GNode, context); const expectation = '' + '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render lane node', () => { - const view = viewRegistry.get(LaneTypes.LANE); - const vnode = view.render(graph.index.getById('lane') as GNode, context); + const view = viewRegistry.get(LaneTypes.LANE).render(graph.index.getById('lane') as GNode, context); const expectation = '' + '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render lane with color dot', () => { - const view = viewRegistry.get(LaneTypes.LANE); const lane = graph.index.getById('lane') as LaneNode; lane.args = { color: 'red' }; - const vnode = view.render(lane, context); - expect(toHTML(vnode)).to.contain('style="--lane-color: red"'); + const view = viewRegistry.get(LaneTypes.LANE).render(lane, context); + expect(toHTML(view)).to.contain('style="--lane-color: red"'); }); }); diff --git a/packages/editor/src/diagram/lanes/lane-views.tsx b/packages/editor/src/diagram/lanes/lane-views.tsx index c77cb65cb..440fda351 100644 --- a/packages/editor/src/diagram/lanes/lane-views.tsx +++ b/packages/editor/src/diagram/lanes/lane-views.tsx @@ -4,7 +4,6 @@ import { VNode, VNodeStyle } from 'snabbdom'; import { LaneNode } from '../model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/marker/issue-marker-view.tsx b/packages/editor/src/diagram/marker/issue-marker-view.tsx index b4cc19d84..7ed3897fc 100644 --- a/packages/editor/src/diagram/marker/issue-marker-view.tsx +++ b/packages/editor/src/diagram/marker/issue-marker-view.tsx @@ -1,9 +1,7 @@ -/* eslint-disable max-len */ import { GIssueMarker, GIssueMarkerView, GIssueSeverity, setClass, svg } from '@eclipse-glsp/client'; import { injectable } from 'inversify'; import { VNode } from 'snabbdom'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/diagram/model.test.ts b/packages/editor/src/diagram/model.test.ts index 12a9dc7c4..2547b19ab 100644 --- a/packages/editor/src/diagram/model.test.ts +++ b/packages/editor/src/diagram/model.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import { GEdge, GModelRoot } from '@eclipse-glsp/client'; import { describe, test, expect } from 'vitest'; diff --git a/packages/editor/src/diagram/views.test.tsx b/packages/editor/src/diagram/views.test.tsx index e7d85a49a..6a92725e0 100644 --- a/packages/editor/src/diagram/views.test.tsx +++ b/packages/editor/src/diagram/views.test.tsx @@ -31,55 +31,50 @@ describe('EdgeView', () => { }); test('render full edge graph', () => { - const graphVNode = context.renderElement(graph); - expect(toHTML(graphVNode)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); + let view = context.renderElement(graph); + expect(toHTML(view)).to.not.include('sprotty_unknown').and.not.include('sprotty-missing'); const unknown = graphFactory.createRoot({ type: 'unknown', id: 'unknown', children: [] }); - const unknownVNode = context.renderElement(unknown); - expect(toHTML(unknownVNode)).to.be.equal( + view = context.renderElement(unknown); + expect(toHTML(view)).to.be.equal( 'missing "unknown" view' ); }); test('render edge', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edge') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edge') as GEdge, context); const expectation = '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with routing points', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edgeWithRoutes') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edgeWithRoutes') as GEdge, context); const expectation = '' + ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with padding', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); - const vnode = view.render(graph.index.getById('edgeWithPadding') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(graph.index.getById('edgeWithPadding') as GEdge, context); const mouseHandle = ''; - expect(toHTML(vnode)).to.contains(mouseHandle); + expect(toHTML(view)).to.contains(mouseHandle); }); test('render edge assoziation', () => { - const view = viewRegistry.get(EdgeTypes.ASSOCIATION); - const vnode = view.render(graph.index.getById('assoziation') as GEdge, context); + const view = viewRegistry.get(EdgeTypes.ASSOCIATION).render(graph.index.getById('assoziation') as GEdge, context); const expectation = ''; - expect(toHTML(vnode)).to.be.equal(expectation); + expect(toHTML(view)).to.be.equal(expectation); }); test('render edge with color', () => { - const view = viewRegistry.get(EdgeTypes.DEFAULT); const edge = graph.index.getById('edge') as Edge; edge.args = { color: 'red' }; - const vnode = view.render(edge, context); + const view = viewRegistry.get(EdgeTypes.DEFAULT).render(edge, context); const color = 'style="stroke: red"'; - expect(toHTML(vnode)).to.contain(color); + expect(toHTML(view)).to.contain(color); }); }); diff --git a/packages/editor/src/diagram/views.tsx b/packages/editor/src/diagram/views.tsx index a59b1ed4d..5b0872393 100644 --- a/packages/editor/src/diagram/views.tsx +++ b/packages/editor/src/diagram/views.tsx @@ -28,7 +28,6 @@ import { escapeHtmlWithLineBreaks } from './util'; import { isLaneResizable, LaneResizable } from '../lanes/model'; import { ActivityTypes } from './view-types'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; @injectable() diff --git a/packages/editor/src/edit-label/edit-label-ui.ts b/packages/editor/src/edit-label/edit-label-ui.ts index c15f589f2..d13dfb3e4 100644 --- a/packages/editor/src/edit-label/edit-label-ui.ts +++ b/packages/editor/src/edit-label/edit-label-ui.ts @@ -1,9 +1,9 @@ -import { Action, EditLabelUI, IActionHandler, ICommand, isEditLabelAction, SetUIExtensionVisibilityAction } from '@eclipse-glsp/client'; +import { Action, EditLabelUI, IActionHandler, isEditLabelAction, SetUIExtensionVisibilityAction } from '@eclipse-glsp/client'; import { injectable } from 'inversify'; @injectable() export class IvyEditLabelActionHandler implements IActionHandler { - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (isEditLabelAction(action)) { return SetUIExtensionVisibilityAction.create({ extensionId: IvyEditLabelUI.IVY_ID, @@ -11,6 +11,7 @@ export class IvyEditLabelActionHandler implements IActionHandler { contextElementsId: [action.labelId] }); } + return; } } diff --git a/packages/editor/src/execution/action.test.ts b/packages/editor/src/execution/action.test.ts index 4ec7ed83b..f5e2c6f1f 100644 --- a/packages/editor/src/execution/action.test.ts +++ b/packages/editor/src/execution/action.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import type { ActionDispatcher, FeedbackActionDispatcher } from '@eclipse-glsp/client'; import { Bounds, InitializeCanvasBoundsAction, ModelInitializationConstraint, TYPES } from '@eclipse-glsp/client'; import type { Container } from 'inversify'; diff --git a/packages/editor/src/execution/action.ts b/packages/editor/src/execution/action.ts index 545ba922d..18d5cc1eb 100644 --- a/packages/editor/src/execution/action.ts +++ b/packages/editor/src/execution/action.ts @@ -19,7 +19,7 @@ export class SetExecutedElementsActionHandler implements IActionHandler { protected oldExecutions: ElementExecution[]; - handle(action: Action): Action | void { + handle(action: Action) { if (SetExecutedElementsAction.is(action)) { const feedbackAction = ExecutedFeedbackAction.create({ oldElementExecutions: this.oldExecutions, @@ -47,7 +47,7 @@ export class StoppedActionHandler implements IActionHandler { protected oldStoppedElement: string; - handle(action: Action): Action | void { + handle(action: Action) { if (StoppedAction.is(action)) { const feedbackAction = StoppedFeedbackAction.create({ oldStoppedElement: this.oldStoppedElement, stoppedElement: action.elementId }); if (action.elementId && action.elementId.length > 0) { diff --git a/packages/editor/src/execution/views.tsx b/packages/editor/src/execution/views.tsx index ff9007603..27378e482 100644 --- a/packages/editor/src/execution/views.tsx +++ b/packages/editor/src/execution/views.tsx @@ -2,7 +2,6 @@ import { svg } from '@eclipse-glsp/client'; import type { VNode } from 'snabbdom'; import type { Executable } from './model'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const JSX = { createElement: svg }; export function createExecutionBadge(node: Executable, width: number): VNode | undefined { diff --git a/packages/editor/src/jump/action.ts b/packages/editor/src/jump/action.ts index daff1528e..f124985e0 100644 --- a/packages/editor/src/jump/action.ts +++ b/packages/editor/src/jump/action.ts @@ -23,11 +23,12 @@ export class JumpActionHandler implements IActionHandler { @inject(EditorContextService) protected readonly editorContext: EditorContextService; private jumpStack: Map = new Map(); - handle(action: Action): Action | void { + handle(action: Action) { if (JumpAction.is(action) && !action.noViewportUpdate) { this.updateViewport(action); return SelectAllAction.create(false); } + return; } updateViewport(action: JumpAction) { diff --git a/packages/editor/src/notification/notification-service.ts b/packages/editor/src/notification/notification-service.ts index 47fdd9abb..793a5c120 100644 --- a/packages/editor/src/notification/notification-service.ts +++ b/packages/editor/src/notification/notification-service.ts @@ -2,7 +2,6 @@ import { Action, EndProgressAction, IActionHandler, - ICommand, MessageAction, StartProgressAction, UpdateProgressAction, @@ -17,7 +16,7 @@ export class ToastNotificationService implements IActionHandler { private messageToast?: ReturnType; private progressMessages = new Map(); - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (MessageAction.is(action)) { return this.updateToast(action.message, action.severity); } diff --git a/packages/editor/src/theme/action-handler.ts b/packages/editor/src/theme/action-handler.ts index f384e27df..48c6ecfc6 100644 --- a/packages/editor/src/theme/action-handler.ts +++ b/packages/editor/src/theme/action-handler.ts @@ -1,5 +1,5 @@ import { SwitchThemeAction, ThemeMode } from '@axonivy/process-editor-protocol'; -import { Action, IActionHandler, ICommand } from '@eclipse-glsp/client'; +import { Action, IActionHandler } from '@eclipse-glsp/client'; import { injectable } from 'inversify'; @injectable() @@ -8,7 +8,7 @@ export class SwitchThemeActionHandler implements IActionHandler { return (document.documentElement.dataset.theme as ThemeMode) ?? SwitchThemeActionHandler.prefsColorScheme(); } - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (SwitchThemeAction.is(action)) { const root = document.documentElement; root.dataset.theme = action.theme; diff --git a/packages/editor/src/ui-tools/menu/menu.ts b/packages/editor/src/ui-tools/menu/menu.ts index de2345801..bab90ebe0 100644 --- a/packages/editor/src/ui-tools/menu/menu.ts +++ b/packages/editor/src/ui-tools/menu/menu.ts @@ -68,7 +68,7 @@ export abstract class ItemMenu implements Menu { this.bodyDiv?.remove(); } - // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars protected appendMenuParts(body: HTMLElement): void {} private createPaletteItemSearchField(): HTMLElement { @@ -112,6 +112,7 @@ export abstract class ItemMenu implements Menu { const matchingChildren = itemGroup.children.filter(child => child.label.toLowerCase().includes(filter.toLowerCase())); if (matchingChildren.length > 0) { itemGroup.children.splice(0, itemGroup.children.length); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion matchingChildren.forEach(child => itemGroup.children!.push(child)); filteredPaletteItems.push(itemGroup); } @@ -169,7 +170,7 @@ export abstract class ItemMenu implements Menu { this.navigateUpOrDown(1); } - // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars protected appendItemToGroup(group: HTMLElement): void {} private createToolGroup(parent: HTMLElement, item: PaletteItem): HTMLElement { @@ -211,7 +212,7 @@ export abstract class ItemMenu implements Menu { return button; } - // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars protected appendToToolButton(button: HTMLElement, item: PaletteItem): void {} abstract toolButtonOnClick(item: PaletteItem): Action[]; diff --git a/packages/editor/src/ui-tools/quick-action/color/action-handler.ts b/packages/editor/src/ui-tools/quick-action/color/action-handler.ts index 9625a35f5..5144d7821 100644 --- a/packages/editor/src/ui-tools/quick-action/color/action-handler.ts +++ b/packages/editor/src/ui-tools/quick-action/color/action-handler.ts @@ -1,7 +1,6 @@ import { Action, IActionHandler, - ICommand, PaletteItem, RequestContextActions, SetContextActions, @@ -22,7 +21,7 @@ export class ColorPaletteHandler implements IActionHandler { return this.paletteItems; } - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (UpdatePaletteItems.is(action)) { this.updateColorPalette(); } diff --git a/packages/editor/src/ui-tools/quick-action/color/action.ts b/packages/editor/src/ui-tools/quick-action/color/action.ts index 5445fef5c..e9879ffc5 100644 --- a/packages/editor/src/ui-tools/quick-action/color/action.ts +++ b/packages/editor/src/ui-tools/quick-action/color/action.ts @@ -48,7 +48,7 @@ export class SelectColorQuickActionProvider implements QuickActionProvider { actions = (item: PaletteItem, elementIds: string[]): Action[] => [ ChangeColorOperation.changeColor({ elementIds: elementIds, - color: item.icon!, + color: item.icon ?? '', colorName: item.label }) ]; diff --git a/packages/editor/src/ui-tools/quick-action/color/edit-color-ui.ts b/packages/editor/src/ui-tools/quick-action/color/edit-color-ui.ts index b1efcc2ce..b5558b58a 100644 --- a/packages/editor/src/ui-tools/quick-action/color/edit-color-ui.ts +++ b/packages/editor/src/ui-tools/quick-action/color/edit-color-ui.ts @@ -68,13 +68,14 @@ export class EditColorUi { if (showColorPicker) { const colorDiv = createElement('div', ['color-picker']); this.colorPickerDecorator = createElement('span', ['decorator']); - this.colorPickerInput = document.createElement('input'); - this.colorPickerDecorator.onclick = () => this.colorPickerInput!.click(); - this.colorPickerInput.type = 'color'; - this.colorPickerInput.onchange = e => this.colorInputChange(e.target); - input.onchange = e => this.colorInputChange(e.target); + const colorInput = document.createElement('input'); + this.colorPickerDecorator.onclick = () => colorInput.click(); + colorInput.type = 'color'; + colorInput.onchange = e => this.colorInputChange(e.target); + colorInput.onchange = e => this.colorInputChange(e.target); + this.colorPickerInput = colorInput; colorDiv.appendChild(this.colorPickerDecorator); - colorDiv.appendChild(this.colorPickerInput); + colorDiv.appendChild(colorInput); colorDiv.appendChild(input); div.appendChild(colorDiv); } else { @@ -84,11 +85,11 @@ export class EditColorUi { } private colorInputChange(inputElement: EventTarget | null): void { - if (inputElement instanceof HTMLInputElement) { + if (inputElement instanceof HTMLInputElement && this.colorPickerInput && this.colorPickerDecorator && this.colorInput) { const value = inputElement.value; - this.colorPickerInput!.value = value; - this.colorPickerDecorator!.style.backgroundColor = value; - this.colorInput!.value = value; + this.colorPickerInput.value = value; + this.colorPickerDecorator.style.backgroundColor = value; + this.colorInput.value = value; } } diff --git a/packages/editor/src/ui-tools/quick-action/quick-action-ui.test.ts b/packages/editor/src/ui-tools/quick-action/quick-action-ui.test.ts index 71da1cfee..345ab6f5f 100644 --- a/packages/editor/src/ui-tools/quick-action/quick-action-ui.test.ts +++ b/packages/editor/src/ui-tools/quick-action/quick-action-ui.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import type { GModelRoot } from '@eclipse-glsp/client'; import { describe, test, beforeAll, expect } from 'vitest'; import { diff --git a/packages/editor/src/ui-tools/quick-action/quick-action-ui.ts b/packages/editor/src/ui-tools/quick-action/quick-action-ui.ts index f78654473..8cec776c3 100644 --- a/packages/editor/src/ui-tools/quick-action/quick-action-ui.ts +++ b/packages/editor/src/ui-tools/quick-action/quick-action-ui.ts @@ -13,7 +13,6 @@ import { GRoutableElement, IActionDispatcherProvider, IActionHandler, - ICommand, ISelectionListener, MouseListener, PaletteItem, @@ -88,7 +87,7 @@ export class QuickActionUI extends GLSPAbstractUIExtension implements IActionHan } } - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (ShowQuickActionMenuAction.is(action)) { this.showItemMenu(action); } diff --git a/packages/editor/src/ui-tools/quick-action/types/action-handler.ts b/packages/editor/src/ui-tools/quick-action/types/action-handler.ts index a3ecad433..34dced5c4 100644 --- a/packages/editor/src/ui-tools/quick-action/types/action-handler.ts +++ b/packages/editor/src/ui-tools/quick-action/types/action-handler.ts @@ -2,7 +2,6 @@ import { UpdatePaletteItems } from '@axonivy/process-editor-protocol'; import { Action, IActionHandler, - ICommand, PaletteItem, RequestContextActions, SetContextActions, @@ -21,7 +20,7 @@ export class TypesPaletteHandler implements IActionHandler { return this.paletteItems; } - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (UpdatePaletteItems.is(action)) { this.updateActivityTypePalette(); } diff --git a/packages/editor/src/ui-tools/tool-bar/button.ts b/packages/editor/src/ui-tools/tool-bar/button.ts index e32e2fd9d..e18c5d4cf 100644 --- a/packages/editor/src/ui-tools/tool-bar/button.ts +++ b/packages/editor/src/ui-tools/tool-bar/button.ts @@ -94,7 +94,8 @@ export class OptionsButtonProvider implements ToolBarButtonProvider { button() { const customIconState = () => this.customIconHandler.isShowCustomIcons; const grid = () => this.gridManager.isGridVisible; - const theme = this.switchThemeHandler ? () => this.switchThemeHandler!.theme() : undefined; + const handler = this.switchThemeHandler; + const theme = handler ? () => handler.theme() : undefined; return { icon: IvyIcons.Settings, title: 'Settings', diff --git a/packages/editor/src/ui-tools/tool-bar/node/action-handler.ts b/packages/editor/src/ui-tools/tool-bar/node/action-handler.ts index a5eccd148..f9bc1c000 100644 --- a/packages/editor/src/ui-tools/tool-bar/node/action-handler.ts +++ b/packages/editor/src/ui-tools/tool-bar/node/action-handler.ts @@ -1,7 +1,6 @@ import { Action, IActionHandler, - ICommand, PaletteItem, RequestContextActions, SetContextActions, @@ -38,7 +37,7 @@ export class ElementsPaletteHandler implements IActionHandler { return this.extensionItems; } - handle(action: Action): void | Action | ICommand { + handle(action: Action) { if (UpdatePaletteItems.is(action)) { this.updateElementPalette(); } diff --git a/packages/editor/src/ui-tools/tool-bar/options/action-handler.ts b/packages/editor/src/ui-tools/tool-bar/options/action-handler.ts index 65979a672..13ae0f456 100644 --- a/packages/editor/src/ui-tools/tool-bar/options/action-handler.ts +++ b/packages/editor/src/ui-tools/tool-bar/options/action-handler.ts @@ -6,11 +6,12 @@ import { injectable } from 'inversify'; export class CustomIconToggleActionHandler implements IActionHandler { private showCustomIcons = true; - handle(action: Action): Action | void { + handle(action: Action) { if (CustomIconToggleAction.is(action)) { this.showCustomIcons = action.showCustomIcons; return ReloadModelAction.create(); } + return; } get isShowCustomIcons(): boolean { diff --git a/packages/editor/src/ui-tools/tool-bar/tool-bar.ts b/packages/editor/src/ui-tools/tool-bar/tool-bar.ts index ad409f375..fb1d17c30 100644 --- a/packages/editor/src/ui-tools/tool-bar/tool-bar.ts +++ b/packages/editor/src/ui-tools/tool-bar/tool-bar.ts @@ -6,7 +6,6 @@ import { EnableDefaultToolsAction, EnableToolPaletteAction, IActionHandler, - ICommand, IEditModeListener, ISelectionListener, MouseListener, @@ -170,7 +169,7 @@ export class ToolBar extends GLSPAbstractUIExtension implements IActionHandler, this.actionDispatcher.dispatchAll(actions.concat(SelectAllAction.create(false))); } - handle(action: Action): ICommand | Action | void { + handle(action: Action) { if (EnableToolPaletteAction.is(action)) { return SetUIExtensionVisibilityAction.create({ extensionId: ToolBar.ID, visible: true }); } @@ -189,6 +188,7 @@ export class ToolBar extends GLSPAbstractUIExtension implements IActionHandler, this.createHeader(); } } + return; } async toggleToolBarMenu(action: ShowToolBarMenuAction): Promise { diff --git a/packages/editor/src/ui-tools/viewport/viewport-bar.ts b/packages/editor/src/ui-tools/viewport/viewport-bar.ts index 6b7cd2886..59d696651 100644 --- a/packages/editor/src/ui-tools/viewport/viewport-bar.ts +++ b/packages/editor/src/ui-tools/viewport/viewport-bar.ts @@ -2,7 +2,6 @@ import { Action, EditorContextService, IActionHandler, - ICommand, isViewport, IToolManager, SetUIExtensionVisibilityAction, @@ -84,7 +83,7 @@ export class ViewportBar extends GLSPAbstractUIExtension implements IActionHandl return button; } - handle(action: Action): ICommand | Action | void { + handle(action: Action) { if (EnableViewportAction.is(action)) { this.actionDispatcher.dispatch(SetUIExtensionVisibilityAction.create({ extensionId: ViewportBar.ID, visible: true })); } diff --git a/packages/editor/src/utils/element-css-classes.test.ts b/packages/editor/src/utils/element-css-classes.test.ts index d3096f642..a457523dd 100644 --- a/packages/editor/src/utils/element-css-classes.test.ts +++ b/packages/editor/src/utils/element-css-classes.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import { GNode, addCssClassToElements, addCssClasses, removeCssClassOfElements, removeCssClasses } from '@eclipse-glsp/client'; import { describe, test, expect, afterEach } from 'vitest'; diff --git a/packages/editor/src/utils/test-utils.ts b/packages/editor/src/utils/test-utils.ts index 9e84e5177..f77c2ee32 100644 --- a/packages/editor/src/utils/test-utils.ts +++ b/packages/editor/src/utils/test-utils.ts @@ -15,7 +15,7 @@ * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -/* eslint-disable no-unused-expressions */ + import type { ActionMessage, ContainerConfiguration, IDiagramOptions } from '@eclipse-glsp/client'; import { BaseJsonrpcGLSPClient, diff --git a/packages/inscription-core/.eslintrc.cjs b/packages/inscription-core/.eslintrc.cjs deleted file mode 100644 index 6753441b5..000000000 --- a/packages/inscription-core/.eslintrc.cjs +++ /dev/null @@ -1,11 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - }, - rules: { - '@typescript-eslint/no-explicit-any': 'off' - } -}; diff --git a/packages/inscription-core/package.json b/packages/inscription-core/package.json index b7b446a2f..b94669054 100644 --- a/packages/inscription-core/package.json +++ b/packages/inscription-core/package.json @@ -14,7 +14,7 @@ "src" ], "dependencies": { - "@axonivy/jsonrpc": "~13.1.0-next.415", + "@axonivy/jsonrpc": "~13.1.0-next.419", "@axonivy/process-editor-inscription-protocol": "~13.1.0-next", "monaco-editor": "^0.44.0", "monaco-editor-workers": "^0.44.0", @@ -30,8 +30,6 @@ "build": "tsc --build && tscp", "package": "tsc && tscp", "build:clean": "npm run clean && npm run build", - "type": "tsc --noEmit", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src" + "type": "tsc --noEmit" } } diff --git a/packages/inscription-core/src/console-util.ts b/packages/inscription-core/src/console-util.ts index f5b036c10..18725d58d 100644 --- a/packages/inscription-core/src/console-util.ts +++ b/packages/inscription-core/src/console-util.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export function logIf(condition?: boolean, message?: any, ...optionalParams: any[]): void { if (condition) { console.log(message, ...optionalParams); diff --git a/packages/inscription-core/src/inscription-client-jsonrpc.ts b/packages/inscription-core/src/inscription-client-jsonrpc.ts index 764de24c3..137623f6f 100644 --- a/packages/inscription-core/src/inscription-client-jsonrpc.ts +++ b/packages/inscription-core/src/inscription-client-jsonrpc.ts @@ -78,6 +78,7 @@ export class InscriptionClientJsonRpc extends BaseRpcClient implements Inscripti onNotification( kind: K, + // eslint-disable-next-line @typescript-eslint/no-explicit-any listener: (args: InscriptionNotificationTypes[K]) => any ): Disposable { return this.connection.onNotification(kind, listener); diff --git a/packages/inscription-core/src/ivy-script-client.ts b/packages/inscription-core/src/ivy-script-client.ts index d23f66ace..b2d3f4517 100644 --- a/packages/inscription-core/src/ivy-script-client.ts +++ b/packages/inscription-core/src/ivy-script-client.ts @@ -5,7 +5,7 @@ export namespace IvyScriptLanguage { return urlBuilder(url, 'ivy-script-lsp'); } - export async function startClient(connection: Connection, isMonacoReady: Promise) { + export async function startClient(connection: Connection, isMonacoReady: Promise) { await isMonacoReady; const { MonacoLanguageClient } = await import('monaco-languageclient'); const client = new MonacoLanguageClient({ diff --git a/packages/inscription-core/src/monaco-util.ts b/packages/inscription-core/src/monaco-util.ts index d0d19e0b7..dfe10993a 100644 --- a/packages/inscription-core/src/monaco-util.ts +++ b/packages/inscription-core/src/monaco-util.ts @@ -10,6 +10,7 @@ import type * as monacoEditorApi from 'monaco-editor'; import { ConsoleTimer, logIf } from './console-util'; export type MonacoEditorApi = typeof monacoEditorApi; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type WorkerConstructor = (new (...args: any) => Worker) | (new (...args: any) => Promise); // from monaco-editor-workers diff --git a/packages/inscription-protocol/.eslintrc.cjs b/packages/inscription-protocol/.eslintrc.cjs deleted file mode 100644 index af41589b2..000000000 --- a/packages/inscription-protocol/.eslintrc.cjs +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['schemaCodegen.cjs'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - }, - rules: { - '@typescript-eslint/no-explicit-any': 'off' - } -}; diff --git a/packages/inscription-protocol/package.json b/packages/inscription-protocol/package.json index a08104a89..71b8d5406 100644 --- a/packages/inscription-protocol/package.json +++ b/packages/inscription-protocol/package.json @@ -23,9 +23,7 @@ "package": "tsc", "build:clean": "npm run clean && npm run generate && npm run build", "generate": "node ./schemaCodegen.cjs", - "type": "tsc --noEmit", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src" + "type": "tsc --noEmit" }, "devDependencies": { "json-schema-to-typescript": "^13.1.1" diff --git a/packages/inscription-protocol/src/inscription-client.ts b/packages/inscription-protocol/src/inscription-client.ts index 69f697c37..ad7d0e62e 100644 --- a/packages/inscription-protocol/src/inscription-client.ts +++ b/packages/inscription-protocol/src/inscription-client.ts @@ -3,6 +3,7 @@ import type { InscriptionData, InscriptionSaveData } from './data/inscription-da import type { InscriptionMetaRequestTypes } from './inscription-protocol'; export interface Event { + // eslint-disable-next-line @typescript-eslint/no-explicit-any (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable; } diff --git a/packages/inscription-protocol/src/inscription-protocol.ts b/packages/inscription-protocol/src/inscription-protocol.ts index 27f0aae3c..3c822167b 100644 --- a/packages/inscription-protocol/src/inscription-protocol.ts +++ b/packages/inscription-protocol/src/inscription-protocol.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-invalid-void-type */ import type { CallableStart, ConnectorRef, diff --git a/packages/inscription-protocol/src/utils/type-helper.ts b/packages/inscription-protocol/src/utils/type-helper.ts index 64ba02e75..f76b18088 100644 --- a/packages/inscription-protocol/src/utils/type-helper.ts +++ b/packages/inscription-protocol/src/utils/type-helper.ts @@ -10,6 +10,7 @@ declare const brand: unique symbol; export type Brand = T & { [brand]: TBrand }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export type Prettify = { diff --git a/packages/inscription-view/.eslintrc.cjs b/packages/inscription-view/.eslintrc.cjs deleted file mode 100644 index 7e0ebbe0d..000000000 --- a/packages/inscription-view/.eslintrc.cjs +++ /dev/null @@ -1,10 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['vitest.config.mts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - }, - plugins: ['@tanstack/query', 'testing-library'] -}; diff --git a/packages/inscription-view/package.json b/packages/inscription-view/package.json index ca08fe810..06919e9ea 100644 --- a/packages/inscription-view/package.json +++ b/packages/inscription-view/package.json @@ -16,8 +16,8 @@ "dependencies": { "@axonivy/process-editor-inscription-core": "~13.1.0-next", "@axonivy/process-editor-inscription-protocol": "~13.1.0-next", - "@axonivy/ui-components": "~13.1.0-next.415", - "@axonivy/ui-icons": "~13.1.0-next.415", + "@axonivy/ui-components": "~13.1.0-next.419", + "@axonivy/ui-icons": "~13.1.0-next.419", "@monaco-editor/react": "^4.6.0", "@radix-ui/react-dialog": "1.1.2", "@radix-ui/react-radio-group": "1.2.1", @@ -36,13 +36,11 @@ "react": "^18.2 || ^19.0" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "5.32.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@types/react": "^18.3.4", "deepmerge-ts": "^5.1.0", - "eslint-plugin-testing-library": "^7.1.1", "jsdom": "^25.0.1", "react": "^18.3.1", "react-dom": "^18.3.1" @@ -57,8 +55,6 @@ "package": "tsc -p tsconfig.production.json && tscp", "build:clean": "npm run clean && npm run build", "type": "tsc --noEmit", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src", "test": "vitest", "test:ci": "vitest --watch=false" } diff --git a/packages/inscription-view/src/App.tsx b/packages/inscription-view/src/App.tsx index 9b4e41088..027ff3be7 100644 --- a/packages/inscription-view/src/App.tsx +++ b/packages/inscription-view/src/App.tsx @@ -32,15 +32,15 @@ function App({ outline, app, pmv, pid }: InscriptionElementContext & Inscription const queryKeys = useMemo(() => { return { - data: () => ['data', context], - saveData: () => ['saveData', context], - validation: () => ['validations', context] + data: (context: InscriptionElementContext) => ['data', context], + saveData: (context: InscriptionElementContext) => ['saveData', context], + validation: (context: InscriptionElementContext) => ['validations', context] }; - }, [context]); + }, []); useEffect(() => { - const validationDispose = client.onValidation(() => queryClient.invalidateQueries({ queryKey: queryKeys.validation() })); - const dataDispose = client.onDataChanged(() => queryClient.invalidateQueries({ queryKey: queryKeys.data() })); + const validationDispose = client.onValidation(() => queryClient.invalidateQueries({ queryKey: queryKeys.validation(context) })); + const dataDispose = client.onDataChanged(() => queryClient.invalidateQueries({ queryKey: queryKeys.data(context) })); return () => { validationDispose.dispose(); dataDispose.dispose(); @@ -48,7 +48,7 @@ function App({ outline, app, pmv, pid }: InscriptionElementContext & Inscription }, [client, context, queryClient, queryKeys]); const { data, isSuccess, isPending, isError, error } = useQuery({ - queryKey: queryKeys.data(), + queryKey: queryKeys.data(context), queryFn: () => client.data(context), structuralSharing: false }); @@ -63,16 +63,16 @@ function App({ outline, app, pmv, pid }: InscriptionElementContext & Inscription }, [context.pid, data, initData, isSuccess]); const { data: validations } = useQuery({ - queryKey: queryKeys.validation(), + queryKey: queryKeys.validation(context), queryFn: () => client.validate(context), initialData: [], enabled: isSuccess }); const mutation = useMutation({ - mutationKey: queryKeys.saveData(), + mutationKey: queryKeys.saveData(context), mutationFn: (updateData: Unary) => { - const saveData = queryClient.setQueryData(queryKeys.data(), prevData => { + const saveData = queryClient.setQueryData(queryKeys.data(context), prevData => { if (prevData) { return { ...prevData, data: updateData(prevData.data) }; } @@ -83,7 +83,7 @@ function App({ outline, app, pmv, pid }: InscriptionElementContext & Inscription } return Promise.resolve([]); }, - onSuccess: (data: ValidationResult[]) => queryClient.setQueryData(queryKeys.validation(), data) + onSuccess: (data: ValidationResult[]) => queryClient.setQueryData(queryKeys.validation(context), data) }); if (isPending) { diff --git a/packages/inscription-view/src/components/parts/call/CallSelect.test.tsx b/packages/inscription-view/src/components/parts/call/CallSelect.test.tsx index 50295066c..1efa5519d 100644 --- a/packages/inscription-view/src/components/parts/call/CallSelect.test.tsx +++ b/packages/inscription-view/src/components/parts/call/CallSelect.test.tsx @@ -2,6 +2,7 @@ import CallSelect from './CallSelect'; import { render, screen, userEvent } from 'test-utils'; import type { CallableStart } from '@axonivy/process-editor-inscription-protocol'; import { describe, test, expect } from 'vitest'; +import { IvyIcons } from '@axonivy/ui-icons'; describe('CallSelect', () => { const DEPRECATED_STYLE = 'text-decoration: line-through'; @@ -35,8 +36,7 @@ describe('CallSelect', () => { } } ]; - //@ts-ignore - render( {}} startIcon='' />); + render( {}} startIcon={IvyIcons.ActivitiesGroup} />); } test('deprecated option', async () => { diff --git a/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.test.tsx b/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.test.tsx index b801e99a4..2e57be190 100644 --- a/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.test.tsx +++ b/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.test.tsx @@ -16,7 +16,6 @@ describe('CustomFieldTable', () => { const view = render( (data = change)} type='CASE' />); return { data: () => data, - // eslint-disable-next-line testing-library/no-unnecessary-act rerender: () => view.rerender( (data = change)} type='CASE' />) }; } diff --git a/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.tsx b/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.tsx index 188b24dde..d7451c3f3 100644 --- a/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.tsx +++ b/packages/inscription-view/src/components/parts/common/customfield/CustomFieldTable.tsx @@ -61,7 +61,7 @@ const CustomFieldTable = ({ data, onChange, type }: CustomFieldTableProps) => { const updatedData = data.map((row, index) => { if (index === rowIndex) { return { - ...data[rowIndex]!, + ...data[rowIndex], [columnId]: value }; } diff --git a/packages/inscription-view/src/components/parts/common/customfield/StartCustomFieldTable.test.tsx b/packages/inscription-view/src/components/parts/common/customfield/StartCustomFieldTable.test.tsx index d06d5bce6..c3e0d10b6 100644 --- a/packages/inscription-view/src/components/parts/common/customfield/StartCustomFieldTable.test.tsx +++ b/packages/inscription-view/src/components/parts/common/customfield/StartCustomFieldTable.test.tsx @@ -16,7 +16,6 @@ describe('StartCustomFieldTable', () => { const view = render( (data = change)} />); return { data: () => data, - // eslint-disable-next-line testing-library/no-unnecessary-act rerender: () => view.rerender( (data = change)} />) }; } diff --git a/packages/inscription-view/src/components/parts/common/mapping-tree/mapping-tree-data.ts b/packages/inscription-view/src/components/parts/common/mapping-tree/mapping-tree-data.ts index c62b3ea4d..a7ab7d857 100644 --- a/packages/inscription-view/src/components/parts/common/mapping-tree/mapping-tree-data.ts +++ b/packages/inscription-view/src/components/parts/common/mapping-tree/mapping-tree-data.ts @@ -95,7 +95,7 @@ export namespace MappingTreeData { }; } else { return { - ...data[rowIndex]!, + ...data[rowIndex], children: updateDeep(rowData.children, subRows, columnId, value) }; } diff --git a/packages/inscription-view/src/components/parts/common/parameter/ParameterTable.test.tsx b/packages/inscription-view/src/components/parts/common/parameter/ParameterTable.test.tsx index 07e7b7054..b9f7ff1ea 100644 --- a/packages/inscription-view/src/components/parts/common/parameter/ParameterTable.test.tsx +++ b/packages/inscription-view/src/components/parts/common/parameter/ParameterTable.test.tsx @@ -16,7 +16,6 @@ describe('ParameterTable', () => { const view = render( (data = change)} />); return { data: () => data, - // eslint-disable-next-line testing-library/no-unnecessary-act rerender: () => view.rerender( (data = change)} />) }; } diff --git a/packages/inscription-view/src/components/parts/common/permission/Permission.test.tsx b/packages/inscription-view/src/components/parts/common/permission/Permission.test.tsx index ead312d93..3bea0b6e7 100644 --- a/packages/inscription-view/src/components/parts/common/permission/Permission.test.tsx +++ b/packages/inscription-view/src/components/parts/common/permission/Permission.test.tsx @@ -1,42 +1,42 @@ -import { CollapsableUtil, SelectUtil, render, screen } from 'test-utils'; -import { Permission } from './Permission'; -import { describe, test, expect } from 'vitest'; - -const defaultConfig = { anonymous: true, error: 'Everybody', role: 'ivy:security:forbidden' }; - -describe('Permission', () => { - function renderPart(anonymousFieldActive: boolean, anonymous: boolean, error: string, role: string) { - render( - {}} - /> - ); - } - - test('data', async () => { - renderPart(false, true, 'bla error', 'Test'); - await CollapsableUtil.assertOpen('Permission'); - SelectUtil.assertValue('Test', { label: 'Role' }); - SelectUtil.assertValue('>> Ignore Exception', { label: 'Violation error' }); - expect(screen.queryByText('Anonymous')).not.toBeInTheDocument(); - }); - - test('closed if empty', async () => { - renderPart(false, true, 'Everybody', 'ivy:security:forbidden'); - await CollapsableUtil.assertClosed('Permission'); - }); - - test('allowIsAvailable', async () => { - renderPart(true, false, 'bla error', 'Test'); - expect(screen.queryByText('Allow anonymous')).toBeInTheDocument(); - expect(screen.queryByText('Role')).toBeInTheDocument(); - }); - - test('roleIsDisabled', async () => { - renderPart(true, true, 'bla error', 'Test'); - expect(screen.queryByText('Role')).not.toBeInTheDocument(); - }); -}); +import { CollapsableUtil, SelectUtil, render, screen } from 'test-utils'; +import { Permission } from './Permission'; +import { describe, test, expect } from 'vitest'; + +const defaultConfig = { anonymous: true, error: 'Everybody', role: 'ivy:security:forbidden' }; + +describe('Permission', () => { + function renderPart(anonymousFieldActive: boolean, anonymous: boolean, error: string, role: string) { + render( + {}} + /> + ); + } + + test('data', async () => { + renderPart(false, true, 'bla error', 'Test'); + await CollapsableUtil.assertOpen('Permission'); + SelectUtil.assertValue('Test', { label: 'Role' }); + SelectUtil.assertValue('>> Ignore Exception', { label: 'Violation error' }); + expect(screen.queryByText('Anonymous')).not.toBeInTheDocument(); + }); + + test('closed if empty', async () => { + renderPart(false, true, 'Everybody', 'ivy:security:forbidden'); + await CollapsableUtil.assertClosed('Permission'); + }); + + test('allowIsAvailable', async () => { + renderPart(true, false, 'bla error', 'Test'); + expect(screen.getByText('Allow anonymous')).toBeInTheDocument(); + expect(screen.getByText('Role')).toBeInTheDocument(); + }); + + test('roleIsDisabled', async () => { + renderPart(true, true, 'bla error', 'Test'); + expect(screen.queryByText('Role')).not.toBeInTheDocument(); + }); +}); diff --git a/packages/inscription-view/src/components/parts/common/table/useResizableEditableTable.tsx b/packages/inscription-view/src/components/parts/common/table/useResizableEditableTable.tsx index e61d2ba13..919f14c4b 100644 --- a/packages/inscription-view/src/components/parts/common/table/useResizableEditableTable.tsx +++ b/packages/inscription-view/src/components/parts/common/table/useResizableEditableTable.tsx @@ -29,7 +29,7 @@ const useResizableEditableTable = ({ const updatedData = data.map((row, index) => { if (index === rowIndex) { return { - ...data[rowIndex]!, + ...data[rowIndex], [columnId]: value }; } diff --git a/packages/inscription-view/src/components/parts/condition/condition.test.ts b/packages/inscription-view/src/components/parts/condition/condition.test.ts index 59f729b3f..731e5d8bd 100644 --- a/packages/inscription-view/src/components/parts/condition/condition.test.ts +++ b/packages/inscription-view/src/components/parts/condition/condition.test.ts @@ -43,14 +43,12 @@ describe('Condition', () => { }); test('replace - undefined', () => { - //@ts-ignore - const ref: ConnectorRef = undefined; + const ref = undefined as unknown as ConnectorRef; expect(Condition.replace(cloneObject(conditions), ref)).toEqual(conditions); }); test('replace - null', () => { - //@ts-ignore - const ref: ConnectorRef = null; + const ref = null as unknown as ConnectorRef; expect(Condition.replace(cloneObject(conditions), ref)).toEqual(conditions); }); diff --git a/packages/inscription-view/src/components/parts/name/document/DocumentTable.test.tsx b/packages/inscription-view/src/components/parts/name/document/DocumentTable.test.tsx index 41a0a4340..f59dca41a 100644 --- a/packages/inscription-view/src/components/parts/name/document/DocumentTable.test.tsx +++ b/packages/inscription-view/src/components/parts/name/document/DocumentTable.test.tsx @@ -16,7 +16,6 @@ describe('DocumentTable', () => { const view = render( (data = change)} />); return { data: () => data, - // eslint-disable-next-line testing-library/no-unnecessary-act rerender: () => view.rerender( (data = change)} />) }; } diff --git a/packages/inscription-view/src/components/parts/output/OutputPart.test.tsx b/packages/inscription-view/src/components/parts/output/OutputPart.test.tsx index d0ab32b55..08fd557e1 100644 --- a/packages/inscription-view/src/components/parts/output/OutputPart.test.tsx +++ b/packages/inscription-view/src/components/parts/output/OutputPart.test.tsx @@ -1,5 +1,5 @@ import type { DeepPartial } from 'test-utils'; -import { render, screen, TableUtil, renderHook, waitFor, CollapsableUtil } from 'test-utils'; +import { render, screen, TableUtil, renderHook, CollapsableUtil } from 'test-utils'; import { useOutputPart } from './OutputPart'; import type { PartStateFlag } from '../../editors/part/usePart'; import type { ElementData, OutputData } from '@axonivy/process-editor-inscription-protocol'; @@ -34,7 +34,7 @@ describe('OutputPart', () => { test('enable Sudo', async () => { renderPart({ sudo: true }, true); - await waitFor(() => expect(screen.queryByLabelText(/Disable Permission/)).toBeInTheDocument()); + await screen.findByLabelText(/Disable Permission/); }); function assertState(expectedState: PartStateFlag, data?: Partial, showSudo?: boolean) { diff --git a/packages/inscription-view/src/components/parts/query/database/TableFields.tsx b/packages/inscription-view/src/components/parts/query/database/TableFields.tsx index 2bbc1a542..d9df1661e 100644 --- a/packages/inscription-view/src/components/parts/query/database/TableFields.tsx +++ b/packages/inscription-view/src/components/parts/query/database/TableFields.tsx @@ -79,7 +79,7 @@ export const TableFields = () => { .map((row, index) => { if (index === rowIndex) { return { - ...data[rowIndex]!, + ...data[rowIndex], [columnId]: value }; } diff --git a/packages/inscription-view/src/components/parts/query/database/TableSort.tsx b/packages/inscription-view/src/components/parts/query/database/TableSort.tsx index 52b629ba1..1fac77aac 100644 --- a/packages/inscription-view/src/components/parts/query/database/TableSort.tsx +++ b/packages/inscription-view/src/components/parts/query/database/TableSort.tsx @@ -109,7 +109,7 @@ export const TableSort = () => { const newData = data.map((row, index) => { if (index === rowIndex) { return { - ...data[rowIndex]!, + ...data[rowIndex], [columnId]: value }; } diff --git a/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestBody.test.tsx b/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestBody.test.tsx index 90626a5a0..443f86f32 100644 --- a/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestBody.test.tsx +++ b/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestBody.test.tsx @@ -38,27 +38,26 @@ describe('RestBody', () => { describe('useBodyTypes', () => { function renderTypesHook(currentType: InputType, restResource?: DeepPartial) { - const view = renderHook(() => useBodyTypes(currentType), { wrapperProps: { meta: { restResource } } }); - return view.result; + return renderHook(() => useBodyTypes(currentType), { wrapperProps: { meta: { restResource } } }); } test('no openapi', async () => { - expect(renderTypesHook('ENTITY').current).toHaveLength(3); + expect(renderTypesHook('ENTITY').result.current).toHaveLength(3); }); test('form body', async () => { const restResource: DeepPartial = { method: { inBody: { media: 'multipart/form-data' } } }; - let result = renderTypesHook('FORM', restResource); + let { result } = renderTypesHook('FORM', restResource); await waitFor(() => expect(result.current).toHaveLength(0)); - result = renderTypesHook('RAW', restResource); + result = renderTypesHook('RAW', restResource).result; await waitFor(() => expect(result.current).toHaveLength(3)); }, 1000); test('entity body', async () => { const restResource: DeepPartial = { method: { inBody: { media: 'other' } } }; - let result = renderTypesHook('ENTITY', restResource); + let { result } = renderTypesHook('ENTITY', restResource); await waitFor(() => expect(result.current).toHaveLength(2)); - result = renderTypesHook('FORM', restResource); + result = renderTypesHook('FORM', restResource).result; await waitFor(() => expect(result.current).toHaveLength(3)); }, 1000); }); diff --git a/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestContentType.test.tsx b/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestContentType.test.tsx index d631d1abf..d760c6b1e 100644 --- a/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestContentType.test.tsx +++ b/packages/inscription-view/src/components/parts/rest/rest-request/rest-body/RestContentType.test.tsx @@ -18,7 +18,7 @@ describe('RestContentType', () => { test('show', async () => { renderPart({ body: { type: 'RAW' } }, { method: {} }); - await waitFor(() => expect(screen.getByRole('combobox')).toBeInTheDocument()); + await screen.findByRole('combobox'); }); test('empty', async () => { diff --git a/packages/inscription-view/src/components/parts/task/TaskPart.test.tsx b/packages/inscription-view/src/components/parts/task/TaskPart.test.tsx index 3c9d76231..043eacc8b 100644 --- a/packages/inscription-view/src/components/parts/task/TaskPart.test.tsx +++ b/packages/inscription-view/src/components/parts/task/TaskPart.test.tsx @@ -14,7 +14,6 @@ const Part = () => { describe('TaskPart', () => { function renderEmptyPart() { - //@ts-ignore render(, { wrapperProps: { defaultData: { task: undefined } } }); } diff --git a/packages/inscription-view/src/components/parts/web-service/WebServicePart.test.tsx b/packages/inscription-view/src/components/parts/web-service/WebServicePart.test.tsx index 4f34e1dba..19bb41e31 100644 --- a/packages/inscription-view/src/components/parts/web-service/WebServicePart.test.tsx +++ b/packages/inscription-view/src/components/parts/web-service/WebServicePart.test.tsx @@ -19,8 +19,8 @@ describe('WebServicePart', () => { test('empty data', async () => { renderPart(); - expect(screen.queryByText('Permission')).toBeInTheDocument(); - expect(screen.queryByText('Exception')).toBeInTheDocument(); + expect(screen.getByText('Permission')).toBeInTheDocument(); + expect(screen.getByText('Exception')).toBeInTheDocument(); }); function assertState(expectedState: PartStateFlag, data?: DeepPartial, validation?: ValidationResult) { diff --git a/packages/inscription-view/src/components/widgets/code-editor/CodeEditor.tsx b/packages/inscription-view/src/components/widgets/code-editor/CodeEditor.tsx index eb08217ba..05c9e3563 100644 --- a/packages/inscription-view/src/components/widgets/code-editor/CodeEditor.tsx +++ b/packages/inscription-view/src/components/widgets/code-editor/CodeEditor.tsx @@ -28,9 +28,9 @@ export const CodeEditor = ({ value, onChange, context, macro, onMountFuncs, opti const handlePlaceholder = (showPlaceholder: boolean) => { if (placeholderElement.current) { if (showPlaceholder) { - placeholderElement!.current.style.display = 'block'; + placeholderElement.current.style.display = 'block'; } else { - placeholderElement!.current.style.display = 'none'; + placeholderElement.current.style.display = 'none'; } } }; diff --git a/packages/inscription-view/src/components/widgets/combobox/Combobox.tsx b/packages/inscription-view/src/components/widgets/combobox/Combobox.tsx index d065d9829..679c6001e 100644 --- a/packages/inscription-view/src/components/widgets/combobox/Combobox.tsx +++ b/packages/inscription-view/src/components/widgets/combobox/Combobox.tsx @@ -113,6 +113,7 @@ const Combobox = ({ macro={true} onMountFuncs={[setEditor]} /> + {/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */} {browserTypes || (macro && browserTypes!) ? ( { expect(screen.queryByRole('listbox')).not.toBeInTheDocument(); await userEvent.keyboard('[Enter]'); - expect(screen.queryByRole('listbox')).toBeInTheDocument(); + expect(screen.getByRole('listbox')).toBeInTheDocument(); await userEvent.keyboard('[Enter]'); expect(screen.queryByRole('listbox')).not.toBeInTheDocument(); await userEvent.keyboard('[Space]'); - expect(screen.queryByRole('listbox')).toBeInTheDocument(); + expect(screen.getByRole('listbox')).toBeInTheDocument(); const option1 = screen.getByRole('option', { name: 'label' }); const option2 = screen.getByRole('option', { name: 'test' }); diff --git a/packages/inscription-view/src/test-utils/combobox-utils.tsx b/packages/inscription-view/src/test-utils/combobox-utils.tsx index 0c15e2144..b71e039e2 100644 --- a/packages/inscription-view/src/test-utils/combobox-utils.tsx +++ b/packages/inscription-view/src/test-utils/combobox-utils.tsx @@ -12,7 +12,7 @@ export namespace ComboboxUtil { return screen.getByRole('combobox', { name: options.label }); } if (options?.nth !== undefined) { - return screen.getAllByRole('combobox').at(options.nth)!; + return screen.getAllByRole('combobox')[options.nth]; } return screen.getByRole('combobox'); } diff --git a/packages/inscription-view/src/test-utils/setupTests.tsx b/packages/inscription-view/src/test-utils/setupTests.tsx index d07199434..18f0f9df2 100644 --- a/packages/inscription-view/src/test-utils/setupTests.tsx +++ b/packages/inscription-view/src/test-utils/setupTests.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint-disable @typescript-eslint/no-explicit-any */ // jest-dom adds custom jest matchers for asserting on DOM nodes. // allows you to do things like: @@ -13,7 +14,6 @@ afterEach(() => cleanup()); //@ts-ignore global.IntersectionObserver = class IntersectionObserver { - constructor() {} observe() { return null; } diff --git a/packages/inscription-view/src/test-utils/test-utils.tsx b/packages/inscription-view/src/test-utils/test-utils.tsx index ce3575c35..222b928e8 100644 --- a/packages/inscription-view/src/test-utils/test-utils.tsx +++ b/packages/inscription-view/src/test-utils/test-utils.tsx @@ -1,4 +1,4 @@ -/* eslint-disable import/export */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import type { ElementData, ConfigData, diff --git a/packages/inscription/.eslintrc.cjs b/packages/inscription/.eslintrc.cjs deleted file mode 100644 index a95565359..000000000 --- a/packages/inscription/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib,server}'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/packages/inscription/package.json b/packages/inscription/package.json index 7a6f38340..8c3f758de 100644 --- a/packages/inscription/package.json +++ b/packages/inscription/package.json @@ -28,9 +28,7 @@ "scripts": { "clean": "rimraf lib tsconfig.tsbuildinfo", "build": "tsc --build && tscp", - "type": "tsc --noEmit", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src" + "type": "tsc --noEmit" }, "files": [ "lib", diff --git a/packages/protocol/.eslintrc.cjs b/packages/protocol/.eslintrc.cjs deleted file mode 100644 index a95565359..000000000 --- a/packages/protocol/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib,server}'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 1dc56038f..74b50dd22 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -23,9 +23,7 @@ "scripts": { "clean": "rimraf lib tsconfig.tsbuildinfo", "build": "tsc --build", - "type": "tsc --noEmit", - "lint": "eslint --ext .ts,.tsx ./src", - "lint:fix": "eslint --fix --ext .ts,.tsx ./src" + "type": "tsc --noEmit" }, "files": [ "lib", diff --git a/playwright/.eslintrc.cjs b/playwright/.eslintrc.cjs deleted file mode 100644 index 48dc7cab5..000000000 --- a/playwright/.eslintrc.cjs +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - extends: ['../configs/base.eslintrc.json'], - ignorePatterns: ['**/{css,node_modules,lib}', 'vite.*.js', 'playwright.*.ts'], - parserOptions: { - tsconfigRootDir: __dirname, - project: 'tsconfig.json' - } -}; diff --git a/playwright/package.json b/playwright/package.json index d21c68d90..a86620de3 100644 --- a/playwright/package.json +++ b/playwright/package.json @@ -17,8 +17,6 @@ "scripts": { "type": "tsc --noEmit", "build": "tsc --build", - "lint": "eslint --ext .ts,.tsx ./tests", - "lint:fix": "eslint --fix --ext .ts,.tsx ./tests", "webtest": "playwright test --project=standalone-chrome", "webtest:screenshots:process": "playwright test --project=screenshots-process", "webtest:screenshots:inscription": "playwright test --project=screenshots-inscription", diff --git a/playwright/tests/inscription/activites/bpmn.spec.ts b/playwright/tests/inscription/activites/bpmn.spec.ts index 379c1b31d..592659014 100644 --- a/playwright/tests/inscription/activites/bpmn.spec.ts +++ b/playwright/tests/inscription/activites/bpmn.spec.ts @@ -1,56 +1,56 @@ import { test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTestWithoutTags } from '../parts/name'; import { runTest } from '../parts/part-tester'; test.describe('BPMN Activities', () => { test('Generic', async ({ page }) => { const testee = await createProcess('GenericBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Generic'); await runTest(view, GeneralTestWithoutTags); }); test('User', async ({ page }) => { const testee = await createProcess('UserBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('User'); }); test('Manual', async ({ page }) => { const testee = await createProcess('ManualBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Manual'); }); test('Script', async ({ page }) => { const testee = await createProcess('ScriptBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Script'); }); test('Service', async ({ page }) => { const testee = await createProcess('ServiceBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Service'); }); test('Rule', async ({ page }) => { const testee = await createProcess('RuleBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Rule'); }); test('Receive', async ({ page }) => { const testee = await createProcess('ReceiveBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Receive'); }); test('Send', async ({ page }) => { const testee = await createProcess('SendBpmnElement'); - const view = await InscriptionView.selectElement(page, testee.elementId); + const view = await openElementInscription(page, testee.elementId); await view.expectHeaderText('Send'); }); }); diff --git a/playwright/tests/inscription/activites/interface/database.spec.ts b/playwright/tests/inscription/activites/interface/database.spec.ts index 1cbfbe885..3c17e6219 100644 --- a/playwright/tests/inscription/activites/interface/database.spec.ts +++ b/playwright/tests/inscription/activites/interface/database.spec.ts @@ -1,13 +1,13 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; -import { QueryAnyTest, QueryDeleteTest, QueryReadTest, QueryUpdateTest, QueryWriteTest } from '../../parts/query'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { DataCacheTest } from '../../parts/db-cache'; import { DbErrorTest } from '../../parts/db-error'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; +import { QueryAnyTest, QueryDeleteTest, QueryReadTest, QueryUpdateTest, QueryWriteTest } from '../../parts/query'; test.describe('Database', () => { let view: Inscription; @@ -15,7 +15,7 @@ test.describe('Database', () => { test.beforeEach(async ({ page }) => { testee = await createProcess('Database'); - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/interface/email.spec.ts b/playwright/tests/inscription/activites/interface/email.spec.ts index 08e56644c..245239c05 100644 --- a/playwright/tests/inscription/activites/interface/email.spec.ts +++ b/playwright/tests/inscription/activites/interface/email.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { MailAttachmentTest } from '../../parts/mail-attachments'; import { MailContentTest } from '../../parts/mail-content'; import { MailErrorTest } from '../../parts/mail-error'; @@ -18,7 +18,7 @@ test.describe('EMail', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/interface/program.spec.ts b/playwright/tests/inscription/activites/interface/program.spec.ts index daa4cfc3c..f8cdb5ef6 100644 --- a/playwright/tests/inscription/activites/interface/program.spec.ts +++ b/playwright/tests/inscription/activites/interface/program.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { ProgramInterfaceErrorTest } from '../../parts/program-interface-error'; @@ -16,7 +16,7 @@ test.describe('Program', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/interface/restclient-openapi.spec.ts b/playwright/tests/inscription/activites/interface/restclient-openapi.spec.ts index cac6e91cb..78d5da8b6 100644 --- a/playwright/tests/inscription/activites/interface/restclient-openapi.spec.ts +++ b/playwright/tests/inscription/activites/interface/restclient-openapi.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { runTest } from '../../parts/part-tester'; import { RestRequestOpenApiTest } from '../../parts/rest-request'; import { RestRequestBodyOpenApiTest } from '../../parts/rest-request-body'; @@ -15,7 +15,7 @@ test.describe('Rest Client - OpenApi', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Request - OpenApi', async () => { diff --git a/playwright/tests/inscription/activites/interface/restclient.spec.ts b/playwright/tests/inscription/activites/interface/restclient.spec.ts index 708d7b33b..70fc21866 100644 --- a/playwright/tests/inscription/activites/interface/restclient.spec.ts +++ b/playwright/tests/inscription/activites/interface/restclient.spec.ts @@ -1,13 +1,13 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { RestErrorTest } from '../../parts/rest-error'; import { RestOutputTest } from '../../parts/rest-output'; import { RestRequestTest } from '../../parts/rest-request'; -import { RestRequestBodyEntityTest, RestRequestBodyFormTest, RestRequestBodyRawTest, RestRequestBodyJaxRsTest } from '../../parts/rest-request-body'; +import { RestRequestBodyEntityTest, RestRequestBodyFormTest, RestRequestBodyJaxRsTest, RestRequestBodyRawTest } from '../../parts/rest-request-body'; test.describe('Rest Client', () => { let view: Inscription; @@ -18,7 +18,7 @@ test.describe('Rest Client', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/interface/rule.spec.ts b/playwright/tests/inscription/activites/interface/rule.spec.ts index dc6518963..72fe9d832 100644 --- a/playwright/tests/inscription/activites/interface/rule.spec.ts +++ b/playwright/tests/inscription/activites/interface/rule.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { ProgramInterfaceErrorTest } from '../../parts/program-interface-error'; @@ -15,7 +15,7 @@ test.describe('Rule', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/interface/webservice.spec.ts b/playwright/tests/inscription/activites/interface/webservice.spec.ts index cd7422546..b0662c80b 100644 --- a/playwright/tests/inscription/activites/interface/webservice.spec.ts +++ b/playwright/tests/inscription/activites/interface/webservice.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { DataCacheTest } from '../../parts/db-cache'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -18,7 +18,7 @@ test.describe('Web Service', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/call-sub.spec.ts b/playwright/tests/inscription/activites/workflow/call-sub.spec.ts index 54f086a5b..f0ea9bbcb 100644 --- a/playwright/tests/inscription/activites/workflow/call-sub.spec.ts +++ b/playwright/tests/inscription/activites/workflow/call-sub.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { SubCallTest } from '../../parts/call'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; @@ -16,7 +16,7 @@ test.describe('Call Sub', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/dialog-call.spec.ts b/playwright/tests/inscription/activites/workflow/dialog-call.spec.ts index 53bea0755..58a304c75 100644 --- a/playwright/tests/inscription/activites/workflow/dialog-call.spec.ts +++ b/playwright/tests/inscription/activites/workflow/dialog-call.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { DialogCallTest } from '../../parts/call'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; @@ -16,7 +16,7 @@ test.describe('Dialog Call', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/embedded.spec.ts b/playwright/tests/inscription/activites/workflow/embedded.spec.ts index e63671946..4b23dd72b 100644 --- a/playwright/tests/inscription/activites/workflow/embedded.spec.ts +++ b/playwright/tests/inscription/activites/workflow/embedded.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTestWithoutTags } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Embedded Sub', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/script.spec.ts b/playwright/tests/inscription/activites/workflow/script.spec.ts index 81c1a3bb9..b689f23d4 100644 --- a/playwright/tests/inscription/activites/workflow/script.spec.ts +++ b/playwright/tests/inscription/activites/workflow/script.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { ScriptOutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Script', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/trigger.spec.ts b/playwright/tests/inscription/activites/workflow/trigger.spec.ts index cee78cfd8..300b3e2f7 100644 --- a/playwright/tests/inscription/activites/workflow/trigger.spec.ts +++ b/playwright/tests/inscription/activites/workflow/trigger.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; -import { GeneralTest } from '../../parts/name'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { TriggerCallTest } from '../../parts/call'; +import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -16,7 +16,7 @@ test.describe('Trigger', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/activites/workflow/user-task.spec.ts b/playwright/tests/inscription/activites/workflow/user-task.spec.ts index 4e27a73be..6cd5626f9 100644 --- a/playwright/tests/inscription/activites/workflow/user-task.spec.ts +++ b/playwright/tests/inscription/activites/workflow/user-task.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { DialogCallTest } from '../../parts/call'; import { CaseTest } from '../../parts/case'; import { GeneralTest } from '../../parts/name'; @@ -18,7 +18,7 @@ test.describe('User Task', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/boundary/error.spec.ts b/playwright/tests/inscription/events/boundary/error.spec.ts index 3fff92f50..96de94238 100644 --- a/playwright/tests/inscription/events/boundary/error.spec.ts +++ b/playwright/tests/inscription/events/boundary/error.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { ErrorCatchTest } from '../../parts/error-catch'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; @@ -16,7 +16,7 @@ test.describe('Error', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/boundary/signal.spec.ts b/playwright/tests/inscription/events/boundary/signal.spec.ts index c5ec0df06..0d6fbc561 100644 --- a/playwright/tests/inscription/events/boundary/signal.spec.ts +++ b/playwright/tests/inscription/events/boundary/signal.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -16,7 +16,7 @@ test.describe('Signal', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/embedded-end.spec.ts b/playwright/tests/inscription/events/end/embedded-end.spec.ts index 360b54c96..9e1ea425e 100644 --- a/playwright/tests/inscription/events/end/embedded-end.spec.ts +++ b/playwright/tests/inscription/events/end/embedded-end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTestWithoutTags } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Embedded End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, `${testee.elementId}-g1`); + view = await openElementInscription(page, `${testee.elementId}-g1`); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/end-page.spec.ts b/playwright/tests/inscription/events/end/end-page.spec.ts index e224deeb8..12f2e6993 100644 --- a/playwright/tests/inscription/events/end/end-page.spec.ts +++ b/playwright/tests/inscription/events/end/end-page.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { EndPageTestEmptyWarning } from '../../parts/end-page'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('End Page', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/end.spec.ts b/playwright/tests/inscription/events/end/end.spec.ts index 75d7e3b94..34d6cb97b 100644 --- a/playwright/tests/inscription/events/end/end.spec.ts +++ b/playwright/tests/inscription/events/end/end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/error-end.spec.ts b/playwright/tests/inscription/events/end/error-end.spec.ts index 0df72629e..5123e3f7d 100644 --- a/playwright/tests/inscription/events/end/error-end.spec.ts +++ b/playwright/tests/inscription/events/end/error-end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { ErrorThrowTest } from '../../parts/error-throw'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Error End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/hd-end.spec.ts b/playwright/tests/inscription/events/end/hd-end.spec.ts index 150cc160f..52f7f0150 100644 --- a/playwright/tests/inscription/events/end/hd-end.spec.ts +++ b/playwright/tests/inscription/events/end/hd-end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Process End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/hd-exit.spec.ts b/playwright/tests/inscription/events/end/hd-exit.spec.ts index 08c048e96..bd9b68f97 100644 --- a/playwright/tests/inscription/events/end/hd-exit.spec.ts +++ b/playwright/tests/inscription/events/end/hd-exit.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Exit End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/sub-end.spec.ts b/playwright/tests/inscription/events/end/sub-end.spec.ts index 596c4aa01..f6740034a 100644 --- a/playwright/tests/inscription/events/end/sub-end.spec.ts +++ b/playwright/tests/inscription/events/end/sub-end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Sub End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/end/ws-end.spec.ts b/playwright/tests/inscription/events/end/ws-end.spec.ts index cdc6d3058..349a5aeed 100644 --- a/playwright/tests/inscription/events/end/ws-end.spec.ts +++ b/playwright/tests/inscription/events/end/ws-end.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('WS End', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/intermediate/task.spec.ts b/playwright/tests/inscription/events/intermediate/task.spec.ts index 050813bd5..addc7e3a8 100644 --- a/playwright/tests/inscription/events/intermediate/task.spec.ts +++ b/playwright/tests/inscription/events/intermediate/task.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { CaseTest } from '../../parts/case'; import { EndPageTest } from '../../parts/end-page'; import { GeneralTest } from '../../parts/name'; @@ -18,7 +18,7 @@ test.describe('Task', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/intermediate/wait.spec.ts b/playwright/tests/inscription/events/intermediate/wait.spec.ts index fea04acdb..87f2bc40b 100644 --- a/playwright/tests/inscription/events/intermediate/wait.spec.ts +++ b/playwright/tests/inscription/events/intermediate/wait.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; -import { EventTest } from '../../parts/event'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { ConfigFileIntermediateEventBeanTest } from '../../parts/configuration'; +import { EventTest } from '../../parts/event'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -18,7 +18,7 @@ test.describe('Wait', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/embedded.spec.ts b/playwright/tests/inscription/events/start/embedded.spec.ts index 0dd6e7e2a..7bd5b5ff2 100644 --- a/playwright/tests/inscription/events/start/embedded.spec.ts +++ b/playwright/tests/inscription/events/start/embedded.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTestWithoutTags } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -14,7 +14,7 @@ test.describe('Embedded Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, `${testee.elementId}-g0`); + view = await openElementInscription(page, `${testee.elementId}-g0`); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/error.spec.ts b/playwright/tests/inscription/events/start/error.spec.ts index 06dd7c1b5..9a92655df 100644 --- a/playwright/tests/inscription/events/start/error.spec.ts +++ b/playwright/tests/inscription/events/start/error.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { ErrorCatchTest } from '../../parts/error-catch'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; @@ -16,7 +16,7 @@ test.describe('Error Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/hd-event.spec.ts b/playwright/tests/inscription/events/start/hd-event.spec.ts index 74c2d04aa..d466a01fd 100644 --- a/playwright/tests/inscription/events/start/hd-event.spec.ts +++ b/playwright/tests/inscription/events/start/hd-event.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { OutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Event Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/hd-init.spec.ts b/playwright/tests/inscription/events/start/hd-init.spec.ts index 7be7f5315..a41d5d7db 100644 --- a/playwright/tests/inscription/events/start/hd-init.spec.ts +++ b/playwright/tests/inscription/events/start/hd-init.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { ResultTest } from '../../parts/result'; @@ -16,7 +16,7 @@ test.describe('Init Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/hd-method.spec.ts b/playwright/tests/inscription/events/start/hd-method.spec.ts index 0bd7731ab..73709010c 100644 --- a/playwright/tests/inscription/events/start/hd-method.spec.ts +++ b/playwright/tests/inscription/events/start/hd-method.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { MethodResultTest } from '../../parts/result'; @@ -16,7 +16,7 @@ test.describe('Method Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/program.spec.ts b/playwright/tests/inscription/events/start/program.spec.ts index 6a7b8d474..ddff46d75 100644 --- a/playwright/tests/inscription/events/start/program.spec.ts +++ b/playwright/tests/inscription/events/start/program.spec.ts @@ -1,11 +1,11 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; -import { ProgramStartTest } from '../../parts/program-start'; -import { ConfigTimerBeanTest, ConfigFilePickupStartEventBeanTest } from '../../parts/configuration'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; +import { ConfigFilePickupStartEventBeanTest, ConfigTimerBeanTest } from '../../parts/configuration'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; +import { ProgramStartTest } from '../../parts/program-start'; test.describe('Program Start', () => { let view: Inscription; @@ -16,7 +16,7 @@ test.describe('Program Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/signal.spec.ts b/playwright/tests/inscription/events/start/signal.spec.ts index c204e7edb..bc795c3db 100644 --- a/playwright/tests/inscription/events/start/signal.spec.ts +++ b/playwright/tests/inscription/events/start/signal.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { SignalOutputTest } from '../../parts/output'; import { runTest } from '../../parts/part-tester'; @@ -16,7 +16,7 @@ test.describe('Signal Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/start.spec.ts b/playwright/tests/inscription/events/start/start.spec.ts index ce3a76f83..1db433f85 100644 --- a/playwright/tests/inscription/events/start/start.spec.ts +++ b/playwright/tests/inscription/events/start/start.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { CaseTest } from '../../parts/case'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -19,7 +19,7 @@ test.describe('StartRequest', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/sub.spec.ts b/playwright/tests/inscription/events/start/sub.spec.ts index f7fa1b0dd..36d02b3cb 100644 --- a/playwright/tests/inscription/events/start/sub.spec.ts +++ b/playwright/tests/inscription/events/start/sub.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; import { ResultTest } from '../../parts/result'; @@ -16,7 +16,7 @@ test.describe('Sub Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/events/start/ws.spec.ts b/playwright/tests/inscription/events/start/ws.spec.ts index ad7a02083..3d0fff0d3 100644 --- a/playwright/tests/inscription/events/start/ws.spec.ts +++ b/playwright/tests/inscription/events/start/ws.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../../glsp-protocol'; import { createProcess } from '../../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../../page-objects/inscription/inscription-view'; import { CaseTest } from '../../parts/case'; import { GeneralTest } from '../../parts/name'; import { runTest } from '../../parts/part-tester'; @@ -19,7 +19,7 @@ test.describe('WS Start', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/gateways/alternative.spec.ts b/playwright/tests/inscription/gateways/alternative.spec.ts index 35f4cfbb3..11547bd9b 100644 --- a/playwright/tests/inscription/gateways/alternative.spec.ts +++ b/playwright/tests/inscription/gateways/alternative.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { ConditionTest } from '../parts/condition'; import { GeneralTest } from '../parts/name'; import { runTest } from '../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Alternative', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/gateways/join.spec.ts b/playwright/tests/inscription/gateways/join.spec.ts index 62264e70c..8b147382d 100644 --- a/playwright/tests/inscription/gateways/join.spec.ts +++ b/playwright/tests/inscription/gateways/join.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../parts/name'; import { OutputTest } from '../parts/output'; import { runTest } from '../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Join', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/gateways/split.spec.ts b/playwright/tests/inscription/gateways/split.spec.ts index c0063b14b..41cdf1c51 100644 --- a/playwright/tests/inscription/gateways/split.spec.ts +++ b/playwright/tests/inscription/gateways/split.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTest } from '../parts/name'; import { OutputTest } from '../parts/output'; import { runTest } from '../parts/part-tester'; @@ -15,7 +15,7 @@ test.describe('Split', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/gateways/tasks.spec.ts b/playwright/tests/inscription/gateways/tasks.spec.ts index 0e8062a8a..40ca8d1d2 100644 --- a/playwright/tests/inscription/gateways/tasks.spec.ts +++ b/playwright/tests/inscription/gateways/tasks.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { CaseTest } from '../parts/case'; import { EndPageTest } from '../parts/end-page'; import { GeneralTest } from '../parts/name'; @@ -18,7 +18,7 @@ test.describe('Tasks', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/mock/browser/attribute.spec.ts b/playwright/tests/inscription/mock/browser/attribute.spec.ts index 9dda47f7c..1bbdf596a 100644 --- a/playwright/tests/inscription/mock/browser/attribute.spec.ts +++ b/playwright/tests/inscription/mock/browser/attribute.spec.ts @@ -1,9 +1,9 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { applyBrowser, assertCodeHidden, assertCodeVisible, code } from './browser-mock-utils'; test('browser add to input', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -17,7 +17,7 @@ test('browser add to input', async ({ page }) => { }); test('browser replace selection', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -34,7 +34,7 @@ test('browser replace selection', async ({ page }) => { }); test('browser add attribute doubleclick', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); diff --git a/playwright/tests/inscription/mock/browser/cms.spec.ts b/playwright/tests/inscription/mock/browser/cms.spec.ts index 86d0f9397..7f37ff850 100644 --- a/playwright/tests/inscription/mock/browser/cms.spec.ts +++ b/playwright/tests/inscription/mock/browser/cms.spec.ts @@ -1,9 +1,9 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { applyBrowser, assertCodeHidden, assertCodeVisible, code } from './browser-mock-utils'; test('browser add cms string', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -17,7 +17,7 @@ test('browser add cms string', async ({ page }) => { }); test('browser add cms file', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -31,7 +31,7 @@ test('browser add cms file', async ({ page }) => { }); test('browser add cms doubleclick', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); diff --git a/playwright/tests/inscription/mock/browser/conditionBuilder.spec.ts b/playwright/tests/inscription/mock/browser/conditionBuilder.spec.ts index 878a356c2..89fc388b7 100644 --- a/playwright/tests/inscription/mock/browser/conditionBuilder.spec.ts +++ b/playwright/tests/inscription/mock/browser/conditionBuilder.spec.ts @@ -1,10 +1,10 @@ import type { Page } from '@playwright/test'; import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { browserBtn } from './browser-mock-utils'; test('Add Condition', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'Alternative' }); + const inscriptionView = await openMockInscription(page, { type: 'Alternative' }); const condition = inscriptionView.accordion('Condition'); await condition.toggle(); const conditionSection = condition.section('Condition'); @@ -24,9 +24,9 @@ export async function applyConditionBuilder(page: Page) { const condition = browserDialog.locator('.ui-condition-builder-condition'); const group = browserDialog.locator('.ui-condition-builder-group'); - expect(browserDialog.getByRole('combobox').nth(0)).toHaveText('Basic Condition'); - expect(await condition.count()).toBe(1); - expect(await condition.getByRole('textbox').count()).toBe(2); + await expect(browserDialog.getByRole('combobox').nth(0)).toHaveText('Basic Condition'); + await expect(condition).toHaveCount(1); + await expect(condition.getByRole('textbox')).toHaveCount(2); await condition.getByRole('textbox').nth(0).fill('data.value1'); await condition.getByRole('combobox').click(); @@ -34,8 +34,7 @@ export async function applyConditionBuilder(page: Page) { await condition.getByRole('textbox').nth(1).fill('10'); await page.getByLabel('Add Condition').click(); - const newConditions = await condition.count(); - expect(newConditions).toBe(2); + await expect(condition).toHaveCount(2); await condition.nth(1).getByRole('textbox').nth(0).fill('data.value2'); await condition.nth(1).getByRole('combobox').click(); await page.getByRole('option', { name: 'greater than', exact: true }).first().click(); @@ -44,9 +43,9 @@ export async function applyConditionBuilder(page: Page) { await page.getByRole('dialog').getByRole('combobox').nth(0).click(); await page.getByRole('option', { name: 'Nested Condition', exact: true }).first().click(); - expect(await group.count()).toBe(1); + await expect(group).toHaveCount(1); await page.getByLabel('Add Condition Group').click(); - expect(await group.count()).toBe(2); + await expect(group).toHaveCount(2); await group.nth(0).getByRole('combobox').nth(3).click(); await page.getByRole('option', { name: 'or', exact: true }).first().click(); diff --git a/playwright/tests/inscription/mock/browser/maximizedCodeEditor.spec.ts b/playwright/tests/inscription/mock/browser/maximizedCodeEditor.spec.ts index 3e1d3b5e4..d7e034bb8 100644 --- a/playwright/tests/inscription/mock/browser/maximizedCodeEditor.spec.ts +++ b/playwright/tests/inscription/mock/browser/maximizedCodeEditor.spec.ts @@ -1,9 +1,9 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { assertCodeVisible, code } from './browser-mock-utils'; test('maximized code editor', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); diff --git a/playwright/tests/inscription/mock/browser/role.spec.ts b/playwright/tests/inscription/mock/browser/role.spec.ts index 5910b22c4..bcba62b19 100644 --- a/playwright/tests/inscription/mock/browser/role.spec.ts +++ b/playwright/tests/inscription/mock/browser/role.spec.ts @@ -1,10 +1,10 @@ import type { Page } from '@playwright/test'; import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { assertCodeHidden, browserBtn } from './browser-mock-utils'; test('browser add role', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); await assertCodeHidden(page); @@ -14,7 +14,7 @@ test('browser add role', async ({ page }) => { }); test('browser role open add role popover', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); await assertCodeHidden(page); @@ -24,7 +24,7 @@ test('browser role open add role popover', async ({ page }) => { }); test('browser add role doubleclick', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); await assertCodeHidden(page); @@ -48,7 +48,7 @@ async function applyRoleBrowser(page: Page, expectedSelection: string = '', rowT await addRoleInput.fill('test'); await addRoleButton.click(); - await expect(popover).not.toBeVisible(); + await expect(popover).toBeHidden(); } if (dblClick) { diff --git a/playwright/tests/inscription/mock/browser/tableCol.spec.ts b/playwright/tests/inscription/mock/browser/tableCol.spec.ts index b46c4a8c9..1ac794c29 100644 --- a/playwright/tests/inscription/mock/browser/tableCol.spec.ts +++ b/playwright/tests/inscription/mock/browser/tableCol.spec.ts @@ -1,10 +1,10 @@ import type { Page } from '@playwright/test'; import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { browserBtn, code } from './browser-mock-utils'; test('browser add table column with all fields', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'Database' }); + const inscriptionView = await openMockInscription(page, { type: 'Database' }); const query = inscriptionView.accordion('Query'); await query.toggle(); const allFieldsCheckbox = query.checkbox('Select all fields'); @@ -21,7 +21,7 @@ test('browser add table column with all fields', async ({ page }) => { }); test('browser add table column with one field', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'Database' }); + const inscriptionView = await openMockInscription(page, { type: 'Database' }); const query = inscriptionView.accordion('Query'); await query.toggle(); const allFieldsCheckbox = query.checkbox('Select all fields'); @@ -38,7 +38,7 @@ test('browser add table column with one field', async ({ page }) => { }); test('browser add table column doubleclick', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'Database' }); + const inscriptionView = await openMockInscription(page, { type: 'Database' }); const query = inscriptionView.accordion('Query'); await query.toggle(); const allFieldsCheckbox = query.checkbox('Select all fields'); @@ -65,7 +65,7 @@ async function applyTableColBrowser(page: Page, expectedSelection: string = '', await browserDialog.getByRole('row').nth(rowToCheck).dblclick(); } else { if (numberOfRows) { - expect(browserDialog.getByRole('row')).toHaveCount(numberOfRows); + await expect(browserDialog.getByRole('row')).toHaveCount(numberOfRows); } await browserDialog.getByRole('row').nth(rowToCheck).click(); await expect(browserDialog.locator('.browser-helptext')).toHaveText(expectedSelection); diff --git a/playwright/tests/inscription/mock/browser/type.spec.ts b/playwright/tests/inscription/mock/browser/type.spec.ts index a05efe44a..153b171fc 100644 --- a/playwright/tests/inscription/mock/browser/type.spec.ts +++ b/playwright/tests/inscription/mock/browser/type.spec.ts @@ -1,10 +1,10 @@ import type { Page } from '@playwright/test'; import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../../page-objects/inscription/inscription-view'; import { assertCodeHidden, assertCodeVisible, browserBtn, code } from './browser-mock-utils'; test('browser init searchfilter', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Dialog'); await task.toggle(); @@ -23,7 +23,7 @@ test('browser init searchfilter', async ({ page }) => { }); test('browser add type', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -38,7 +38,7 @@ test('browser add type', async ({ page }) => { }); test('browser add type as list', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); @@ -53,7 +53,7 @@ test('browser add type as list', async ({ page }) => { }); test('browser add type doubleclick', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const task = inscriptionView.accordion('Task'); await task.toggle(); diff --git a/playwright/tests/inscription/mock/code-editor-input.spec.ts b/playwright/tests/inscription/mock/code-editor-input.spec.ts index ff180ddd5..b6f210be0 100644 --- a/playwright/tests/inscription/mock/code-editor-input.spec.ts +++ b/playwright/tests/inscription/mock/code-editor-input.spec.ts @@ -1,18 +1,18 @@ import type { Page } from '@playwright/test'; import { test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; import type { MacroEditor, ScriptInput } from '../../page-objects/inscription/code-editor'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Code Editor Input', () => { test('MacroInput - no new line', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const taskPart = inscriptionView.accordion('Case'); await taskPart.toggle(); await assertNoNewLine(page, taskPart.macroInput('Name')); }); test('ScriptInput - no new line', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const taskPart = inscriptionView.accordion('Task'); await taskPart.toggle(); const expirySection = taskPart.section('Expiry'); @@ -42,7 +42,7 @@ test.describe('Code Editor Input', () => { } async function assertAcceptScriptCellValue(page: Page, key?: string) { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const taskPart = inscriptionView.accordion('Output'); await taskPart.toggle(); await taskPart.table(['label', 'expression']).row(1).column(1).fill('test'); diff --git a/playwright/tests/inscription/mock/dnd.spec.ts b/playwright/tests/inscription/mock/dnd.spec.ts index 3eb0783e7..dc4d9d9b4 100644 --- a/playwright/tests/inscription/mock/dnd.spec.ts +++ b/playwright/tests/inscription/mock/dnd.spec.ts @@ -1,9 +1,9 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Drag and drop features', () => { test('Alternative condition reorder', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'Alternative' }); + const inscriptionView = await openMockInscription(page, { type: 'Alternative' }); const conditions = inscriptionView.accordion('Condition'); await conditions.toggle(); diff --git a/playwright/tests/inscription/mock/mapping.spec.ts b/playwright/tests/inscription/mock/mapping.spec.ts index 720c6841d..11f36aa9e 100644 --- a/playwright/tests/inscription/mock/mapping.spec.ts +++ b/playwright/tests/inscription/mock/mapping.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Mappings', () => { test('DialogCall change will update mapping tree', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const callPart = inscriptionView.accordion('Dialog'); await callPart.toggle(); @@ -19,7 +19,7 @@ test.describe('Mappings', () => { }); test('SubStart result param change will update mapping tree', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { type: 'CallSubStart' }); + const inscriptionView = await openMockInscription(page, { type: 'CallSubStart' }); const resultPart = inscriptionView.accordion('Result'); await resultPart.toggle(); diff --git a/playwright/tests/inscription/mock/part-state.spec.ts b/playwright/tests/inscription/mock/part-state.spec.ts index 90cd9eb6f..841abfe9a 100644 --- a/playwright/tests/inscription/mock/part-state.spec.ts +++ b/playwright/tests/inscription/mock/part-state.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Part states', () => { test('different states on different parts', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const casePart = inscriptionView.accordion('Case'); const dialogPart = inscriptionView.accordion('Dialog'); diff --git a/playwright/tests/inscription/mock/readonly.spec.ts b/playwright/tests/inscription/mock/readonly.spec.ts index eecb80b33..ed6a66a7d 100644 --- a/playwright/tests/inscription/mock/readonly.spec.ts +++ b/playwright/tests/inscription/mock/readonly.spec.ts @@ -1,16 +1,16 @@ import { test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Readonly', () => { test('edit mode', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const name = inscriptionView.accordion('General'); await name.toggle(); await name.textArea({ label: 'Display name' }).expectEnabled(); }); test('readonly mode', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page, { readonly: true }); + const inscriptionView = await openMockInscription(page, { readonly: true }); const name = inscriptionView.accordion('General'); await name.toggle(); await name.textArea({ label: 'Display name' }).expectDisabled(); diff --git a/playwright/tests/inscription/mock/reset.spec.ts b/playwright/tests/inscription/mock/reset.spec.ts index e52514f4f..28fccc085 100644 --- a/playwright/tests/inscription/mock/reset.spec.ts +++ b/playwright/tests/inscription/mock/reset.spec.ts @@ -1,14 +1,14 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Reset part', () => { test('reset button', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const part = inscriptionView.accordion('General'); await part.toggle(); const resetBtn = part.reset(); - await expect(resetBtn).not.toBeVisible(); + await expect(resetBtn).toBeHidden(); const name = part.textArea({ label: 'Display name' }); await name.fill('bla'); await expect(resetBtn).toBeVisible(); diff --git a/playwright/tests/inscription/mock/theme.spec.ts b/playwright/tests/inscription/mock/theme.spec.ts index 6aef4caee..42e627bdd 100644 --- a/playwright/tests/inscription/mock/theme.spec.ts +++ b/playwright/tests/inscription/mock/theme.spec.ts @@ -1,6 +1,6 @@ import type { Page } from '@playwright/test'; import { test, expect } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Theme mode dark', () => { test.use({ @@ -8,12 +8,12 @@ test.describe('Theme mode dark', () => { }); test('dark browser', async ({ page }) => { - await InscriptionView.mock(page); + await openMockInscription(page); await assertThemeMode(page, 'dark'); }); test('light param', async ({ page }) => { - await InscriptionView.mock(page, { theme: 'light' }); + await openMockInscription(page, { theme: 'light' }); await assertThemeMode(page, 'light'); }); }); @@ -24,12 +24,12 @@ test.describe('Theme mode light', () => { }); test('light browser', async ({ page }) => { - await InscriptionView.mock(page); + await openMockInscription(page); await assertThemeMode(page, 'light'); }); test('dark param', async ({ page }) => { - await InscriptionView.mock(page, { theme: 'dark' }); + await openMockInscription(page, { theme: 'dark' }); await assertThemeMode(page, 'dark'); }); }); diff --git a/playwright/tests/inscription/mock/validation.spec.ts b/playwright/tests/inscription/mock/validation.spec.ts index 8eefbbb7c..ae2188b83 100644 --- a/playwright/tests/inscription/mock/validation.spec.ts +++ b/playwright/tests/inscription/mock/validation.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openMockInscription } from '../../page-objects/inscription/inscription-view'; test.describe('Validations', () => { const normalColor = 'rgb(231, 231, 231)'; @@ -7,7 +7,7 @@ test.describe('Validations', () => { const warningColor = 'rgb(255, 115, 0)'; test('case', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const part = inscriptionView.accordion('Case'); const section = part.section('Details'); const name = section.macroInput('Name'); @@ -25,7 +25,7 @@ test.describe('Validations', () => { }); test('dialog', async ({ page }) => { - const inscriptionView = await InscriptionView.mock(page); + const inscriptionView = await openMockInscription(page); const part = inscriptionView.accordion('Dialog'); const dialogSection = part.section('Dialog'); const mappingSection = part.section('Mapping'); diff --git a/playwright/tests/inscription/other/annotation.spec.ts b/playwright/tests/inscription/other/annotation.spec.ts index e207ee11a..5df8c72f2 100644 --- a/playwright/tests/inscription/other/annotation.spec.ts +++ b/playwright/tests/inscription/other/annotation.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; import { GeneralTestWithoutTags } from '../parts/name'; @@ -14,7 +14,7 @@ test.describe('Annotation', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/other/callable-sub-process.spec.ts b/playwright/tests/inscription/other/callable-sub-process.spec.ts index 7d3ac4163..6b48413b9 100644 --- a/playwright/tests/inscription/other/callable-sub-process.spec.ts +++ b/playwright/tests/inscription/other/callable-sub-process.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTestWithDisabledName } from '../parts/name'; import { runTest } from '../parts/part-tester'; import { PermissionsTest } from '../parts/permissions'; @@ -16,7 +16,7 @@ test.describe('Callable Sub Process', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.processId); + view = await openElementInscription(page, testee.processId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/other/html-dialog-process.spec.ts b/playwright/tests/inscription/other/html-dialog-process.spec.ts index 2fc6f1d7f..55d802c56 100644 --- a/playwright/tests/inscription/other/html-dialog-process.spec.ts +++ b/playwright/tests/inscription/other/html-dialog-process.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTestWithDisabledName } from '../parts/name'; import { runTest } from '../parts/part-tester'; import { PermissionsTest } from '../parts/permissions'; @@ -15,7 +15,7 @@ test.describe('HTML Dialog Process', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.processId); + view = await openElementInscription(page, testee.processId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/other/process.spec.ts b/playwright/tests/inscription/other/process.spec.ts index b82965df0..70b5c1bd0 100644 --- a/playwright/tests/inscription/other/process.spec.ts +++ b/playwright/tests/inscription/other/process.spec.ts @@ -1,7 +1,7 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import { GeneralTestWithDisabledName } from '../parts/name'; import { runTest } from '../parts/part-tester'; import { PermissionsTest } from '../parts/permissions'; @@ -16,7 +16,7 @@ test.describe('Business Process', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.processId); + view = await openElementInscription(page, testee.processId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/other/ws-process.spec.ts b/playwright/tests/inscription/other/ws-process.spec.ts index bb4b18895..4cd9a3bb2 100644 --- a/playwright/tests/inscription/other/ws-process.spec.ts +++ b/playwright/tests/inscription/other/ws-process.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; import { GeneralTestWithDisabledName } from '../parts/name'; @@ -17,7 +17,7 @@ test.describe('Web Service Process', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.processId); + view = await openElementInscription(page, testee.processId); }); test('Header', async () => { diff --git a/playwright/tests/inscription/parts/output.ts b/playwright/tests/inscription/parts/output.ts index b12632361..364857eaf 100644 --- a/playwright/tests/inscription/parts/output.ts +++ b/playwright/tests/inscription/parts/output.ts @@ -77,10 +77,6 @@ class OutputCode extends Output { } class OutputEmptyMap extends OutputCode { - constructor(part: Part) { - super(part); - } - override async assertClear() { await this.mappingSection.expectIsClosed(); await this.codeSection.expectIsClosed(); diff --git a/playwright/tests/inscription/widgets/code-editor.spec.ts b/playwright/tests/inscription/widgets/code-editor.spec.ts index 1857a7279..af722d20b 100644 --- a/playwright/tests/inscription/widgets/code-editor.spec.ts +++ b/playwright/tests/inscription/widgets/code-editor.spec.ts @@ -1,5 +1,5 @@ import { test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; @@ -12,7 +12,7 @@ test.describe('Code Editor', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('MacroInput', async () => { diff --git a/playwright/tests/inscription/widgets/web-service-auth.spec.ts b/playwright/tests/inscription/widgets/web-service-auth.spec.ts index c80003918..d2ff32029 100644 --- a/playwright/tests/inscription/widgets/web-service-auth.spec.ts +++ b/playwright/tests/inscription/widgets/web-service-auth.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { InscriptionView, type Inscription } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription, type Inscription } from '../../page-objects/inscription/inscription-view'; import type { CreateProcessResult } from '../../glsp-protocol'; import { createProcess } from '../../glsp-protocol'; @@ -12,7 +12,7 @@ test.describe('Web Service Auth Link', () => { }); test.beforeEach(async ({ page }) => { - view = await InscriptionView.selectElement(page, testee.elementId); + view = await openElementInscription(page, testee.elementId); }); test('jump to process', async () => { diff --git a/playwright/tests/page-objects/editor/element.ts b/playwright/tests/page-objects/editor/element.ts index 13f18b81c..c39e8f52e 100644 --- a/playwright/tests/page-objects/editor/element.ts +++ b/playwright/tests/page-objects/editor/element.ts @@ -110,7 +110,10 @@ export class Element extends BaseElement { async getPosition() { const transform = await this.element.getAttribute('transform'); - const position = transform!.substring(transform!.indexOf('(') + 1, transform!.indexOf(')')); + if (!transform) { + throw new Error('Element has no transform'); + } + const position = transform.substring(transform.indexOf('(') + 1, transform.indexOf(')')); const x = parseInt(position.split(',')[0].trim(), 10); const y = parseInt(position.split(',')[1].trim(), 10); return { x: x, y: y }; diff --git a/playwright/tests/page-objects/editor/process-editor.ts b/playwright/tests/page-objects/editor/process-editor.ts index bac322ecf..6084b3092 100644 --- a/playwright/tests/page-objects/editor/process-editor.ts +++ b/playwright/tests/page-objects/editor/process-editor.ts @@ -148,7 +148,10 @@ export class ProcessEditor { const graph = this.page.locator('#sprotty'); await expect(graph).toBeVisible(); const bounds = await graph.boundingBox(); - await graph.click({ position: { x: bounds!.width - 20, y: bounds!.height - 80 } }); + if (!bounds) { + throw new Error('Graph has no bounds'); + } + await graph.click({ position: { x: bounds.width - 20, y: bounds.height - 80 } }); await expect(this.page.locator('g.selected')).toHaveCount(0); } diff --git a/playwright/tests/page-objects/editor/toolbar.ts b/playwright/tests/page-objects/editor/toolbar.ts index ecff36ffc..5cde1db00 100644 --- a/playwright/tests/page-objects/editor/toolbar.ts +++ b/playwright/tests/page-objects/editor/toolbar.ts @@ -106,7 +106,7 @@ export class Toolbar { async expectReadonly() { await expect(this.defaultTool).toBeVisible(); await expect(this.optionsBtn).toBeVisible(); - await expect(this.toolbar.locator('.edit-buttons')).not.toBeVisible(); - await expect(this.toolbar.locator('.middle-buttons > span')).not.toBeVisible(); + await expect(this.toolbar.locator('.edit-buttons')).toBeHidden(); + await expect(this.toolbar.locator('.middle-buttons > span')).toBeHidden(); } } diff --git a/playwright/tests/page-objects/inscription/inscription-view.ts b/playwright/tests/page-objects/inscription/inscription-view.ts index a97373537..c31ed21e9 100644 --- a/playwright/tests/page-objects/inscription/inscription-view.ts +++ b/playwright/tests/page-objects/inscription/inscription-view.ts @@ -3,44 +3,42 @@ import { expect } from '@playwright/test'; import { Accordion } from './accordion'; import { Outline } from './outline'; -export class InscriptionView { - static async selectElement(page: Page, pid: string, pmv = 'inscription-test-project') { - const server = process.env.BASE_URL ?? 'localhost:8081'; - const app = process.env.TEST_APP ?? 'designer'; - const serverUrl = server.replace(/^https?:\/\//, ''); - const url = `?server=${serverUrl}&app=${app}&pmv=${pmv}&pid=${pid}`; - await page.goto(url); - await this.initPage(page); - const view = new Inscription(page); - await view.waitForView(); - return view; - } +export const openElementInscription = async (page: Page, pid: string, pmv = 'inscription-test-project') => { + const server = process.env.BASE_URL ?? 'localhost:8081'; + const app = process.env.TEST_APP ?? 'designer'; + const serverUrl = server.replace(/^https?:\/\//, ''); + const url = `?server=${serverUrl}&app=${app}&pmv=${pmv}&pid=${pid}`; + await page.goto(url); + await initPage(page); + const view = new Inscription(page); + await view.waitForView(); + return view; +}; - static async mock(page: Page, options?: { type?: string; readonly?: boolean; theme?: string }) { - let url = 'mock.html'; - if (options) { - url += '?'; - if (options.type) { - url += `type=${options.type}&`; - } - if (options.readonly) { - url += `readonly=${options.readonly}&`; - } - if (options.theme) { - url += `theme=${options.theme}&`; - } +export const openMockInscription = async (page: Page, options?: { type?: string; readonly?: boolean; theme?: string }) => { + let url = 'mock.html'; + if (options) { + url += '?'; + if (options.type) { + url += `type=${options.type}&`; + } + if (options.readonly) { + url += `readonly=${options.readonly}&`; + } + if (options.theme) { + url += `theme=${options.theme}&`; } - await page.goto(url); - await this.initPage(page); - const view = new Inscription(page); - await view.waitForView(); - return view; } + await page.goto(url); + await initPage(page); + const view = new Inscription(page); + await view.waitForView(); + return view; +}; - static async initPage(page: Page) { - await page.emulateMedia({ reducedMotion: 'reduce' }); - } -} +const initPage = async (page: Page) => { + await page.emulateMedia({ reducedMotion: 'reduce' }); +}; export class Inscription { readonly view: Locator; @@ -68,7 +66,7 @@ export class Inscription { } async waitForView() { - await this.page.waitForSelector('.editor-root'); + await expect(this.root).toBeVisible(); } async expectOpen() { diff --git a/playwright/tests/page-objects/inscription/outline.ts b/playwright/tests/page-objects/inscription/outline.ts index 6f36ce38b..6fc18e08d 100644 --- a/playwright/tests/page-objects/inscription/outline.ts +++ b/playwright/tests/page-objects/inscription/outline.ts @@ -15,7 +15,7 @@ export class Outline { } async expectClosed() { - await expect(this.view).not.toBeVisible(); + await expect(this.view).toBeHidden(); } async expectSelected(name: string) { diff --git a/playwright/tests/page-objects/inscription/responsible-component.ts b/playwright/tests/page-objects/inscription/responsible-component.ts index 0a9f5b860..ff83a027d 100644 --- a/playwright/tests/page-objects/inscription/responsible-component.ts +++ b/playwright/tests/page-objects/inscription/responsible-component.ts @@ -16,29 +16,29 @@ export class ResponsibleComponent { this.select = new Select(part.page, locator, { nth: 1 }); } - async fill(type: ValuesAsUnion, responsible?: string) { + async fill(type: ValuesAsUnion, responsible = '') { await this.typeSelect.choose(type); switch (type) { case 'Role from Attr.': case 'User from Attr.': - await this.script.fill(responsible!); + await this.script.fill(responsible); break; case 'Role': - await this.select.choose(responsible!); + await this.select.choose(responsible); break; case 'Nobody & delete': } } - async expectFill(type: ValuesAsUnion, responsible?: string) { + async expectFill(type: ValuesAsUnion, responsible = '') { await this.typeSelect.expectValue(type); switch (type) { case 'Role from Attr.': case 'User from Attr.': - await this.script.expectValue(responsible!); + await this.script.expectValue(responsible); break; case 'Role': - await this.select.expectValue(responsible!); + await this.select.expectValue(responsible); break; case 'Nobody & delete': } diff --git a/playwright/tests/page-objects/inscription/text-area.ts b/playwright/tests/page-objects/inscription/text-area.ts index 745be18aa..3cdee80ce 100644 --- a/playwright/tests/page-objects/inscription/text-area.ts +++ b/playwright/tests/page-objects/inscription/text-area.ts @@ -1,38 +1,38 @@ -import type { Locator } from '@playwright/test'; -import { expect } from '@playwright/test'; - -export class TextArea { - private readonly locator: Locator; - - constructor(parentLocator: Locator, options?: { label?: string; nth?: number }) { - if (options?.label) { - this.locator = parentLocator.getByLabel(options.label); - } else { - this.locator = parentLocator.getByRole('textbox').nth(options?.nth ?? 0); - } - } - - async fill(value: string) { - await this.locator.fill(value); - } - - async clear() { - await this.locator.clear(); - } - - async expectValue(value: string) { - await expect(this.locator).toHaveValue(value); - } - - async expectEmpty() { - await expect(this.locator).toBeEmpty(); - } - - async expectEnabled() { - await expect(this.locator).not.toBeDisabled(); - } - - async expectDisabled() { - await expect(this.locator).toBeDisabled(); - } -} +import type { Locator } from '@playwright/test'; +import { expect } from '@playwright/test'; + +export class TextArea { + private readonly locator: Locator; + + constructor(parentLocator: Locator, options?: { label?: string; nth?: number }) { + if (options?.label) { + this.locator = parentLocator.getByLabel(options.label); + } else { + this.locator = parentLocator.getByRole('textbox').nth(options?.nth ?? 0); + } + } + + async fill(value: string) { + await this.locator.fill(value); + } + + async clear() { + await this.locator.clear(); + } + + async expectValue(value: string) { + await expect(this.locator).toHaveValue(value); + } + + async expectEmpty() { + await expect(this.locator).toBeEmpty(); + } + + async expectEnabled() { + await expect(this.locator).toBeEnabled(); + } + + async expectDisabled() { + await expect(this.locator).toBeDisabled(); + } +} diff --git a/playwright/tests/screenshots/editor/editor.spec.ts b/playwright/tests/screenshots/editor/editor.spec.ts index dbaf4a800..b781112cf 100644 --- a/playwright/tests/screenshots/editor/editor.spec.ts +++ b/playwright/tests/screenshots/editor/editor.spec.ts @@ -56,8 +56,9 @@ test('connector-user', async ({ page }) => { const editor = await ProcessEditor.openProcess(page, { file: '/processes/market/UserEnroll.p.json', waitFor: '.sprotty-graph' }); const subCall = editor.element('subProcessCall'); const inscription = await subCall.inscribe(); - await expect(subCall.locator().getByRole('img').first()).toHaveAttribute('src', /.+user.png/); - await page.waitForTimeout(1000); // wait for user.png being rendered + const img = subCall.locator().getByRole('img').first(); + await expect(img).toHaveJSProperty('complete', true); + await expect(img).not.toHaveJSProperty('naturalWidth', 0); const process = inscription.accordion('Process'); await process.toggle(); await screenshot(page, 'connector-user.png', { height: 400 }); diff --git a/playwright/tests/screenshots/inscription/browsers.spec.ts b/playwright/tests/screenshots/inscription/browsers.spec.ts index 42c2ae3f3..2b4350964 100644 --- a/playwright/tests/screenshots/inscription/browsers.spec.ts +++ b/playwright/tests/screenshots/inscription/browsers.spec.ts @@ -1,8 +1,8 @@ import { test, expect, type Page } from '@playwright/test'; import { screenshot } from './screenshot-util'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; import { Browser } from '../../page-objects/inscription/code-editor'; import type { Section } from '../../page-objects/inscription/section'; +import { openElementInscription } from '../../page-objects/inscription/inscription-view'; const GENERIC_PID = { SCRIPT: '168F0C6DF682858E-f3', @@ -68,7 +68,7 @@ test.describe('Browsers', () => { }); async function openSection(page: Page, pid: string, accordionName: string, sectionName: string): Promise
{ - const view = await InscriptionView.selectElement(page, pid, 'inscription-test-project'); + const view = await openElementInscription(page, pid, 'inscription-test-project'); await page.addStyleTag({ content: 'body { overflow: hidden; }' }); const accordion = view.accordion(accordionName); await accordion.toggle(); diff --git a/playwright/tests/screenshots/inscription/screenshot-util.ts b/playwright/tests/screenshots/inscription/screenshot-util.ts index e2c168a13..f8e711954 100644 --- a/playwright/tests/screenshots/inscription/screenshot-util.ts +++ b/playwright/tests/screenshots/inscription/screenshot-util.ts @@ -1,9 +1,9 @@ import type { Locator, Page } from '@playwright/test'; import { expect } from '@playwright/test'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription } from '../../page-objects/inscription/inscription-view'; export async function screenshotAccordion(page: Page, pid: string, accordionName: string, screenshotName: string, fullView = false) { - const view = await InscriptionView.selectElement(page, pid, 'inscription-test-project'); + const view = await openElementInscription(page, pid, 'inscription-test-project'); await page.addStyleTag({ content: 'body { overflow: hidden; }' }); const accordion = view.accordion(accordionName); await accordion.toggle(); @@ -19,7 +19,7 @@ export async function screenshotAccordion(page: Page, pid: string, accordionName } export async function screenshotSection(page: Page, pid: string, accordionName: string, sectionName: string, screenshotName: string) { - const view = await InscriptionView.selectElement(page, pid, 'inscription-test-project'); + const view = await openElementInscription(page, pid, 'inscription-test-project'); await page.addStyleTag({ content: 'body { overflow: hidden; }' }); const accordion = view.accordion(accordionName); await accordion.toggle(); diff --git a/playwright/tests/screenshots/inscription/scripting.spec.ts b/playwright/tests/screenshots/inscription/scripting.spec.ts index 3ead3f69a..2585d0ec1 100644 --- a/playwright/tests/screenshots/inscription/scripting.spec.ts +++ b/playwright/tests/screenshots/inscription/scripting.spec.ts @@ -1,7 +1,7 @@ import { test, type Page } from '@playwright/test'; import { screenshot } from './screenshot-util'; import type { Accordion } from '../../page-objects/inscription/accordion'; -import { InscriptionView } from '../../page-objects/inscription/inscription-view'; +import { openElementInscription } from '../../page-objects/inscription/inscription-view'; const GENERIC_PID = { SCRIPT: '168F0C6DF682858E-f3', @@ -50,7 +50,7 @@ test.describe('Scripting', () => { }); async function openAccordion(page: Page, pid: string, accordionName): Promise { - const view = await InscriptionView.selectElement(page, pid, 'inscription-test-project'); + const view = await openElementInscription(page, pid, 'inscription-test-project'); await page.addStyleTag({ content: 'body { overflow: hidden; }' }); const accordion = view.accordion(accordionName); await accordion.toggle(); diff --git a/playwright/tests/standalone/quick-actions/connector.spec.ts b/playwright/tests/standalone/quick-actions/connector.spec.ts index 0548ede57..7f2dd9c5e 100644 --- a/playwright/tests/standalone/quick-actions/connector.spec.ts +++ b/playwright/tests/standalone/quick-actions/connector.spec.ts @@ -22,7 +22,7 @@ test('delete', async ({ page }) => { const processEditor = await ProcessEditor.openProcess(page); const edge = processEditor.edge(); await edge.quickActionBar().trigger('Delete'); - await expect(edge.locator()).not.toBeVisible(); + await expect(edge.locator()).toBeHidden(); }); test('bend and straigthen', async ({ page }) => { diff --git a/playwright/tests/standalone/quick-actions/lane.spec.ts b/playwright/tests/standalone/quick-actions/lane.spec.ts index 8ba2eba96..0f5438191 100644 --- a/playwright/tests/standalone/quick-actions/lane.spec.ts +++ b/playwright/tests/standalone/quick-actions/lane.spec.ts @@ -22,7 +22,7 @@ test('root lane delete', async ({ page }) => { const processEditor = await ProcessEditor.openProcess(page); const lane = await processEditor.createLane({ x: 10, y: 60 }); await lane.quickActionBar().trigger('Delete'); - await expect(lane.locator()).not.toBeVisible(); + await expect(lane.locator()).toBeHidden(); }); test('pool actions', async ({ page }) => { @@ -48,7 +48,7 @@ test('pool delete', async ({ page }) => { const processEditor = await ProcessEditor.openProcess(page); const pool = await processEditor.createPool({ x: 10, y: 60 }); await pool.quickActionBar().trigger('Delete'); - await expect(pool.locator()).not.toBeVisible(); + await expect(pool.locator()).toBeHidden(); }); test('pool add and remove embedded lanes', async ({ page }) => { @@ -62,5 +62,5 @@ test('pool add and remove embedded lanes', async ({ page }) => { await lane1.quickActionBar().trigger('Delete'); await pool.expectEmbeddedLanes(1); await pool.quickActionBar().trigger('Delete'); - await expect(pool.locator()).not.toBeVisible(); + await expect(pool.locator()).toBeHidden(); }); diff --git a/playwright/tests/standalone/quick-actions/node-create.spec.ts b/playwright/tests/standalone/quick-actions/node-create.spec.ts index 092338782..53be9ad5b 100644 --- a/playwright/tests/standalone/quick-actions/node-create.spec.ts +++ b/playwright/tests/standalone/quick-actions/node-create.spec.ts @@ -57,7 +57,7 @@ test('attach comment', async ({ page }) => { const start = processEditor.startElement; const comment = processEditor.element('processAnnotation'); const edge = processEditor.edge(); - await expect(comment.locator()).not.toBeVisible(); + await expect(comment.locator()).toBeHidden(); await expect(edge.locator()).toHaveCount(1); await start.quickActionBar().pressShortCut('A'); diff --git a/playwright/tests/standalone/quick-actions/node.spec.ts b/playwright/tests/standalone/quick-actions/node.spec.ts index deea4f82c..d00235b72 100644 --- a/playwright/tests/standalone/quick-actions/node.spec.ts +++ b/playwright/tests/standalone/quick-actions/node.spec.ts @@ -30,7 +30,7 @@ test('delete', async ({ page }) => { const processEditor = await ProcessEditor.openProcess(page); const start = processEditor.startElement; await start.quickActionBar().trigger('Delete'); - await expect(start.locator()).not.toBeVisible(); + await expect(start.locator()).toBeHidden(); }); test('connect', async ({ page }) => { @@ -44,7 +44,7 @@ test('connect', async ({ page }) => { await expect(edge.feedbackLocator()).toBeVisible(); await end.select(); - await expect(edge.feedbackLocator()).not.toBeVisible(); + await expect(edge.feedbackLocator()).toBeHidden(); await expect(edge.locator()).toBeVisible(); }); diff --git a/playwright/tests/viewer/read-only.spec.ts b/playwright/tests/viewer/read-only.spec.ts index 68466ea48..38fa27859 100644 --- a/playwright/tests/viewer/read-only.spec.ts +++ b/playwright/tests/viewer/read-only.spec.ts @@ -6,6 +6,7 @@ test('node removal disabled', async ({ page }) => { const start = processEditor.startElement; await start.select(); await page.keyboard.press('Delete'); + // eslint-disable-next-line playwright/no-wait-for-timeout await page.waitForTimeout(500); await start.isSelected(); });