diff --git a/eslint.config.mjs b/eslint.config.mjs
index 7a0d830..d53ff03 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,20 +1,21 @@
-import { defineConfig, globalIgnores } from 'eslint/config'
+import { defineConfig, globalIgnores } from 'eslint/config';
import js from '@eslint/js';
+import stylistic from '@stylistic/eslint-plugin';
import globals from 'globals';
export default defineConfig([
- globalIgnores([
- 'build/*',
- 'js/OpenLayers-*/**',
- 'opening_hours.js/**',
- 'node_modules/**'
- ]),
-
+ globalIgnores([
+ 'build/*',
+ 'js/OpenLayers-*/**',
+ 'opening_hours.js/**',
+ ]),
{
- files: ['**/*.js'],
- extends: [js.configs.recommended],
+ files: ['**/*.js', '**/*.mjs'],
+ extends: [js.configs.recommended],
+ plugins: {
+ '@stylistic': stylistic,
+ },
languageOptions: {
- ecmaVersion: 'latest',
sourceType: 'module',
globals: {
...globals.browser,
@@ -33,14 +34,15 @@ export default defineConfig([
},
},
rules: {
- "no-var": "error",
- "prefer-const": "error",
- "prefer-template": "error",
- "template-curly-spacing": ["error", "never"],
+ 'no-var': 'error',
+ 'prefer-const': 'error',
+ 'prefer-template': 'error',
+ '@stylistic/semi': ['error', 'always'],
+ '@stylistic/quotes': ['error', 'single'],
},
},
{
- // Legacy non-module scripts (OpenLayers, etc.)
+ // Legacy non-module scripts (OpenLayers, etc.)
files: [
'js/OpenStreetMap.js',
'js/popupmarker.js',
@@ -54,7 +56,5 @@ export default defineConfig([
OpenLayers: 'readonly',
},
},
- rules: {
- },
},
-])
+]);
diff --git a/js/loadstatus.js b/js/loadstatus.js
index a448582..c3da08d 100644
--- a/js/loadstatus.js
+++ b/js/loadstatus.js
@@ -33,7 +33,7 @@ OpenLayers.Control.LoadStatus=OpenLayers.Class(OpenLayers.Control,{
for (const layer in this.map.layers) {
this.attachLayer (layer);
}
- this.map.events.register ("addlayer", this, this.registerLayer);
+ this.map.events.register ('addlayer', this, this.registerLayer);
},
registerLayer: function (evt) {
@@ -42,15 +42,15 @@ OpenLayers.Control.LoadStatus=OpenLayers.Class(OpenLayers.Control,{
attachLayer: function (layer) {
if (!layer || layer==this || !layer.events || layer.noLoadStatus) { return; }
- layer.events.register ("loadend", this, this.eventHandler);
- layer.events.register ("loadstart", this, this.eventHandler);
+ layer.events.register ('loadend', this, this.eventHandler);
+ layer.events.register ('loadstart', this, this.eventHandler);
},
eventHandler: function (evt) {
- if (evt && evt.type=="loadstart") {
+ if (evt && evt.type=='loadstart') {
this.loadStatus[evt.object.id] = evt.object.name || evt.object.id;
}
- if (evt && evt.type=="loadend") {
+ if (evt && evt.type=='loadend') {
this.loadStatus[evt.object.id] = null;
}
const list = [];
@@ -59,10 +59,10 @@ OpenLayers.Control.LoadStatus=OpenLayers.Class(OpenLayers.Control,{
}
const text=this.options.html || this.defaultHtml;
this.div.innerHTML=OpenLayers.String.format(text, {layers: list.join(',
')});
- this.div.style.display = list.length>=1 ? "block" : "none";
+ this.div.style.display = list.length>=1 ? 'block' : 'none';
},
- CLASS_NAME:"OpenLayers.Control.LoadStatus"
+ CLASS_NAME:'OpenLayers.Control.LoadStatus'
});
//--------------------------------------------------------------------------------
diff --git a/js/main.js b/js/main.js
index 78a9d2c..ca321ca 100644
--- a/js/main.js
+++ b/js/main.js
@@ -416,7 +416,7 @@ function createMap() {
}
let crashed, oh, it;
- if (["collection_times", "service_times"].includes(data._oh_key)) {
+ if (['collection_times', 'service_times'].includes(data._oh_key)) {
OHMode = 2;
}
try {
@@ -693,7 +693,7 @@ function initializeUI() {
const showFilterOptions = ['none', 'error', 'warnOnly', 'errorOnly', 'open', 'unknown', 'closed', 'openOrUnknown'];
for (let i = 0; i < showFilterOptions.length; i++) {
const filter_id = showFilterOptions[i];
- filterHTML += `
`;
diff --git a/js/popupmarker.js b/js/popupmarker.js
index 3d76a2d..983d82d 100644
--- a/js/popupmarker.js
+++ b/js/popupmarker.js
@@ -55,9 +55,9 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
// Set CSS classes
if (marker.icon && marker.icon.imageDiv) {
- marker.icon.imageDiv.className = "olPopupMarker";
+ marker.icon.imageDiv.className = 'olPopupMarker';
if (marker.icon.imageDiv.firstChild) {
- marker.icon.imageDiv.firstChild.className = "olPopupMarker";
+ marker.icon.imageDiv.firstChild.className = 'olPopupMarker';
}
}
@@ -67,8 +67,8 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
// Attach click handler
if (marker.icon && marker.icon.imageDiv) {
- OpenLayers.Event.observe(marker.icon.imageDiv, "click", OpenLayers.Function.bindAsEventListener(this.markerClick, marker));
- OpenLayers.Event.observe(marker.icon.imageDiv, "touchend", OpenLayers.Function.bindAsEventListener(this.markerClick, marker));
+ OpenLayers.Event.observe(marker.icon.imageDiv, 'click', OpenLayers.Function.bindAsEventListener(this.markerClick, marker));
+ OpenLayers.Event.observe(marker.icon.imageDiv, 'touchend', OpenLayers.Function.bindAsEventListener(this.markerClick, marker));
}
this.addMarker(marker);
return marker;
@@ -134,7 +134,7 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
}
this.map.addPopup(this.currentPopup);
- this.map.events.triggerEvent("popupopen");
+ this.map.events.triggerEvent('popupopen');
},
/**
@@ -146,7 +146,7 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
this.currentPopup.destroy();
this.currentPopup = null;
- this.map.events.triggerEvent("popupclose");
+ this.map.events.triggerEvent('popupclose');
return true;
},
@@ -177,8 +177,8 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
* @returns {string} Escaped HTML
*/
html: function (text) {
- if (text === null || text === undefined) return "";
- return String(text).replace(/&/g, "&").replace(//g, ">");
+ if (text === null || text === undefined) return '';
+ return String(text).replace(/&/g, '&').replace(//g, '>');
},
/**
@@ -197,7 +197,7 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
* @returns {string} HTML content
*/
createHtmlFromData: function (data) {
- return `
Marker: ${this.html(data.id || "unknown")}
`;
+ return `Marker: ${this.html(data.id || 'unknown')}
`;
},
/**
@@ -213,8 +213,8 @@ OpenLayers.Layer.PopupMarker = OpenLayers.Class(OpenLayers.Layer.Markers, {
items.push(this.createHtmlFromData(list[i]));
}
- return items.join("
\n");
+ return items.join('
\n');
},
- CLASS_NAME: "OpenLayers.Layer.PopupMarker",
+ CLASS_NAME: 'OpenLayers.Layer.PopupMarker',
});
diff --git a/package-lock.json b/package-lock.json
index 04a47b6..ef8e267 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,9 +10,10 @@
"license": "GPL-3.0-or-later",
"devDependencies": {
"@eslint/js": "^10.0.1",
- "eslint": "^10.0.0",
- "globals": "^17.3.0",
- "html-validate": "^10.7.0"
+ "@stylistic/eslint-plugin": "^5.10.0",
+ "eslint": "^10.4.0",
+ "globals": "^17.6.0",
+ "html-validate": "^11.2.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -58,37 +59,37 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.23.1",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.1.tgz",
- "integrity": "sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==",
+ "version": "0.23.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
+ "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/object-schema": "^3.0.1",
+ "@eslint/object-schema": "^3.0.5",
"debug": "^4.3.1",
- "minimatch": "^10.1.1"
+ "minimatch": "^10.2.4"
},
"engines": {
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
"node_modules/@eslint/config-helpers": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
- "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
+ "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^1.1.0"
+ "@eslint/core": "^1.2.1"
},
"engines": {
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
"node_modules/@eslint/core": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
- "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -120,9 +121,9 @@
}
},
"node_modules/@eslint/object-schema": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.1.tgz",
- "integrity": "sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
+ "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -130,13 +131,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
- "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz",
+ "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^1.1.0",
+ "@eslint/core": "^1.2.1",
"levn": "^0.4.1"
},
"engines": {
@@ -144,42 +145,53 @@
}
},
"node_modules/@html-validate/stylish": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@html-validate/stylish/-/stylish-4.3.0.tgz",
- "integrity": "sha512-eUfvKpRJg5TvzSfTf2EovrQoTKjkRnPUOUnXVJ2cQ4GbC/bQw98oxN+DdSf+HxOBK00YOhsP52xWdJPV1o4n5w==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@html-validate/stylish/-/stylish-6.0.0.tgz",
+ "integrity": "sha512-d1/lI3qIXhGVJF3+MmKEBn1dRX6U4Z+BDaOdDI3E6SXcO+OQ7hC/3mSo6BIjwQlcuV6NdDOKm6QCrzIQL1EezQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "kleur": "^4.0.0"
- },
"engines": {
- "node": ">= 18"
+ "node": "^22.16.0 || >= 24.0.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==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
"dev": true,
"license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/@humanfs/node": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
- "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanfs/core": "^0.19.1",
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
"@humanwhocodes/retry": "^0.4.0"
},
"engines": {
"node": ">=18.18.0"
}
},
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -208,27 +220,56 @@
"url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@isaacs/balanced-match": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
+ "node_modules/@stylistic/eslint-plugin": {
+ "version": "5.10.0",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz",
+ "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/types": "^8.56.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "estraverse": "^5.3.0",
+ "picomatch": "^4.0.3"
+ },
"engines": {
- "node": "20 || >=22"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "eslint": "^9.0.0 || ^10.0.0"
}
},
- "node_modules/@isaacs/brace-expansion": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
- "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
+ "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@stylistic/eslint-plugin/node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "@isaacs/balanced-match": "^4.0.1"
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "20 || >=22"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/@types/esrecurse": {
@@ -239,9 +280,9 @@
"license": "MIT"
},
"node_modules/@types/estree": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
- "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
"dev": true,
"license": "MIT"
},
@@ -252,10 +293,24 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+ "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -276,9 +331,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -292,6 +347,29 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -346,29 +424,29 @@
}
},
"node_modules/eslint": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.0.tgz",
- "integrity": "sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.0.tgz",
+ "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.2",
- "@eslint/config-array": "^0.23.0",
- "@eslint/config-helpers": "^0.5.2",
- "@eslint/core": "^1.1.0",
- "@eslint/plugin-kit": "^0.6.0",
+ "@eslint/config-array": "^0.23.5",
+ "@eslint/config-helpers": "^0.6.0",
+ "@eslint/core": "^1.2.1",
+ "@eslint/plugin-kit": "^0.7.1",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
- "ajv": "^6.12.4",
+ "ajv": "^6.14.0",
"cross-spawn": "^7.0.6",
"debug": "^4.3.2",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^9.1.0",
- "eslint-visitor-keys": "^5.0.0",
- "espree": "^11.1.0",
+ "eslint-scope": "^9.1.2",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.2.0",
"esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -379,7 +457,7 @@
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "minimatch": "^10.1.1",
+ "minimatch": "^10.2.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3"
},
@@ -402,9 +480,9 @@
}
},
"node_modules/eslint-scope": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.0.tgz",
- "integrity": "sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==",
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+ "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -421,9 +499,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz",
- "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -434,15 +512,15 @@
}
},
"node_modules/espree": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.0.tgz",
- "integrity": "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==",
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+ "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.15.0",
+ "acorn": "^8.16.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^5.0.0"
+ "eslint-visitor-keys": "^5.0.1"
},
"engines": {
"node": "^20.19.0 || ^22.13.0 || >=24"
@@ -519,9 +597,9 @@
"license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
"dev": true,
"funding": [
{
@@ -580,30 +658,12 @@
}
},
"node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"dev": true,
"license": "ISC"
},
- "node_modules/glob": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.1.tgz",
- "integrity": "sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minimatch": "^10.1.2",
- "minipass": "^7.1.2",
- "path-scurry": "^2.0.0"
- },
- "engines": {
- "node": "20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -618,9 +678,9 @@
}
},
"node_modules/globals": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz",
- "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==",
+ "version": "17.6.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz",
+ "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -631,9 +691,9 @@
}
},
"node_modules/html-validate": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/html-validate/-/html-validate-10.7.0.tgz",
- "integrity": "sha512-OdHvkFEHVK0uFUF6OM/SwDXvFu8WIgKPEw4VTgJZ2yQ1tkS2CydTV2bOfGoR8tZgu3I9Y8iJH0mGteDS78KQUA==",
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/html-validate/-/html-validate-11.2.0.tgz",
+ "integrity": "sha512-6aHphdi3SPs4CbliRNjoXUVgn23yeUvnQMIzy/W9Stq0MbLOXe2M97gsdpIIQpgeReQFoEaYnhYFqVTA4j7v/w==",
"dev": true,
"funding": [
{
@@ -643,12 +703,10 @@
],
"license": "MIT",
"dependencies": {
- "@html-validate/stylish": "^4.1.0",
- "@sidvind/better-ajv-errors": "4.0.1",
+ "@html-validate/stylish": "^6.0.0",
+ "@sidvind/better-ajv-errors": "7.0.0",
"ajv": "^8.0.0",
- "glob": "^13.0.0",
"kleur": "^4.1.0",
- "minimist": "^1.2.0",
"prompts": "^2.0.0",
"semver": "^7.0.0"
},
@@ -656,19 +714,23 @@
"html-validate": "bin/html-validate.mjs"
},
"engines": {
- "node": "^20.19.0 || >= 22.12.0"
+ "node": "^22.17.0 || >= 24.0.0"
},
"peerDependencies": {
- "jest": "^28.1.3 || ^29.0.3 || ^30.0.0",
- "jest-diff": "^28.1.3 || ^29.0.3 || ^30.0.0",
- "jest-snapshot": "^28.1.3 || ^29.0.3 || ^30.0.0",
- "vitest": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.1"
+ "@jest/globals": "^29.0.3 || ^30.0.0",
+ "@vitest/expect": "^3.0.0 || ^4.0.1",
+ "jest": "^29.0.3 || ^30.0.0",
+ "jest-snapshot": "^29.0.3 || ^30.0.0",
+ "vitest": "^3.0.0 || ^4.0.1"
},
"peerDependenciesMeta": {
- "jest": {
+ "@jest/globals": {
+ "optional": true
+ },
+ "@vitest/expect": {
"optional": true
},
- "jest-diff": {
+ "jest": {
"optional": true
},
"jest-snapshot": {
@@ -680,25 +742,22 @@
}
},
"node_modules/html-validate/node_modules/@sidvind/better-ajv-errors": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@sidvind/better-ajv-errors/-/better-ajv-errors-4.0.1.tgz",
- "integrity": "sha512-6arF1ssKxItxgitPYXafUoLmsVBA6K7m9+ZGj6hLDoBl7nWpJ33EInwQUdHTle2METeWGxgQiqSex20KZRykew==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@sidvind/better-ajv-errors/-/better-ajv-errors-7.0.0.tgz",
+ "integrity": "sha512-imVsp5D3KxJ8+uUmu2dsLKnFg3qdX952v/L1gZoCa0NO2ivhQWHMpYM2KmpFrRXHWFjlqkNZ/935nxiTqXEi1A==",
"dev": true,
"license": "Apache-2.0",
- "dependencies": {
- "kleur": "^4.1.0"
- },
"engines": {
- "node": ">= 18"
+ "node": "^22.12 || >= 24.0"
},
"peerDependencies": {
- "ajv": "^7.0.0 || ^8.0.0"
+ "ajv": "^8.0.0"
}
},
"node_modules/html-validate/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -840,52 +899,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lru-cache": {
- "version": "11.2.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
- "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
"node_modules/minimatch": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz",
- "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==",
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "@isaacs/brace-expansion": "^5.0.1"
+ "brace-expansion": "^5.0.5"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -970,21 +999,17 @@
"node": ">=8"
}
},
- "node_modules/path-scurry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
+ "node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^11.0.0",
- "minipass": "^7.1.2"
- },
+ "license": "MIT",
"engines": {
- "node": "20 || >=22"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/prelude-ls": {
@@ -1042,9 +1067,9 @@
}
},
"node_modules/semver": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
+ "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
"dev": true,
"license": "ISC",
"bin": {
diff --git a/package.json b/package.json
index 5e59a36..dbaea07 100644
--- a/package.json
+++ b/package.json
@@ -12,9 +12,10 @@
},
"devDependencies": {
"@eslint/js": "^10.0.1",
- "eslint": "^10.0.0",
- "globals": "^17.3.0",
- "html-validate": "^10.7.0"
+ "@stylistic/eslint-plugin": "^5.10.0",
+ "eslint": "^10.4.0",
+ "globals": "^17.6.0",
+ "html-validate": "^11.2.0"
},
"repository": {
"type": "git",