diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 7018b472..00000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node */
-module.exports = {
- root: true,
- 'extends': [
- 'plugin:vue/vue3-essential',
- 'eslint:recommended',
- 'plugin:cypress/recommended'
- ],
- env: {
- "browser": true,
- "node": true,
- },
- parserOptions: {
- ecmaVersion: 'latest'
- },
- rules: {
- "cypress/no-unnecessary-waiting": 0,
- "cypress/unsafe-to-chain-command": 0,
- "no-unused-vars": 1,
- "vue/no-mutating-props": 0
- }
-}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 00000000..6ba5c849
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,27 @@
+import js from "@eslint/js";
+import vue from "eslint-plugin-vue";
+import cypress from "eslint-plugin-cypress/flat";
+
+import globals from "globals";
+
+export default [
+ js.configs.recommended,
+ ...vue.configs["flat/essential"],
+ cypress.configs.recommended,
+ {
+ files: ["**/*.vue", "**/*.js", "**/*.jsx", "**/*.cjs", "**/*.mjs"],
+ languageOptions: {
+ ecmaVersion: "latest",
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ },
+ },
+ rules: {
+ "cypress/no-unnecessary-waiting": 0,
+ "cypress/unsafe-to-chain-command": 0,
+ "no-unused-vars": 1,
+ "vue/no-mutating-props": 0,
+ },
+ },
+];
diff --git a/package-lock.json b/package-lock.json
index 814d3117..63bde6e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -37,9 +37,9 @@
"@vue/test-utils": "^2.4.5",
"chai-things": "^0.2.0",
"cypress": "^13.16.1",
- "eslint": "^8.56.0",
- "eslint-plugin-cypress": "^3.5.0",
- "eslint-plugin-vue": "^9.28.0",
+ "eslint": "^9.17.0",
+ "eslint-plugin-cypress": "^4.1.0",
+ "eslint-plugin-vue": "^9.32.0",
"happy-dom": "^15.11.7",
"imports-loader": "^5.0.0",
"jsdom": "^25.0.1",
@@ -633,24 +633,50 @@
}
},
"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,
"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,
+ "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/core": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz",
+ "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==",
+ "dev": true,
+ "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,
"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",
@@ -658,34 +684,116 @@
"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"
+ }
+ },
+ "node_modules/@eslint/eslintrc/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,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"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,
"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,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "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/@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,
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">=10.10.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "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,
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
"node_modules/@humanwhocodes/module-importer": {
@@ -701,12 +809,18 @@
"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,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
@@ -1723,8 +1837,7 @@
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@types/node": {
"version": "22.5.4",
@@ -1767,12 +1880,6 @@
"@types/node": "*"
}
},
- "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-vue": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz",
@@ -2201,9 +2308,9 @@
}
},
"node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -3483,18 +3590,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-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -3966,76 +4061,92 @@
}
},
"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,
"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"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-cypress": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz",
- "integrity": "sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-4.1.0.tgz",
+ "integrity": "sha512-JhqkMY02mw74USwK9OFhectx3YSj6Co1NgWBxlGdKvlqiAp9vdEuQqt33DKGQFvvGS/NWtduuhWXWNnU29xDSg==",
"dev": true,
"dependencies": {
- "globals": "^13.20.0"
+ "globals": "^15.11.0"
},
"peerDependencies": {
- "eslint": ">=7"
+ "eslint": ">=9"
+ }
+ },
+ "node_modules/eslint-plugin-cypress/node_modules/globals": {
+ "version": "15.14.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
+ "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-plugin-vue": {
- "version": "9.28.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz",
- "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==",
+ "version": "9.32.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz",
+ "integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
@@ -4082,6 +4193,57 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint/node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "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,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -4359,15 +4521,15 @@
}
},
"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,
"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": {
@@ -4449,23 +4611,22 @@
}
},
"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,
"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": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
"dev": true
},
"node_modules/focus-trap": {
@@ -4821,12 +4982,6 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
"node_modules/handlebars": {
"version": "4.7.8",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
@@ -9476,15 +9631,6 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -10123,43 +10269,6 @@
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
"dev": true
},
- "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_modules/rimraf/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/rollup": {
"version": "4.22.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
@@ -11407,12 +11516,6 @@
"dev": true,
"peer": true
},
- "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",
diff --git a/package.json b/package.json
index a5e01ef9..f7bfa0d3 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"test:unit": "vitest --dom",
"test:e2e": "cypress run",
"test:long-running": "E2E_MODE=long-running vue-cli-service test:e2e",
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
+ "lint": "eslint . --fix --ignore-pattern .gitignore --ignore-pattern dist",
"docker": "docker run --rm -p8080:80 --name liwo-static -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro -v $(pwd)/dist:/usr/share/nginx/html nginx",
"release": "semantic-release"
},
@@ -43,9 +43,9 @@
"@vue/test-utils": "^2.4.5",
"chai-things": "^0.2.0",
"cypress": "^13.16.1",
- "eslint": "^8.56.0",
- "eslint-plugin-cypress": "^3.5.0",
- "eslint-plugin-vue": "^9.28.0",
+ "eslint": "^9.17.0",
+ "eslint-plugin-cypress": "^4.1.0",
+ "eslint-plugin-vue": "^9.32.0",
"happy-dom": "^15.11.7",
"imports-loader": "^5.0.0",
"jsdom": "^25.0.1",
diff --git a/src/components/CookieLaw.vue b/src/components/CookieLaw.vue
index 3bb2fa8b..7d4c0440 100644
--- a/src/components/CookieLaw.vue
+++ b/src/components/CookieLaw.vue
@@ -164,7 +164,7 @@
window.localStorage.setItem(test, test)
window.localStorage.removeItem(test)
}
- } catch (e) {
+ } catch {
console.info('Local storage is not supported, falling back to cookie use')
this.supportsLocalStorage = false
}
diff --git a/src/components/MapImageControl.vue b/src/components/MapImageControl.vue
index 2354bec1..61a06e43 100644
--- a/src/components/MapImageControl.vue
+++ b/src/components/MapImageControl.vue
@@ -149,7 +149,7 @@ export default {
.filter(({ enabled }) => enabled)
.map(({ className }) => className)
// exclude enabled controls from list of classes to hide
- // eslint-disable-next-line no-unused-vars
+
const disabledControlClasses = allControls.filter(controlClass => !enabledControlClasses.includes(controlClass))
this.map.printPlugin.options.hideClasses = [...this.map.printPlugin.options.hideClasses, ...disabledControlClasses]
diff --git a/src/lib/leaflet-utils/create-crs.js b/src/lib/leaflet-utils/create-crs.js
index e9f45d50..d9a8bab4 100644
--- a/src/lib/leaflet-utils/create-crs.js
+++ b/src/lib/leaflet-utils/create-crs.js
@@ -3,11 +3,11 @@ import { EPSG_3857 } from './projections'
const RD = new L.Proj.CRS(
'EPSG:28992',
- '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087,465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs', { // eslint-disable-line no-undef
- transformation: L.Transformation(-1, -1, 0, 0), // eslint-disable-line no-undef
+ '+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087,465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs', {
+ transformation: L.Transformation(-1, -1, 0, 0),
resolutions: [3440.640, 1720.320, 860.160, 430.080, 215.040, 107.520, 53.760, 26.880, 13.440, 6.720, 3.360, 1.680, 0.840, 0.420],
origin: [-285401.920, 903401.920],
- bounds: L.bounds([-285401.920, 903401.920], [595401.920, 22598.080]) // eslint-disable-line no-undef
+ bounds: L.bounds([-285401.920, 903401.920], [595401.920, 22598.080])
})
export default function createCrs (projection) {
diff --git a/src/lib/leaflet-utils/markers.js b/src/lib/leaflet-utils/markers.js
index 3fade59f..5571d090 100644
--- a/src/lib/leaflet-utils/markers.js
+++ b/src/lib/leaflet-utils/markers.js
@@ -45,7 +45,6 @@ import icon_240_60_60_retinaUrl from '../../img/markers/2x/240-60-60@2x.png'
import icon_270_60_60_retinaUrl from '../../img/markers/2x/270-60-60@2x.png'
import icon_300_60_60_retinaUrl from '../../img/markers/2x/300-60-60@2x.png'
import icon_330_60_60_retinaUrl from '../../img/markers/2x/330-60-60@2x.png'
-/* eslint camelcase: 2 */
export const defaultIcon = new L.Icon.Default()
@@ -88,7 +87,6 @@ export const greyIcon = L.icon({
...iconDefaults
})
-/* eslint camelcase: 0 */
// same as grey icon
export const icon_0_0_60 = L.icon({
iconUrl: icon_0_0_60_url,
diff --git a/src/map.config.js b/src/map.config.js
index a4fbb500..ca2dce05 100644
--- a/src/map.config.js
+++ b/src/map.config.js
@@ -1,4 +1,4 @@
-// eslint-disable-next-line
+
import { EPSG_28992, EPSG_3857 } from './lib/leaflet-utils/projections';
diff --git a/tests/e2e/.eslintrc.js b/tests/e2e/.eslintrc.js
deleted file mode 100644
index 97258ef4..00000000
--- a/tests/e2e/.eslintrc.js
+++ /dev/null
@@ -1,11 +0,0 @@
-module.exports = {
- plugins: [
- 'cypress'
- ],
- env: {
- mocha: true,
- },
- rules: {
- strict: 'off'
- }
-}
diff --git a/tests/e2e/eslint.config.mjs b/tests/e2e/eslint.config.mjs
new file mode 100644
index 00000000..869fc4a4
--- /dev/null
+++ b/tests/e2e/eslint.config.mjs
@@ -0,0 +1,17 @@
+import cypress from "eslint-plugin-cypress";
+
+export default [
+ {
+ plugins: {
+ cypress: cypress,
+ },
+ languageOptions: {
+ globals: {
+ mocha: true,
+ },
+ },
+ rules: {
+ strict: "off",
+ },
+ },
+];
diff --git a/tests/e2e/plugins/index.js b/tests/e2e/plugins/index.js
index 56d01bc4..2899d395 100644
--- a/tests/e2e/plugins/index.js
+++ b/tests/e2e/plugins/index.js
@@ -1,4 +1,4 @@
-/* eslint-disable arrow-body-style */
+
// https://docs.cypress.io/guides/guides/plugins-guide.html
const getLayers = require("../lib/get-layers");
diff --git a/tests/e2e/specs/ui/scenarios/notifications.js b/tests/e2e/specs/ui/scenarios/notifications.js
index 55598243..4cfb4a01 100644
--- a/tests/e2e/specs/ui/scenarios/notifications.js
+++ b/tests/e2e/specs/ui/scenarios/notifications.js
@@ -2,7 +2,7 @@ import { generateSelector as selector } from '../../../lib/generate-selector'
import mockLayerSetData from '../../../mock/layerset.json'
const mockDataScenarios = {
- // eslint-disable-next-line quote-props, quotes
+
"d": "[{\"layerset\": [{\"breachlocation_id\": 1201, \"name\": \"Waterdiepte_flood_scenario_set\", \"id\": 34, \"notification\": null, \"layers\": [{\"name\": \"Waterdiepte\", \"id\": 62, \"notification\": null, \"visible\": true, \"extent\": {\"epsgcode\": \"4326,0\", \"minx\": 1.5710449, \"maxx\": 9.019775, \"miny\": 50.2753, \"maxy\": 53.61094}, \"legend\": {\"title\": \"Maximale waterdiepte [m]\", \"style\": \"liwo_waterdiepte_band1\", \"layer\": \"scenario_18309\"}, \"variants\": [{\"title\": \"Kans 1 op 10000\", \"subtitle\": \"Overstromingsscenarios - waterdiepte - Dijkring 44 - Kromme Rijn - IJmuiden - T10000\", \"notification\": \"Deze overstroming kan tot nieuwe dijkdoorbraken leiden bij Halfweg, Amsterdam Zuid, Amsterdam Noord of Zaandam (dijkring 13 en 14)\", \"metadata\": {\"title\": \"IJmuiden referentie TP\", \"abstract\": \"Scenarionaam = IJmuiden referentie TP
Scenario ID = 18309
Scenariodatum = 2015-11-02
Eigenaar = Provincie Noord-Holland
Type overstroming = B
Naam doorbraaklocatie = IJmuiden
X-coordinaat doorbraaklocatie = 98730.0000705
Y-coordinaat doorbraaklocatie = 497900.000468
Overschrijdingsfrequentie = 10000
Gebiedsnaam = Dijkring 44 - Kromme Rijn
Naam buitenwater = Noordzee
Buitenwater type = zee
Naam waterkering = Sluis IJmuiden
Totaal schade = 6300.0
Totaal aantal slachtoffers = 208.0
Aantal getroffenen = 101200.0
Modelleersoftware = 2.13
Modelversie = Sobek
Motivatie rekenmethode = Normering dijkring 44
Doel scenario = In kaart brengen van schade bij falen van regionale keringen door doorbraak bij IJmuiden
Berekeningsmethode = 2d model
Modelresolutie = 100
Standzekere regionale keringen = Ja
Bresdiepte = -999.0
Initiele bresbreedte = 50.0\", \"source\": \"Provincie Noord-Holland\", \"spatial_resolution\": \"100\", \"contact\": null, \"link\": null, \"last_updated\": null, \"update_interval\": null, \"version\": null, \"keywords\": \"2.13;2d model\", \"epsg\": null, \"bbox_wgs84\": null, \"usage_limitations\": null}, \"properties\": {\"layer\": \"scenario_18309\", \"Scenarionaam\": \"IJmuiden referentie TP\", \"Scenario ID\": \"18309\", \"Eigenaar\": \"Provincie Noord-Holland\", \"Type overstroming\": \"B\", \"Naam doorbraaklocatie\": \"IJmuiden\", \"X-coordinaat doorbraaklocatie\": 98730.0000705, \"Y-coordinaat doorbraaklocatie\": 497900.000468, \"Overschrijdingsfrequentie\": \"10000\", \"Stormvloedkering open\": \" \", \"Gebiedsnaam\": \"Dijkring 44 - Kromme Rijn\", \"Naam buitenwater\": \"Noordzee\", \"Buitenwater type\": \"zee\", \"Totaal schade\": \"6300.0\", \"Totaal aantal slachtoffers\": \"208.0\", \"Aantal getroffenen\": \"101200.0\", \"Modelleersoftware\": \"2.13\", \"Modelversie\": \"Sobek\", \"Motivatie rekenmethode\": \"Normering dijkring 44\", \"Doel scenario\": \"In kaart brengen van schade bij falen van regionale keringen door doorbraak bij IJmuiden\", \"Berekeningsmethode\": \"2d model\", \"Modelresolutie\": \"100\", \"Standzekere regionale keringen\": \"Ja\", \"Initiele bresbreedte\": \"50.0\", \"Methode bresgroei\": \" \", \"Maximale bresbreedte\": \" \", \"Bodemhoogte model\": \" \", \"Ruwheid model\": \" \", \"Toestand SVK\": null, \"Bresvorming dijk\": \"Ja\", \"Moment van falen\": null, \"waterstandsverloop\": null, \"Bresvorming kunstwerk\": null, \"Standzekerheid achterliggende lijnelementen\": null, \"Ingrepen in watersysteem\": null, \"klimaatscenario\": null, \"Dreigende overstroming\": 0}, \"map\": {\"namespace\": \"LIWO_Primair\", \"type\": \"WMS\", \"datatype\": \"geotiff\", \"layer\": \"scenario_18309\", \"map_id\": 12425, \"style\": \"liwo_waterdiepte_band1\"}}, {\"title\": \"Kans 1 op 100000\", \"subtitle\": \"Overstromingsscenarios - waterdiepte - Dijkring 44 - Kromme Rijn - IJmuiden - T100000\", \"notification\": \"Deze overstroming kan tot nieuwe dijkdoorbraken leiden bij Halfweg, Amsterdam Zuid, Amsterdam Noord of Zaandam (dijkring 13 en 14)\", \"metadata\": {\"title\": \"IJmuiden referentie TP+1D\", \"abstract\": \"Scenarionaam = IJmuiden referentie TP+1D
Scenario ID = 18310
Scenariodatum = 2015-11-02
Eigenaar = Provincie Noord-Holland
Type overstroming = B
Naam doorbraaklocatie = IJmuiden
X-coordinaat doorbraaklocatie = 98730.0000705
Y-coordinaat doorbraaklocatie = 497900.000468
Overschrijdingsfrequentie = 100000
Gebiedsnaam = Dijkring 44 - Kromme Rijn
Naam buitenwater = Noordzee
Buitenwater type = zee
Naam waterkering = Sluis IJmuiden
Totaal schade = 12000.0
Totaal aantal slachtoffers = 569.0
Aantal getroffenen = 267000.0
Modelleersoftware = 2.13
Modelversie = Sobek
Motivatie rekenmethode = Normering dijkring 44
Doel scenario = In kaart brengen van schade bij falen van regionale keringen door doorbraak bij IJmuiden
Berekeningsmethode = 2d model
Modelresolutie = 100
Standzekere regionale keringen = Ja
Bresdiepte = -999.0
Initiele bresbreedte = 50.0\", \"source\": \"Provincie Noord-Holland\", \"spatial_resolution\": \"100\", \"contact\": null, \"link\": null, \"last_updated\": null, \"update_interval\": null, \"version\": null, \"keywords\": \"2.13;2d model\", \"epsg\": null, \"bbox_wgs84\": null, \"usage_limitations\": null}, \"properties\": {\"layer\": \"scenario_18310\", \"Scenarionaam\": \"IJmuiden referentie TP+1D\", \"Scenario ID\": \"18310\", \"Eigenaar\": \"Provincie Noord-Holland\", \"Type overstroming\": \"B\", \"Naam doorbraaklocatie\": \"IJmuiden\", \"X-coordinaat doorbraaklocatie\": 98730.0000705, \"Y-coordinaat doorbraaklocatie\": 497900.000468, \"Overschrijdingsfrequentie\": \"100000\", \"Stormvloedkering open\": \" \", \"Gebiedsnaam\": \"Dijkring 44 - Kromme Rijn\", \"Naam buitenwater\": \"Noordzee\", \"Buitenwater type\": \"zee\", \"Totaal schade\": \"12000.0\", \"Totaal aantal slachtoffers\": \"569.0\", \"Aantal getroffenen\": \"267000.0\", \"Modelleersoftware\": \"2.13\", \"Modelversie\": \"Sobek\", \"Motivatie rekenmethode\": \"Normering dijkring 44\", \"Doel scenario\": \"In kaart brengen van schade bij falen van regionale keringen door doorbraak bij IJmuiden\", \"Berekeningsmethode\": \"2d model\", \"Modelresolutie\": \"100\", \"Standzekere regionale keringen\": \"Ja\", \"Initiele bresbreedte\": \"50.0\", \"Methode bresgroei\": \" \", \"Maximale bresbreedte\": \" \", \"Bodemhoogte model\": \" \", \"Ruwheid model\": \" \", \"Toestand SVK\": null, \"Bresvorming dijk\": \"Ja\", \"Moment van falen\": null, \"waterstandsverloop\": null, \"Bresvorming kunstwerk\": null, \"Standzekerheid achterliggende lijnelementen\": null, \"Ingrepen in watersysteem\": null, \"klimaatscenario\": null, \"Dreigende overstroming\": 0}, \"map\": {\"namespace\": \"LIWO_Primair\", \"type\": \"WMS\", \"datatype\": \"geotiff\", \"layer\": \"scenario_18310\", \"map_id\": 12432, \"style\": \"liwo_waterdiepte_band1\"}}, {\"title\": \"Kans 1 op 3000\", \"subtitle\": \"Overstromingsscenarios - waterdiepte - Dijkring 44 - Kromme Rijn - IJmuiden - T3000\", \"notification\": \"Deze overstroming kan tot nieuwe dijkdoorbraken leiden bij Halfweg, Amsterdam Zuid, Amsterdam Noord of Zaandam (dijkring 13 en 14)\", \"metadata\": {\"title\": \"Ijmuiden- zonder bres (overschrijding kombergend vermogen)\", \"abstract\": \"Scenarionaam = Ijmuiden- zonder bres (overschrijding kombergend vermogen)
Scenario ID = 21106
Scenariodatum = 2019-11-28
Eigenaar = RWS Waterdienst
Type overstroming = B
Naam doorbraaklocatie = IJmuiden
X-coordinaat doorbraaklocatie = 98730.0000705
Y-coordinaat doorbraaklocatie = 497900.000468
Overschrijdingsfrequentie = 3000
Gebiedsnaam = Dijkring 44 - Kromme Rijn
Naam buitenwater = Noordzee
Buitenwater type = zee
Totaal schade = 840000.0
Totaal aantal slachtoffers = 13.0
Aantal getroffenen = 7724.0
Modelleersoftware = SOBEK
Modelversie = 1
Motivatie rekenmethode = Normering dijkring 44
Doel scenario = Ijmuiden toegevoegd scenario ROR
Berekeningsmethode = 2d model
Modelresolutie = 100
Standzekere regionale keringen = Ja
Bresdiepte = -999.0
Initiele bresbreedte = -999.0\", \"source\": \"RWS Waterdienst\", \"spatial_resolution\": \"100\", \"contact\": null, \"link\": null, \"last_updated\": null, \"update_interval\": null, \"version\": null, \"keywords\": \"SOBEK;2d model\", \"epsg\": null, \"bbox_wgs84\": null, \"usage_limitations\": null}, \"properties\": {\"layer\": \"scenario_21106\", \"Scenarionaam\": \"Ijmuiden- zonder bres (overschrijding kombergend vermogen)\", \"Scenario ID\": \"21106\", \"Eigenaar\": \"RWS Waterdienst\", \"Type overstroming\": \"B\", \"Naam doorbraaklocatie\": \"IJmuiden\", \"X-coordinaat doorbraaklocatie\": 98730.0000705, \"Y-coordinaat doorbraaklocatie\": 497900.000468, \"Overschrijdingsfrequentie\": \"3000\", \"Stormvloedkering open\": \" \", \"Gebiedsnaam\": \"Dijkring 44 - Kromme Rijn\", \"Naam buitenwater\": \"Noordzee\", \"Buitenwater type\": \"zee\", \"Totaal schade\": \"840000.0\", \"Totaal aantal slachtoffers\": \"13.0\", \"Aantal getroffenen\": \"7724.0\", \"Modelleersoftware\": \"SOBEK\", \"Modelversie\": \"1\", \"Motivatie rekenmethode\": \"Normering dijkring 44\", \"Doel scenario\": \"Ijmuiden toegevoegd scenario ROR\", \"Berekeningsmethode\": \"2d model\", \"Modelresolutie\": \"100\", \"Standzekere regionale keringen\": \"Ja\", \"Initiele bresbreedte\": \"-999.0\", \"Methode bresgroei\": \" \", \"Maximale bresbreedte\": \" \", \"Bodemhoogte model\": \" \", \"Ruwheid model\": \" \", \"Toestand SVK\": null, \"Bresvorming dijk\": \"Nee\", \"Moment van falen\": null, \"waterstandsverloop\": null, \"Bresvorming kunstwerk\": null, \"Standzekerheid achterliggende lijnelementen\": null, \"Ingrepen in watersysteem\": null, \"klimaatscenario\": null, \"Dreigende overstroming\": 0}, \"map\": {\"namespace\": \"LIWO_Primair\", \"type\": \"WMS\", \"datatype\": \"geotiff\", \"layer\": \"scenario_21106\", \"map_id\": 12439, \"style\": \"liwo_waterdiepte_band1\"}}]}]}]}]"
}
const url = '/#/scenarios/6/13536'
diff --git a/tests/unit/.eslintrc.js b/tests/unit/.eslintrc.js
deleted file mode 100644
index 8038afe9..00000000
--- a/tests/unit/.eslintrc.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
- env: {
- mocha: true
- },
- rules: {
- 'import/no-extraneous-dependencies': 'off'
- }
-}
diff --git a/tests/unit/eslint.config.mjs b/tests/unit/eslint.config.mjs
new file mode 100644
index 00000000..54596202
--- /dev/null
+++ b/tests/unit/eslint.config.mjs
@@ -0,0 +1,12 @@
+export default [
+ {
+ languageOptions: {
+ globals: {
+ mocha: true,
+ },
+ },
+ rules: {
+ "import/no-extraneous-dependencies": "off",
+ },
+ },
+];