diff --git a/package-lock.json b/package-lock.json index 625830832..faac936f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.1", - "@w0s/eslint-config": "^2.0.0", + "@w0s/eslint-config": "^3.0.0", "@w0s/markuplint-config": "^2.5.0", "@w0s/stylelint-config": "^1.2.0", "@w0s/tsconfig": "^1.0.1", @@ -38,7 +38,7 @@ "postcss-import": "^15.1.0", "postcss-media-minmax": "^5.0.0", "postcss-nesting": "^11.2.2", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "rollup": "^3.23.0", "stylelint": "^15.9.0", "stylelint-order": "^6.0.3", @@ -46,6 +46,15 @@ "yaml-lint": "^1.7.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -873,14 +882,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -936,9 +945,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1648,6 +1657,21 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/@markuplint/create-rule-helper/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@markuplint/ejs-parser": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/@markuplint/ejs-parser/-/ejs-parser-3.8.0.tgz", @@ -2672,17 +2696,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz", - "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", + "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.0", - "@typescript-eslint/type-utils": "5.60.0", - "@typescript-eslint/utils": "5.60.0", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/type-utils": "5.61.0", + "@typescript-eslint/utils": "5.61.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", @@ -2706,15 +2730,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.0.tgz", - "integrity": "sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.61.0.tgz", + "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.60.0", - "@typescript-eslint/types": "5.60.0", - "@typescript-eslint/typescript-estree": "5.60.0", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/typescript-estree": "5.61.0", "debug": "^4.3.4" }, "engines": { @@ -2734,13 +2758,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz", - "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", + "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.0", - "@typescript-eslint/visitor-keys": "5.60.0" + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/visitor-keys": "5.61.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2751,13 +2775,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz", - "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz", + "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.0", - "@typescript-eslint/utils": "5.60.0", + "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/utils": "5.61.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2778,9 +2802,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz", - "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", + "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2791,13 +2815,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz", - "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", + "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.0", - "@typescript-eslint/visitor-keys": "5.60.0", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/visitor-keys": "5.61.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2847,17 +2871,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz", - "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.61.0.tgz", + "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.0", - "@typescript-eslint/types": "5.60.0", - "@typescript-eslint/typescript-estree": "5.60.0", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/typescript-estree": "5.61.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -2873,12 +2897,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz", - "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", + "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.0", + "@typescript-eslint/types": "5.61.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2908,17 +2932,17 @@ "link": true }, "node_modules/@w0s/eslint-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@w0s/eslint-config/-/eslint-config-2.0.0.tgz", - "integrity": "sha512-+8hQM2qMfUymjHIMcWxgaKS/LPBPvVMs0dfUlcliHXNZU5nhEX23Y/cGbFa6zBATET+1+GrGvTr606kr3g7XRw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@w0s/eslint-config/-/eslint-config-3.0.0.tgz", + "integrity": "sha512-6mxlf40AKMFVOHcKyCK09X4u+/8oyKrSMmf5SGkU6ZZpt3TNxmOw1EOVH37AGa7csftkAiCO3EVuyrVD/aSrhA==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.60.0", + "@typescript-eslint/eslint-plugin": "^5.61.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-jsdoc": "^46.2.6" + "eslint-plugin-jsdoc": "^46.4.3" }, "peerDependencies": { - "eslint": "^8.39.0" + "eslint": "^8.44.0" } }, "node_modules/@w0s/markuplint-config": { @@ -2986,9 +3010,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5426,15 +5450,15 @@ } }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5446,7 +5470,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -5466,7 +5490,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -5623,9 +5647,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "46.2.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz", - "integrity": "sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA==", + "version": "46.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.3.tgz", + "integrity": "sha512-Prc7ol+vCIghPeECpwZq5+P+VZfoi87suywvbYCiCnkI1kTmVSdcOC2M8mioglWxBbd28wbb1OVjg/8OzGzatA==", "dev": true, "dependencies": { "@es-joy/jsdoccomment": "~0.39.4", @@ -5736,12 +5760,12 @@ "dev": true }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -6768,12 +6792,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/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -8637,6 +8655,21 @@ "node": ">=12.0.0" } }, + "node_modules/json-schema-to-typescript/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -10380,17 +10413,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -11554,14 +11587,14 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", + "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -14347,15 +14380,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -14690,7 +14714,7 @@ "highlight.js": "^11.8.0", "image-size": "^1.0.2", "jsdom": "^22.1.0", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "slash": "^5.1.0", "svgo": "^3.0.2", "xml-formatter": "^2.6.1" diff --git a/package.json b/package.json index 24b541613..58751f522 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@rollup/plugin-node-resolve": "^15.0.2", "@rollup/plugin-terser": "^0.4.3", "@rollup/plugin-typescript": "^11.1.1", - "@w0s/eslint-config": "^2.0.0", + "@w0s/eslint-config": "^3.0.0", "@w0s/markuplint-config": "^2.5.0", "@w0s/stylelint-config": "^1.2.0", "@w0s/tsconfig": "^1.0.1", @@ -39,7 +39,7 @@ "postcss-import": "^15.1.0", "postcss-media-minmax": "^5.0.0", "postcss-nesting": "^11.2.2", - "prettier": "^2.8.8", + "prettier": "^3.0.0", "rollup": "^3.23.0", "stylelint": "^15.9.0", "stylelint-order": "^6.0.3", diff --git a/packages/backend/node/src/app.ts b/packages/backend/node/src/app.ts index e457b5451..2719b05c3 100644 --- a/packages/backend/node/src/app.ts +++ b/packages/backend/node/src/app.ts @@ -172,7 +172,7 @@ app.use( res.setHeader('Content-Security-Policy-Report-Only', config.response.header.cspro_html); } }, - }) + }), ); /** diff --git a/packages/backend/node/src/controller/ContactSendController.ts b/packages/backend/node/src/controller/ContactSendController.ts index 392dd54ed..248b6054e 100644 --- a/packages/backend/node/src/controller/ContactSendController.ts +++ b/packages/backend/node/src/controller/ContactSendController.ts @@ -58,7 +58,7 @@ export default class ContactSendController extends Controller implements Control httpResponse.send303( requestQuery.referrer === null || requestQuery.referrer === '' ? this.#config.url.completed.pathname - : `${this.#config.url.completed.pathname}?${this.#config.url.completed.search['referrer']}=${encodeURIComponent(requestQuery.referrer)}` + : `${this.#config.url.completed.pathname}?${this.#config.url.completed.search['referrer']}=${encodeURIComponent(requestQuery.referrer)}`, ); return; } diff --git a/packages/backend/node/src/controller/CrawlerNewsController.ts b/packages/backend/node/src/controller/CrawlerNewsController.ts index 828f7ab82..f39d8843e 100644 --- a/packages/backend/node/src/controller/CrawlerNewsController.ts +++ b/packages/backend/node/src/controller/CrawlerNewsController.ts @@ -79,7 +79,7 @@ export default class CrawlerNewsController extends Controller implements Control requestQuery.browser, requestQuery.selector_wrap, requestQuery.selector_date, - requestQuery.selector_content + requestQuery.selector_content, ); this.logger.info('データ登録', requestQuery.url); @@ -107,7 +107,7 @@ export default class CrawlerNewsController extends Controller implements Control requestQuery.browser, requestQuery.selector_wrap, requestQuery.selector_date, - requestQuery.selector_content + requestQuery.selector_content, ); this.logger.info('データ更新', requestQuery.url); diff --git a/packages/backend/node/src/controller/TokyuCarHistoryController.ts b/packages/backend/node/src/controller/TokyuCarHistoryController.ts index c111e6540..4977968c5 100644 --- a/packages/backend/node/src/controller/TokyuCarHistoryController.ts +++ b/packages/backend/node/src/controller/TokyuCarHistoryController.ts @@ -69,7 +69,7 @@ export default class TokyuCarHistoryController extends Controller implements Con requestQuery.series, requestQuery.register_start, requestQuery.register_end, - requestQuery.sort + requestQuery.sort, ); searchCarsCount = carDataList.length; diff --git a/packages/backend/node/src/dao/CrawlerNewsDao.ts b/packages/backend/node/src/dao/CrawlerNewsDao.ts index cf69427ea..f271d318a 100644 --- a/packages/backend/node/src/dao/CrawlerNewsDao.ts +++ b/packages/backend/node/src/dao/CrawlerNewsDao.ts @@ -97,7 +97,7 @@ export default class CrawlerNewsDao extends CrawlerDao { browser: boolean, selectorWrap: string, selectorDate: string | null, - selectorContent: string | null + selectorContent: string | null, ): Promise { const dbh = await this.getDbh(); @@ -149,7 +149,7 @@ export default class CrawlerNewsDao extends CrawlerDao { browser: boolean, selectorWrap: string, selectorDate: string | null, - selectorContent: string | null + selectorContent: string | null, ): Promise { const dbh = await this.getDbh(); diff --git a/packages/backend/node/src/dao/TokyuCarHistoryDao.ts b/packages/backend/node/src/dao/TokyuCarHistoryDao.ts index 67d2e4d2c..00789f56b 100644 --- a/packages/backend/node/src/dao/TokyuCarHistoryDao.ts +++ b/packages/backend/node/src/dao/TokyuCarHistoryDao.ts @@ -116,7 +116,7 @@ export default class TokyuCarHistoryDao { seriesList: string[] | null, registerStart: string | null, registerEnd: string | null, - sort: string | null + sort: string | null, ): Promise { const dbh = await this.getDbh(); diff --git a/packages/frontend/node/__tests__/build/html.test.js b/packages/frontend/node/__tests__/build/html.test.js index 17dfe85c5..de30e52d7 100644 --- a/packages/frontend/node/__tests__/build/html.test.js +++ b/packages/frontend/node/__tests__/build/html.test.js @@ -20,7 +20,7 @@ describe('replaceElement()', () => { ` -` +`, ); const { document } = dom.window; @@ -34,7 +34,7 @@ describe('replaceElement()', () => { ` -` +`, ); }); }); @@ -45,7 +45,7 @@ describe('replaceHtml()', () => { ` -` +`, ); const { document } = dom.window; @@ -59,7 +59,7 @@ describe('replaceHtml()', () => { ` -` +`, ); }); @@ -68,7 +68,7 @@ describe('replaceHtml()', () => { ` -` +`, ); const { document } = dom.window; @@ -82,7 +82,7 @@ describe('replaceHtml()', () => { ` -` +`, ); }); @@ -90,7 +90,7 @@ describe('replaceHtml()', () => { const dom = new JSDOM( ` -` +`, ); const { document } = dom.window; @@ -106,7 +106,7 @@ describe('replaceHtml()', () => { const dom = new JSDOM( ` -` +`, ); const { document } = dom.window; @@ -122,7 +122,7 @@ describe('replaceHtml()', () => { const dom = new JSDOM( ` -` +`, ); const { document } = dom.window; @@ -141,7 +141,7 @@ describe('removeClassName()', () => { ` -` +`, ); const { document } = dom.window; @@ -154,7 +154,7 @@ describe('removeClassName()', () => { ` -` +`, ); }); }); @@ -177,7 +177,7 @@ describe('Book', () => { { target_element: 'build-book', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -194,7 +194,7 @@ describe('Book', () => {

解説文2

-` +`, ); }); @@ -220,7 +220,7 @@ describe('Book', () => { { target_element: 'build-book', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -254,7 +254,7 @@ describe('Book', () => { -` +`, ); }); @@ -284,7 +284,7 @@ describe('Book', () => { { target_element: 'build-book', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -329,7 +329,7 @@ describe('Book', () => {
-` +`, ); }); }); @@ -352,7 +352,7 @@ describe('Newspaper', () => { { target_element: 'build-newspaper', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -370,7 +370,7 @@ describe('Newspaper', () => { -` +`, ); }); @@ -393,7 +393,7 @@ describe('Newspaper', () => { { target_element: 'build-newspaper', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -411,7 +411,7 @@ describe('Newspaper', () => { -` +`, ); }); @@ -433,7 +433,7 @@ describe('Newspaper', () => { { target_element: 'build-newspaper', }, - 'build-heading-anchor' + 'build-heading-anchor', ); expect(dom.serialize()).toBe( @@ -458,7 +458,7 @@ describe('Newspaper', () => { -` +`, ); }); }); @@ -487,7 +487,7 @@ describe('SectionId', () => {

-` +`, ); const { document } = dom.window; @@ -519,14 +519,14 @@ describe('SectionId', () => {

-` +`, ); }); test('sectionなし', () => { const dom = new JSDOM( ` -` +`, ); const { document } = dom.window; @@ -538,7 +538,7 @@ describe('SectionId', () => { expect(dom.serialize()).toBe( ` -` +`, ); }); }); @@ -572,7 +572,7 @@ describe('AnchorIcon', () => { ` Link(PDF) Link -` +`, ); }); test('type; href 属性なし', async () => { @@ -623,7 +623,7 @@ describe('AnchorIcon', () => { ` Link Link -` +`, ); const { document } = dom.window; @@ -649,7 +649,7 @@ describe('AnchorIcon', () => { ` Link(Example) Link(example.net) -` +`, ); }); test('host; href 属性なし', async () => { @@ -702,7 +702,7 @@ describe('Footnote', () => { ` 脚注1 脚注2 -` +`, ); const { document } = dom.window; @@ -727,18 +727,14 @@ describe('Footnote', () => { -` +`, ); }); }); @@ -763,7 +759,7 @@ describe('HeadingSelfLink', () => {

Heading

-` +`, ); }); @@ -812,7 +808,7 @@ describe('AnchorAmazonAssociate', () => { expect(dom.serialize()).toBe( ` Link -` +`, ); }); test('href 属性なし', () => { @@ -899,7 +895,7 @@ const foo = 'test'; const foo = 'test'; -` +`, ); }); @@ -918,7 +914,7 @@ const foo = 'test'; expect(dom.serialize()).toBe( ` -` +`, ); }); }); @@ -946,7 +942,7 @@ describe('Image', () => { -` +`, ); }); test('src 属性なし', () => { @@ -963,7 +959,7 @@ describe('Image', () => { expect(dom.serialize()).toBe( ` -` +`, ); }); test('src 属性値が絶対パスではない', () => { @@ -980,7 +976,7 @@ describe('Image', () => { expect(dom.serialize()).toBe( ` -` +`, ); }); test('src 属性値の origin が異なる', () => { @@ -997,7 +993,7 @@ describe('Image', () => { expect(dom.serialize()).toBe( ` -` +`, ); }); test('src 属性値の pathname が異なる', () => { @@ -1014,7 +1010,7 @@ describe('Image', () => { expect(dom.serialize()).toBe( ` -` +`, ); }); }); @@ -1052,7 +1048,7 @@ describe('TimeJapaneseDate', () => { -` +`, ); }); test('変換されないケース', () => { diff --git a/packages/frontend/node/__tests__/util/PrettierUtil.test.js b/packages/frontend/node/__tests__/util/PrettierUtil.test.js index 40402aff9..6d960a57d 100644 --- a/packages/frontend/node/__tests__/util/PrettierUtil.test.js +++ b/packages/frontend/node/__tests__/util/PrettierUtil.test.js @@ -4,7 +4,8 @@ import PrettierUtil from '../../dist/util/PrettierUtil.js'; describe('configOverrideAssign()', () => { test('files - string', () => { expect( - PrettierUtil.configOverrideAssign(JSON.parse(` + PrettierUtil.configOverrideAssign( + JSON.parse(` { "printWidth": 100, "overrides": [ @@ -22,17 +23,22 @@ describe('configOverrideAssign()', () => { } ] } -`), '*.css') - ).toStrictEqual(JSON.parse(` +`), + '*.css', + ), + ).toStrictEqual( + JSON.parse(` { "printWidth": 300 } -`)); +`), + ); }); test('files - array', () => { expect( - PrettierUtil.configOverrideAssign(JSON.parse(` + PrettierUtil.configOverrideAssign( + JSON.parse(` { "printWidth": 100, "overrides": [ @@ -50,17 +56,22 @@ describe('configOverrideAssign()', () => { } ] } -`), '*.html') - ).toStrictEqual(JSON.parse(` +`), + '*.html', + ), + ).toStrictEqual( + JSON.parse(` { "printWidth": 200 } -`)); +`), + ); }); test('unmatch overrides', () => { expect( - PrettierUtil.configOverrideAssign(JSON.parse(` + PrettierUtil.configOverrideAssign( + JSON.parse(` { "printWidth": 100, "overrides": [ @@ -72,25 +83,34 @@ describe('configOverrideAssign()', () => { } ] } -`), '*.foo') - ).toStrictEqual(JSON.parse(` +`), + '*.foo', + ), + ).toStrictEqual( + JSON.parse(` { "printWidth": 100 } -`)); +`), + ); }); test('no overrides', () => { expect( - PrettierUtil.configOverrideAssign(JSON.parse(` + PrettierUtil.configOverrideAssign( + JSON.parse(` { "printWidth": 100 } -`), '*.css') - ).toStrictEqual(JSON.parse(` +`), + '*.css', + ), + ).toStrictEqual( + JSON.parse(` { "printWidth": 100 } -`)); +`), + ); }); }); diff --git a/packages/frontend/node/src/build/Css.ts b/packages/frontend/node/src/build/Css.ts index ea5d811ce..05c8cbd46 100644 --- a/packages/frontend/node/src/build/Css.ts +++ b/packages/frontend/node/src/build/Css.ts @@ -31,7 +31,7 @@ export default class Css extends BuildComponent implements BuildComponentInterfa /* 整形 */ let cssFormatted = fileData; try { - cssFormatted = prettier.format(fileData, prettierOptions); + cssFormatted = await prettier.format(fileData, prettierOptions); } catch (e) { console.error(`Prettier error: ${filePath}`, e); } diff --git a/packages/frontend/node/src/build/Feed.ts b/packages/frontend/node/src/build/Feed.ts index a4743caab..1937f27f6 100644 --- a/packages/frontend/node/src/build/Feed.ts +++ b/packages/frontend/node/src/build/Feed.ts @@ -32,47 +32,49 @@ export default class Feed extends BuildComponent implements BuildComponentInterf content: string; }[] = []; - document.querySelectorAll(feedInfo.selector.wrap).forEach((wrapElement) => { - const dateElement = wrapElement.querySelector(feedInfo.selector.date); - if (dateElement === null) { - console.warn('Date element does not exist'); - return; - } + await Promise.all( + [...document.querySelectorAll(feedInfo.selector.wrap)].map(async (wrapElement) => { + const dateElement = wrapElement.querySelector(feedInfo.selector.date); + if (dateElement === null) { + console.warn('Date element does not exist'); + return; + } - const contentElement = wrapElement.querySelector(feedInfo.selector.content); - if (contentElement === null) { - console.warn('Content element does not exist'); - return; - } + const contentElement = wrapElement.querySelector(feedInfo.selector.content); + if (contentElement === null) { + console.warn('Content element does not exist'); + return; + } - const title = contentElement.textContent - ?.split('\n') - .map((line) => line.trim()) - .join(''); - if (title === undefined || title === '') { - console.warn('Content element is empty'); - return; - } + const title = contentElement.textContent + ?.split('\n') + .map((line) => line.trim()) + .join(''); + if (title === undefined || title === '') { + console.warn('Content element is empty'); + return; + } - const updated = new Date(`${dateElement.dateTime}T00:00`); - const content = contentElement.innerHTML; + const updated = new Date(`${dateElement.dateTime}T00:00`); + const content = contentElement.innerHTML; - const contentFormatted = prettier.format(content, prettierOptionsHtml).trim(); + const contentFormatted = (await prettier.format(content, prettierOptionsHtml)).trim(); - const internalLinkURLs = [...contentElement.querySelectorAll('a[href^="/"]')].map((anchorElement) => anchorElement.href); + const internalLinkURLs = [...contentElement.querySelectorAll('a[href^="/"]')].map((anchorElement) => anchorElement.href); - const md5 = crypto.createHash('md5'); - md5.update(`${updated.getTime() / 1000}${internalLinkURLs.join('')}`); - const unique = md5.digest('hex'); // entry 毎のユニーク文字列(更新日と URL の組み合わせならまあ被らないだろうという目論見) + const md5 = crypto.createHash('md5'); + md5.update(`${updated.getTime() / 1000}${internalLinkURLs.join('')}`); + const unique = md5.digest('hex'); // entry 毎のユニーク文字列(更新日と URL の組み合わせならまあ被らないだろうという目論見) - entries.push({ - title: title, - unique: unique, - last_updated: dayjs(updated), - links: internalLinkURLs, - content: contentFormatted, - }); - }); + entries.push({ + title: title, + unique: unique, + last_updated: dayjs(updated), + links: internalLinkURLs, + content: contentFormatted, + }); + }), + ); const feed = await ejs.renderFile(`${this.config.views}/${feedInfo.feed_template}`, { entries: entries, diff --git a/packages/frontend/node/src/build/Html.ts b/packages/frontend/node/src/build/Html.ts index a0eefa4c6..36c252444 100644 --- a/packages/frontend/node/src/build/Html.ts +++ b/packages/frontend/node/src/build/Html.ts @@ -37,100 +37,102 @@ export default class Html extends BuildComponent implements BuildComponentInterf const prettierOptions = PrettierUtil.configOverrideAssign(await PrettierUtil.loadConfig(this.config.prettier.config), '*.html'); - fileList.forEach(async (filePath) => { - const publicFileParse = path.parse(filePath.replace(new RegExp(`^${this.config.html.directory}`), this.config.static.root)); - const publicFilePath = `${publicFileParse.dir}/${publicFileParse.name}.html`; - - const pageUrl = new PageUrl({ - root: this.config.static.root, - indexes: this.config.static.indexes, - extensions: this.config.static.extensions, - }); - - const [fileData, structuredData] = await Promise.all([ - fs.promises.readFile(filePath), // HTML - HtmlStructuredData.getForJson(filePath), // 構造データ - ]); - - /* HTML コメント削除 */ - const fileDataCommentOmitted = fileData.toString().replace(//g, ''); - - /* DOM 化 */ - const { document } = new JSDOM(fileDataCommentOmitted).window; - - const { views } = this.config.html; - - /* ステップ1: セクショニングコンテンツや見出しを生成する処理 */ - await Promise.all([ - new HtmlComponentBook(document, views).convert(this.config.html.book, this.config.html.heading_self_link.target_class), // 書籍 - new HtmlComponentNewspaper(document, views).convert(this.config.html.newspaper, this.config.html.heading_self_link.target_class), // 新聞 - ]); - - /* ステップ2: セクショニングコンテンツや見出しを利用する処理 */ - new HtmlCpmponentSectioningId(document, views).convert({ - heading_levels: this.config.html.section_id.heading_levels, - }); // セクション ID 自動生成 - - /* ステップ3: 要素の置換・移動などでその他の処理に影響を及ぼす処理 */ - await Promise.all([ - new HtmlComponentFootnote(document, views).convert(this.config.html.footnote), // 脚注 - ]); - - /* ステップ4: その他の処理 */ - await Promise.all([ - new HtmlComponentAnchorIcon(document, views).convert({ - type: this.config.html.anchor_type, - host: this.config.html.anchor_host, - }), // リンクアンカーに付随するアイコンを付与 - new HtmlComponentHeadingSelfLink(document, views).convert(this.config.html.heading_self_link), // 見出しにセルフリンクを挿入 - - new HtmlComponentAnchorAmazonAssociate(document, views).convert({ - target_class: this.config.html.anchor_amazon_associate.target_class, - associate_id: this.config.paapi.partner_tag, - }), // Amazon 商品ページのリンクにアソシエイトタグを追加 - new HtmlComponentHighlight(document, views).convert(this.config.html.highlight), // highlight.js - new HtmlComponentImage(document, views).convert(this.config.html.image), // `` 要素を使って複数フォーマットの画像を提供する - new HtmlComponentImageAmazon(document, views).convert(this.config.html.image_amazon), // Amazon 商品画像 - new HtmlComponentTimeJapaneseDate(document, views).convert(this.config.html.time), // 日付文字列を `