From 800c6f7ea5dab3f8ca7f6a2f4296a89c0b28af36 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 13 Oct 2023 17:26:36 +0200 Subject: [PATCH 01/18] eslint rules for SVGS --- .eslintrc.js | 38 ++++- package.json | 4 +- pnpm-lock.yaml | 416 +++++++++++++++++++++++++++---------------------- 3 files changed, 267 insertions(+), 191 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index f572e87d38a..9adabb8cb51 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,7 +4,7 @@ module.exports = { node: true, }, extends: ['airbnb-base', 'prettier'], - plugins: ['import', 'prettier'], + plugins: ['import', 'prettier', '@html-eslint'], rules: { 'no-console': 'off', 'no-param-reassign': 'off', @@ -30,6 +30,35 @@ module.exports = { }, }, ], + + // SVG Specific + '@html-eslint/require-doctype': 'off', + '@html-eslint/no-duplicate-attrs': 'error', + '@html-eslint/require-attrs': [ + 'error', + { + tag: 'svg', + attr: 'viewBox', + value: '0 0 24 24', + }, + ], + '@html-eslint/indent': ['error', 2], + '@html-eslint/no-extra-spacing-attrs': [ + 'error', + { + enforceBeforeSelfClose: true, + }, + ], + '@html-eslint/require-closing-tags': [ + 'error', + { + selfClosing: 'always', + }, + ], + '@html-eslint/element-newline': 'error', + '@html-eslint/no-multiple-empty-lines': 'error', + '@html-eslint/no-trailing-spaces': 'error', + '@html-eslint/quotes': 'error', }, parserOptions: { tsconfigRootDir: __dirname, @@ -37,4 +66,11 @@ module.exports = { ecmaVersion: 'latest', sourceType: 'module', }, + overrides: [ + { + files: ['*.svg'], + parser: '@html-eslint/parser', + extends: ['plugin:@html-eslint/recommended'], + }, + ], }; diff --git a/package.json b/package.json index 83889b89eb8..654162d59b3 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ }, "devDependencies": { "@octokit/rest": "^19.0.13", + "@html-eslint/eslint-plugin": "^0.19.1", + "@html-eslint/parser": "^0.19.1", "eslint": "^8.43.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.8.0", @@ -52,7 +54,7 @@ "svgson": "^5.2.1" }, "lint-staged": { - "icons/*.svg":[ + "icons/*.svg": [ "node ./scripts/optimizeStagedSvgs.mjs", "node ./scripts/generateNextJSAliases.mjs" ] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99aa9dad16b..a543482cfe0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,12 @@ importers: .: devDependencies: + '@html-eslint/eslint-plugin': + specifier: ^0.19.1 + version: 0.19.1 + '@html-eslint/parser': + specifier: ^0.19.1 + version: 0.19.1 '@octokit/rest': specifier: ^19.0.13 version: 19.0.13 @@ -142,7 +148,7 @@ importers: version: 1.8.0 nitropack: specifier: npm:nitropack-edge@latest - version: /nitropack-edge@2.6.4-28243740.058bacf + version: /nitropack-edge@2.7.0-28276432.ae25359 node-fetch: specifier: '2' version: 2.6.12 @@ -4546,8 +4552,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.2: - resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + /@esbuild/android-arm64@0.19.4: + resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4581,8 +4587,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.2: - resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + /@esbuild/android-arm@0.19.4: + resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -4608,8 +4614,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.2: - resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + /@esbuild/android-x64@0.19.4: + resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4635,8 +4641,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.2: - resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + /@esbuild/darwin-arm64@0.19.4: + resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4662,8 +4668,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.2: - resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + /@esbuild/darwin-x64@0.19.4: + resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4689,8 +4695,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.2: - resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + /@esbuild/freebsd-arm64@0.19.4: + resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4716,8 +4722,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.2: - resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + /@esbuild/freebsd-x64@0.19.4: + resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4743,8 +4749,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.2: - resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + /@esbuild/linux-arm64@0.19.4: + resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4770,8 +4776,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.2: - resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + /@esbuild/linux-arm@0.19.4: + resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4797,8 +4803,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.2: - resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + /@esbuild/linux-ia32@0.19.4: + resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4841,8 +4847,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.2: - resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + /@esbuild/linux-loong64@0.19.4: + resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -4868,8 +4874,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.2: - resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + /@esbuild/linux-mips64el@0.19.4: + resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4895,8 +4901,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.2: - resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + /@esbuild/linux-ppc64@0.19.4: + resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4922,8 +4928,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.2: - resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + /@esbuild/linux-riscv64@0.19.4: + resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4949,8 +4955,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.2: - resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + /@esbuild/linux-s390x@0.19.4: + resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4976,8 +4982,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.2: - resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + /@esbuild/linux-x64@0.19.4: + resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -5003,8 +5009,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.2: - resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + /@esbuild/netbsd-x64@0.19.4: + resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -5030,8 +5036,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.2: - resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + /@esbuild/openbsd-x64@0.19.4: + resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -5057,8 +5063,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.2: - resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + /@esbuild/sunos-x64@0.19.4: + resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -5084,8 +5090,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.2: - resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + /@esbuild/win32-arm64@0.19.4: + resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -5111,8 +5117,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.2: - resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + /@esbuild/win32-ia32@0.19.4: + resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -5138,8 +5144,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.2: - resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + /@esbuild/win32-x64@0.19.4: + resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5238,6 +5244,18 @@ packages: vue: 3.3.4 dev: false + /@html-eslint/eslint-plugin@0.19.1: + resolution: {integrity: sha512-Tn+/GWLtNM6NiZFLbfM+vTK0d7gKaDgnw4Pp+DsZi09lFimi4bOPOgy8dSVnLeyFIfP6LkeuwVm4pfBZZM2qbA==} + engines: {node: '>=8.10.0'} + dev: true + + /@html-eslint/parser@0.19.1: + resolution: {integrity: sha512-dpAw6UX0ZSVNnsAzl9ULHZX7CvAGKF5uta4iebbhSDvGE1o9NX6BoOofD/6WucTvs/qnoKojc3Y2LG6vy4afiQ==} + engines: {node: '>=8.10.0'} + dependencies: + es-html-parser: 0.0.9 + dev: true + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} @@ -5317,7 +5335,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 12.20.55 '@types/yargs': 15.0.15 chalk: 4.1.2 dev: true @@ -5328,7 +5346,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 12.20.55 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -5340,7 +5358,7 @@ packages: '@jest/schemas': 29.6.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.6.0 + '@types/node': 12.20.55 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -5849,11 +5867,11 @@ packages: - supports-color dev: true - /@netlify/functions@2.0.2: - resolution: {integrity: sha512-goWRtaIPUK/q47qLYtfGGj7HgJIRaT0snw7zZ0yeoNTfQfCRwQwvRrMAsXkCsCtq2N2Oo81L26SpkMxEQMk9hg==} + /@netlify/functions@2.3.0: + resolution: {integrity: sha512-E3kzXPWMP/r1rAWhjTaXcaOT47dhEvg/eQUJjRLhD9Zzp0WqkdynHr+bqff4rFNv6tuXrtFZrpbPJFKHH0c0zw==} engines: {node: '>=14.0.0'} dependencies: - '@netlify/serverless-functions-api': 1.7.3 + '@netlify/serverless-functions-api': 1.9.0 is-promise: 4.0.0 dev: true @@ -5862,8 +5880,8 @@ packages: engines: {node: ^14.16.0 || >=16.0.0} dev: true - /@netlify/serverless-functions-api@1.7.3: - resolution: {integrity: sha512-n6/7cJlSWvvbBlUOEAbkGyEld80S6KbG/ldQI9OhLfe1lTatgKmrTNIgqVNpaWpUdTgP2OHWFjmFBzkxxBWs5w==} + /@netlify/serverless-functions-api@1.9.0: + resolution: {integrity: sha512-Jq4uk1Mwa5vyxImupJYXPP+I5yYcp3PtguvXtJRutKdm9DPALXfZVtCQzBWMNdZiqVWCM3La9hvaBsPjSMfeug==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@netlify/node-cookies': 0.1.0 @@ -5913,7 +5931,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.5 + semver: 7.5.4 dev: true /@npmcli/fs@3.1.0: @@ -5932,7 +5950,7 @@ packages: npm-pick-manifest: 6.1.1 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.3.5 + semver: 7.5.4 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -6809,7 +6827,7 @@ packages: engines: {node: '>= 10'} dev: false - /@rollup/plugin-alias@5.0.0(rollup@3.29.1): + /@rollup/plugin-alias@5.0.0(rollup@3.29.4): resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6818,7 +6836,7 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.1 + rollup: 3.29.4 slash: 4.0.0 dev: true @@ -6843,7 +6861,7 @@ packages: rollup: 3.27.0 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.1): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.4): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6852,16 +6870,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.1 + rollup: 3.29.4 dev: true - /@rollup/plugin-inject@5.0.3(rollup@3.29.1): + /@rollup/plugin-inject@5.0.3(rollup@3.29.4): resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6870,10 +6888,10 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) estree-walker: 2.0.2 magic-string: 0.27.0 - rollup: 3.29.1 + rollup: 3.29.4 dev: true /@rollup/plugin-json@4.1.0(rollup@2.79.1): @@ -6885,7 +6903,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-json@6.0.0(rollup@3.29.1): + /@rollup/plugin-json@6.0.0(rollup@3.29.4): resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6894,8 +6912,8 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) - rollup: 3.29.1 + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + rollup: 3.29.4 dev: true /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): @@ -6946,7 +6964,7 @@ packages: rollup: 3.27.0 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.1): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6955,13 +6973,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.4 - rollup: 3.29.1 + rollup: 3.29.4 dev: true /@rollup/plugin-replace@5.0.2(rollup@3.27.0): @@ -6977,7 +6995,7 @@ packages: magic-string: 0.27.0 rollup: 3.27.0 - /@rollup/plugin-replace@5.0.2(rollup@3.29.1): + /@rollup/plugin-replace@5.0.2(rollup@3.29.4): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6986,9 +7004,9 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.29.1) + '@rollup/pluginutils': 5.0.2(rollup@3.29.4) magic-string: 0.27.0 - rollup: 3.29.1 + rollup: 3.29.4 dev: true /@rollup/plugin-terser@0.1.0(rollup@3.27.0): @@ -7004,7 +7022,7 @@ packages: terser: 5.19.4 dev: true - /@rollup/plugin-terser@0.4.3(rollup@3.29.1): + /@rollup/plugin-terser@0.4.3(rollup@3.29.4): resolution: {integrity: sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7013,22 +7031,23 @@ packages: rollup: optional: true dependencies: - rollup: 3.29.1 + rollup: 3.29.4 serialize-javascript: 6.0.1 smob: 1.4.0 terser: 5.19.4 dev: true - /@rollup/plugin-wasm@6.1.3(rollup@3.29.1): - resolution: {integrity: sha512-7ItTTeyauE6lwdDtQWceEHZ9+txbi4RRy0mYPFn9BW7rD7YdgBDu7HTHsLtHrRzJc313RM/1m6GKgV3np/aEaw==} + /@rollup/plugin-wasm@6.2.2(rollup@3.29.4): + resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - rollup: 3.29.1 + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + rollup: 3.29.4 dev: true /@rollup/pluginutils@3.1.0(rollup@2.79.1): @@ -7064,7 +7083,7 @@ packages: picomatch: 2.3.1 rollup: 3.27.0 - /@rollup/pluginutils@5.0.2(rollup@3.29.1): + /@rollup/pluginutils@5.0.2(rollup@3.29.4): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7076,7 +7095,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.1 + rollup: 3.29.4 dev: true /@rollup/pluginutils@5.0.4(rollup@3.27.0): @@ -7094,7 +7113,7 @@ packages: rollup: 3.27.0 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.1): + /@rollup/pluginutils@5.0.4(rollup@3.29.4): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7106,7 +7125,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.1 + rollup: 3.29.4 dev: true /@schematics/angular@13.3.11: @@ -7414,7 +7433,7 @@ packages: /@types/cheerio@0.22.32: resolution: {integrity: sha512-4RrpCp5ufWTLb6/1RCOjazRhUM6DTD79l763det29n8kLmPB7XeN46cxlUf2GsSF+0g6CbWT5nYl8C/Gs15bdg==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/connect-history-api-fallback@1.5.0: @@ -7448,13 +7467,13 @@ packages: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.44.1 - '@types/estree': 0.0.51 + '@types/estree': 1.0.1 dev: true /@types/eslint@8.44.1: resolution: {integrity: sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==} dependencies: - '@types/estree': 0.0.51 + '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 dev: true @@ -7491,7 +7510,7 @@ packages: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/fs-extra@8.1.2: @@ -7517,8 +7536,8 @@ packages: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} dev: true - /@types/http-proxy@1.17.11: - resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==} + /@types/http-proxy@1.17.12: + resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: '@types/node': 12.20.55 dev: true @@ -7561,7 +7580,7 @@ packages: /@types/jsonfile@6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/mime@1.3.2: @@ -7578,7 +7597,6 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true /@types/node@16.9.1: resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} @@ -7594,6 +7612,7 @@ packages: /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + dev: true /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -7650,7 +7669,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: true /@types/resolve@1.20.2: @@ -7717,7 +7736,7 @@ packages: /@types/svgicons2svgfont@10.0.1: resolution: {integrity: sha512-jtNtIO+MQr8OxbTP561KQmVSAej8/U6ngQHWmJAEndJrVEu0OWPJyR3EwakIVI3w6zHT8lA1TWclPGFl3RCkgA==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/testing-library__jest-dom@5.14.9: @@ -7729,19 +7748,19 @@ packages: /@types/ttf2eot@2.0.0: resolution: {integrity: sha512-L8qPOoITQYiSW+ubfY2pMgY2vGTyM2tHP4rbtoq78xJpQAQcVsPJV3uC7R8fUPYMGSC1K22zXA8uQv777padrQ==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/ttf2woff2@2.0.0: resolution: {integrity: sha512-SK+EZ+N07Se3acZx6lc7Oa/FSoKfNrlQbtRDn5mGCJHpx1t6E6JmNRoTcjFbUdIxuG18BykEe/pPyCJhYiSu8A==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/ttf2woff@2.0.2: resolution: {integrity: sha512-I9jyTALLpz/k8d8Loz505v0obP66CrQ56uL9VJNwub1OckRGT/gQlrfKHbwy1z6w1WXQETgdiJaquCCjx9ej1A==} dependencies: - '@types/node': 20.6.0 + '@types/node': 12.20.55 dev: false /@types/web-bluetooth@0.0.17: @@ -7972,9 +7991,9 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vercel/nft@0.23.1: - resolution: {integrity: sha512-NE0xSmGWVhgHF1OIoir71XAd0W0C1UE3nzFyhpFiMr3rVhetww7NvM1kc41trBsPG37Bh+dE5FYCTMzM/gBu0w==} - engines: {node: '>=14'} + /@vercel/nft@0.24.3: + resolution: {integrity: sha512-IyBdIxmFAeGZnEfMgt4QrGK7XX4lWazlQj34HEi9dw04/WeDBJ7r1yaOIO5tTf9pbfvwUFodj9b0H+NDGGoOMg==} + engines: {node: '>=16'} hasBin: true dependencies: '@mapbox/node-pre-gyp': 1.0.11 @@ -8188,7 +8207,7 @@ packages: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.3 + magic-string: 0.30.5 /@vue/reactivity@3.2.45: resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==} @@ -9681,7 +9700,7 @@ packages: '@npmcli/move-file': 1.1.2 chownr: 2.0.0 fs-minipass: 2.1.0 - glob: 7.2.0 + glob: 7.2.3 infer-owner: 1.0.4 lru-cache: 6.0.0 minipass: 3.3.6 @@ -9693,7 +9712,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.1.15 + tar: 6.2.0 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -9719,7 +9738,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 9.0.1 - tar: 6.1.15 + tar: 6.2.0 unique-filename: 2.0.1 transitivePeerDependencies: - bluebird @@ -11303,6 +11322,10 @@ packages: stop-iteration-iterator: 1.0.0 dev: true + /es-html-parser@0.0.9: + resolution: {integrity: sha512-oniQMi+466VFsDzcdron9Ry/sqUJpDJg1bbDn0jFJKDdxXhwIOYDr4DgBnO5/yPLGj2xv+n5yy4L1Q0vAC5TYQ==} + dev: true + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} @@ -12013,34 +12036,34 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /esbuild@0.19.2: - resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + /esbuild@0.19.4: + resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.2 - '@esbuild/android-arm64': 0.19.2 - '@esbuild/android-x64': 0.19.2 - '@esbuild/darwin-arm64': 0.19.2 - '@esbuild/darwin-x64': 0.19.2 - '@esbuild/freebsd-arm64': 0.19.2 - '@esbuild/freebsd-x64': 0.19.2 - '@esbuild/linux-arm': 0.19.2 - '@esbuild/linux-arm64': 0.19.2 - '@esbuild/linux-ia32': 0.19.2 - '@esbuild/linux-loong64': 0.19.2 - '@esbuild/linux-mips64el': 0.19.2 - '@esbuild/linux-ppc64': 0.19.2 - '@esbuild/linux-riscv64': 0.19.2 - '@esbuild/linux-s390x': 0.19.2 - '@esbuild/linux-x64': 0.19.2 - '@esbuild/netbsd-x64': 0.19.2 - '@esbuild/openbsd-x64': 0.19.2 - '@esbuild/sunos-x64': 0.19.2 - '@esbuild/win32-arm64': 0.19.2 - '@esbuild/win32-ia32': 0.19.2 - '@esbuild/win32-x64': 0.19.2 + '@esbuild/android-arm': 0.19.4 + '@esbuild/android-arm64': 0.19.4 + '@esbuild/android-x64': 0.19.4 + '@esbuild/darwin-arm64': 0.19.4 + '@esbuild/darwin-x64': 0.19.4 + '@esbuild/freebsd-arm64': 0.19.4 + '@esbuild/freebsd-x64': 0.19.4 + '@esbuild/linux-arm': 0.19.4 + '@esbuild/linux-arm64': 0.19.4 + '@esbuild/linux-ia32': 0.19.4 + '@esbuild/linux-loong64': 0.19.4 + '@esbuild/linux-mips64el': 0.19.4 + '@esbuild/linux-ppc64': 0.19.4 + '@esbuild/linux-riscv64': 0.19.4 + '@esbuild/linux-s390x': 0.19.4 + '@esbuild/linux-x64': 0.19.4 + '@esbuild/netbsd-x64': 0.19.4 + '@esbuild/openbsd-x64': 0.19.4 + '@esbuild/sunos-x64': 0.19.4 + '@esbuild/win32-arm64': 0.19.4 + '@esbuild/win32-ia32': 0.19.4 + '@esbuild/win32-x64': 0.19.4 dev: true /esbuild@0.9.7: @@ -12462,7 +12485,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.6.2 - '@types/node': 20.6.0 + '@types/node': 12.20.55 jest-get-type: 29.4.3 jest-matcher-utils: 29.6.2 jest-message-util: 29.6.2 @@ -13276,15 +13299,15 @@ packages: duplexer: 0.1.2 dev: true - /h3-nightly@1.8.2-1693616803.4994334: - resolution: {integrity: sha512-Q8+XkofSn5KOnngL6ScwItne5uOBi1LP+IJq20OxRRFkcQdb7nxsVt+t1Pe8ADc53cRHZ34RHlsF0JEu1Ec7oA==} + /h3-nightly@1.9.0-1696355884.fb79f41: + resolution: {integrity: sha512-uJvBNUd9ZGE6fpJ2nVzOF5emjrcZA23i+x1Ztxvr68TP99AfUo1W9tVw+3og7uxZKPoci11eipxYxQ275ZVqKA==} dependencies: cookie-es: 1.0.0 defu: 6.1.2 destr: 2.0.1 iron-webcrypto: 0.10.1 radix3: 1.1.0 - ufo: 1.3.0 + ufo: 1.3.1 uncrypto: 0.1.3 unenv: 1.7.4 dev: true @@ -13310,7 +13333,7 @@ packages: destr: 2.0.1 iron-webcrypto: 0.8.2 radix3: 1.1.0 - ufo: 1.3.0 + ufo: 1.3.1 uncrypto: 0.1.3 unenv: 1.7.4 dev: true @@ -13537,7 +13560,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -13561,7 +13584,7 @@ packages: '@types/express': optional: true dependencies: - '@types/http-proxy': 1.17.11 + '@types/http-proxy': 1.17.12 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 @@ -14410,7 +14433,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.6.0 + '@types/node': 12.20.55 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -14479,7 +14502,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.1 - '@types/node': 20.6.0 + '@types/node': 12.20.55 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -15028,8 +15051,8 @@ packages: - supports-color dev: true - /listhen@1.5.0: - resolution: {integrity: sha512-qiCsszmva2NnayRCNV7G5TZz0AUQcCfJOhwlEDL58TXebt9nEHxYamsW0qvg88hTDwO/zm0YlU0YOzOx/FMW5w==} + /listhen@1.5.5: + resolution: {integrity: sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==} hasBin: true dependencies: '@parcel/watcher': 2.3.0 @@ -15045,7 +15068,8 @@ packages: mlly: 1.4.2 node-forge: 1.3.1 pathe: 1.1.1 - ufo: 1.3.0 + std-env: 3.4.3 + ufo: 1.3.1 untun: 0.1.2 uqr: 0.1.2 dev: true @@ -15271,6 +15295,12 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -16001,7 +16031,7 @@ packages: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.0 + ufo: 1.3.1 dev: true /moment@2.29.4: @@ -16181,8 +16211,8 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /nitropack-edge@2.6.4-28243740.058bacf: - resolution: {integrity: sha512-F+Y+c20mEJtUNYyOIM1HPuNZWnIwLPfrR8WohjChTRDGn5gdliczJ7YFSTfPqBgYevbjBdRhcFP8i8Ir0P+A7g==} + /nitropack-edge@2.7.0-28276432.ae25359: + resolution: {integrity: sha512-xEsR6uZGlvX5E/dp3coShoYBYASGJfABN5JUDfuBI45FjGgA7fQg3GxD39DPSwZKd3F9CglYCZPcoyhRt5/T9g==} engines: {node: ^16.11.0 || >=17.0.0} hasBin: true peerDependencies: @@ -16192,18 +16222,18 @@ packages: optional: true dependencies: '@cloudflare/kv-asset-handler': 0.3.0 - '@netlify/functions': 2.0.2 - '@rollup/plugin-alias': 5.0.0(rollup@3.29.1) - '@rollup/plugin-commonjs': 25.0.4(rollup@3.29.1) - '@rollup/plugin-inject': 5.0.3(rollup@3.29.1) - '@rollup/plugin-json': 6.0.0(rollup@3.29.1) - '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.1) - '@rollup/plugin-replace': 5.0.2(rollup@3.29.1) - '@rollup/plugin-terser': 0.4.3(rollup@3.29.1) - '@rollup/plugin-wasm': 6.1.3(rollup@3.29.1) - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) - '@types/http-proxy': 1.17.11 - '@vercel/nft': 0.23.1 + '@netlify/functions': 2.3.0 + '@rollup/plugin-alias': 5.0.0(rollup@3.29.4) + '@rollup/plugin-commonjs': 25.0.4(rollup@3.29.4) + '@rollup/plugin-inject': 5.0.3(rollup@3.29.4) + '@rollup/plugin-json': 6.0.0(rollup@3.29.4) + '@rollup/plugin-node-resolve': 15.2.1(rollup@3.29.4) + '@rollup/plugin-replace': 5.0.2(rollup@3.29.4) + '@rollup/plugin-terser': 0.4.3(rollup@3.29.4) + '@rollup/plugin-wasm': 6.2.2(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@types/http-proxy': 1.17.12 + '@vercel/nft': 0.24.3 archiver: 6.0.1 c12: 1.4.2 chalk: 5.3.0 @@ -16214,45 +16244,45 @@ packages: defu: 6.1.2 destr: 2.0.1 dot-prop: 8.0.2 - esbuild: 0.19.2 + esbuild: 0.19.4 escape-string-regexp: 5.0.0 etag: 1.8.1 fs-extra: 11.1.1 globby: 13.2.2 gzip-size: 7.0.0 - h3: /h3-nightly@1.8.2-1693616803.4994334 + h3: /h3-nightly@1.9.0-1696355884.fb79f41 hookable: 5.5.3 httpxy: 0.1.5 is-primitive: 3.0.1 jiti: 1.20.0 klona: 2.0.6 knitwork: 1.0.0 - listhen: 1.5.0 - magic-string: 0.30.3 + listhen: 1.5.5 + magic-string: 0.30.5 mime: 3.0.0 mlly: 1.4.2 mri: 1.2.0 node-fetch-native: 1.4.0 ofetch: 1.3.3 ohash: 1.1.3 - openapi-typescript: 6.5.5 + openapi-typescript: 6.7.0 pathe: 1.1.1 perfect-debounce: 1.0.0 pkg-types: 1.0.3 pretty-bytes: 6.1.1 radix3: 1.1.0 - rollup: 3.29.1 - rollup-plugin-visualizer: 5.9.2(rollup@3.29.1) + rollup: 3.29.4 + rollup-plugin-visualizer: 5.9.2(rollup@3.29.4) scule: 1.0.0 semver: 7.5.4 serve-placeholder: 2.0.1 serve-static: 1.15.0 std-env: 3.4.3 - ufo: 1.3.0 + ufo: 1.3.1 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.7.4 - unimport: 3.3.0(rollup@3.29.1) + unimport: 3.4.0(rollup@3.29.4) unstorage: 1.9.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -16352,8 +16382,8 @@ packages: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.3.5 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 which: 2.0.2 transitivePeerDependencies: - bluebird @@ -16432,7 +16462,7 @@ packages: resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} engines: {node: '>=10'} dependencies: - semver: 7.3.5 + semver: 7.5.4 dev: true /npm-normalize-package-bin@1.0.1: @@ -16566,7 +16596,7 @@ packages: '@yarnpkg/parsers': 3.0.0-rc.48.1 '@zkochan/js-yaml': 0.0.6 axios: 1.4.0 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 7.0.4 @@ -16712,7 +16742,7 @@ packages: dependencies: destr: 2.0.1 node-fetch-native: 1.4.0 - ufo: 1.3.0 + ufo: 1.3.1 dev: true /ohash@1.1.3: @@ -16785,8 +16815,8 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 - /openapi-typescript@6.5.5: - resolution: {integrity: sha512-pMsA8GrMQKtNOPPjKnJbDotA2UpKsIcTHecMw2Bl3M/2eWTVs8zAYBm/cgaE9Qz5GrcVCDIru9GQX/P9vxtUFg==} + /openapi-typescript@6.7.0: + resolution: {integrity: sha512-eoUfJwhnMEug7euZ1dATG7iRiDVsEROwdPkhLUDiaFjcClV4lzft9F0Ii0fYjULCPNIiWiFi0BqMpSxipuvAgQ==} hasBin: true dependencies: ansi-colors: 4.1.3 @@ -18919,7 +18949,7 @@ packages: yargs: 17.7.2 dev: false - /rollup-plugin-visualizer@5.9.2(rollup@3.29.1): + /rollup-plugin-visualizer@5.9.2(rollup@3.29.4): resolution: {integrity: sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==} engines: {node: '>=14'} hasBin: true @@ -18931,7 +18961,7 @@ packages: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 3.29.1 + rollup: 3.29.4 source-map: 0.7.4 yargs: 17.7.2 dev: true @@ -18979,6 +19009,14 @@ packages: fsevents: 2.3.3 dev: true + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -19586,7 +19624,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -20096,7 +20134,7 @@ packages: dependencies: css: 3.0.0 debug: 4.3.4 - glob: 7.2.0 + glob: 7.2.3 safer-buffer: 2.1.2 sax: 1.2.4 source-map: 0.7.4 @@ -20502,8 +20540,8 @@ packages: engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.0 - minimatch: 3.0.5 + glob: 7.2.3 + minimatch: 3.1.2 dev: true /text-table@0.2.0: @@ -20896,8 +20934,8 @@ packages: resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} dev: true - /ufo@1.3.0: - resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true /uglify-es@3.3.9: @@ -20935,8 +20973,8 @@ packages: dependencies: acorn: 8.10.0 estree-walker: 3.0.3 - magic-string: 0.30.3 - unplugin: 1.4.0 + magic-string: 0.30.5 + unplugin: 1.5.0 dev: true /undici@5.24.0: @@ -20989,20 +21027,20 @@ packages: engines: {node: '>=4'} dev: true - /unimport@3.3.0(rollup@3.29.1): - resolution: {integrity: sha512-3jhq3ZG5hFZzrWGDCpx83kjPzefP/EeuKkIO1T0MA4Zwj+dO/Og1mFvZ4aZ5WSDm0FVbbdVIRH1zKBG7c4wOpg==} + /unimport@3.4.0(rollup@3.29.4): + resolution: {integrity: sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA==} dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) escape-string-regexp: 5.0.0 fast-glob: 3.3.1 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.5 mlly: 1.4.2 pathe: 1.1.1 pkg-types: 1.0.3 scule: 1.0.0 strip-literal: 1.3.0 - unplugin: 1.4.0 + unplugin: 1.5.0 transitivePeerDependencies: - rollup dev: true @@ -21079,8 +21117,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin@1.4.0: - resolution: {integrity: sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==} + /unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} dependencies: acorn: 8.10.0 chokidar: 3.5.3 @@ -21138,12 +21176,12 @@ packages: destr: 2.0.1 h3: 1.8.1 ioredis: 5.3.2 - listhen: 1.5.0 + listhen: 1.5.5 lru-cache: 10.0.1 mri: 1.2.0 node-fetch-native: 1.4.0 ofetch: 1.3.3 - ufo: 1.3.0 + ufo: 1.3.1 transitivePeerDependencies: - supports-color dev: true @@ -21694,7 +21732,7 @@ packages: html-entities: 2.4.0 http-proxy-middleware: 2.0.6 ipaddr.js: 2.1.0 - open: 8.4.0 + open: 8.4.2 p-retry: 4.6.2 portfinder: 1.0.32 schema-utils: 4.2.0 From 54fca58ae7594f01f8db84c7b24d6caff780f014 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Tue, 17 Oct 2023 09:51:45 +0200 Subject: [PATCH 02/18] apply options --- .eslintrc.js | 28 +++++++++++++++++++--------- .vscode/settings.json | 5 +++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 9adabb8cb51..6a00295d012 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,19 @@ +const requiredSVGAttrs = Object.entries({ + xmlns: 'http://www.w3.org/2000/svg', + width: 24, + height: 24, + viewBox: '0 0 24 24', + fill: 'none', + stroke: 'currentColor', + 'stroke-width': 2, + 'stroke-linecap': 'round', + 'stroke-linejoin': 'round', +}).map(([attr, value]) => ({ + tag: 'svg', + attr, + value: String(value), +})); + module.exports = { env: { browser: true, @@ -34,14 +50,8 @@ module.exports = { // SVG Specific '@html-eslint/require-doctype': 'off', '@html-eslint/no-duplicate-attrs': 'error', - '@html-eslint/require-attrs': [ - 'error', - { - tag: 'svg', - attr: 'viewBox', - value: '0 0 24 24', - }, - ], + '@html-eslint/no-inline-styles': 'error', + '@html-eslint/require-attrs': ['error', ...requiredSVGAttrs], '@html-eslint/indent': ['error', 2], '@html-eslint/no-extra-spacing-attrs': [ 'error', @@ -53,6 +63,7 @@ module.exports = { 'error', { selfClosing: 'always', + allowSelfClosingCustom: true, }, ], '@html-eslint/element-newline': 'error', @@ -70,7 +81,6 @@ module.exports = { { files: ['*.svg'], parser: '@html-eslint/parser', - extends: ['plugin:@html-eslint/recommended'], }, ], }; diff --git a/.vscode/settings.json b/.vscode/settings.json index 9e729440211..a62cd71dd56 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,10 @@ "devs", "preact", "Preact" + ], + "eslint.enable": true, + "eslint.validate": [ + "javascript", + "svg" ] } From 42819ee118ed38be4c39955e7692d10ce28d7a79 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 20 Oct 2023 11:15:18 +0200 Subject: [PATCH 03/18] Add typescript eslinter --- .eslintrc.js | 105 +++++++++++++++---- package.json | 14 ++- pnpm-lock.yaml | 270 +++++++++++++++++++++++++++++++++++++++++++++---- tsconfig.json | 20 ++++ 4 files changed, 366 insertions(+), 43 deletions(-) create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index 6a00295d012..a6082f7070c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,24 +15,38 @@ const requiredSVGAttrs = Object.entries({ })); module.exports = { - env: { - browser: true, - node: true, + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: 'tsconfig.json', + }, + plugins: ['@typescript-eslint', 'import', '@html-eslint'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'eslint:recommended', + 'airbnb-base', + 'airbnb-typescript/base', + ], + settings: { + 'import/extensions': ['.js', '.jsx', '.ts', '.tsx'], + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: {}, + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + 'moduleDirectory': ['src', 'node_modules'] + }, + }, }, - extends: ['airbnb-base', 'prettier'], - plugins: ['import', 'prettier', '@html-eslint'], rules: { 'no-console': 'off', 'no-param-reassign': 'off', 'no-shadow': 'off', 'no-use-before-define': 'off', - 'prettier/prettier': [ - 'error', - { - singleQuote: true, - trailingComma: 'all', - }, - ], 'import/no-extraneous-dependencies': [ 'error', { devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] }, @@ -46,7 +60,67 @@ module.exports = { }, }, ], + // indent: 'off', + // '@typescript-eslint/indent': ['error', 2, { + // ...airbnbIndentOptions, + // ignoredNodes: [ + // 'JSXElement', + // 'JSXElement > *', + // 'JSXAttribute', + // 'JSXIdentifier', + // 'JSXNamespacedName', + // 'JSXMemberExpression', + // 'JSXSpreadAttribute', + // 'JSXExpressionContainer', + // 'JSXOpeningElement', + // 'JSXClosingElement', + // 'JSXFragment', + // 'JSXOpeningFragment', + // 'JSXClosingFragment', + // 'JSXText', + // 'JSXEmptyExpression', + // 'JSXSpreadChild', + // 'PropertyDefinition[decorators]', + // 'TSUnionType', + // 'TSTypeParameterInstantiation', + // 'TSIntersectionType', + // ] + // }], + // Imports + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never', + }, + ], + 'import/prefer-default-export': 0, + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + '**/*.test.js', + '**/*.spec.js', + '**/*.stories.js', + '**/*.test.ts', + '**/*.spec.ts', + '**/*.stories.ts', + '**/*.stories.js', + '**/*.test.jsx', + '**/*.test.tsx', + '**/*.spec.tsx', + '**/*.stories.tsx', + '**/jest.config.js', + '**/jest.setup.js', + ], + peerDependencies: true, + optionalDependencies: true, + }, + ], // SVG Specific '@html-eslint/require-doctype': 'off', '@html-eslint/no-duplicate-attrs': 'error', @@ -71,12 +145,7 @@ module.exports = { '@html-eslint/no-trailing-spaces': 'error', '@html-eslint/quotes': 'error', }, - parserOptions: { - tsconfigRootDir: __dirname, - project: ['./site/tsconfig.json', './packages/*/tsconfig.json'], - ecmaVersion: 'latest', - sourceType: 'module', - }, + overrides: [ { files: ['*.svg'], diff --git a/package.json b/package.json index 654162d59b3..e401e134037 100644 --- a/package.json +++ b/package.json @@ -29,18 +29,17 @@ "generate:contributors": "node ./scripts/updateContributors.mjs icons/*.svg", "generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mjs", "postinstall": "husky install", - "lint": "eslint --ext .ts,.js,.mjs ./{packages/lucide,scripts}", + "lint": "eslint --ext .ts,.js .", "prepare": "husky install", "gi": "node ./scripts/generate/generateIcons.mjs" }, "devDependencies": { - "@octokit/rest": "^19.0.13", "@html-eslint/eslint-plugin": "^0.19.1", "@html-eslint/parser": "^0.19.1", + "@octokit/rest": "^19.0.13", "eslint": "^8.43.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.3", "lint-staged": "^13.2.3", @@ -51,7 +50,14 @@ "semver": "^7.5.2", "simple-git": "^3.19.1", "svgo": "^3.0.2", - "svgson": "^5.2.1" + "svgson": "^5.2.1", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-import-resolver-custom-alias": "^1.3.2", + "eslint-import-resolver-typescript": "^3.6.0", + "eslint-plugin-import": "^2.28.0" }, "lint-staged": { "icons/*.svg": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a543482cfe0..a6c1d970104 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,18 +19,36 @@ importers: '@octokit/rest': specifier: ^19.0.13 version: 19.0.13 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.46.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.8.0(eslint@8.46.0)(typescript@4.9.5) eslint: specifier: ^8.43.0 version: 8.46.0 eslint-config-airbnb-base: specifier: ^15.0.0 version: 15.0.0(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint-config-airbnb-typescript: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.0)(eslint@8.46.0) eslint-config-prettier: specifier: ^8.8.0 version: 8.9.0(eslint@8.46.0) + eslint-import-resolver-alias: + specifier: ^1.1.2 + version: 1.1.2(eslint-plugin-import@2.28.0) + eslint-import-resolver-custom-alias: + specifier: ^1.3.2 + version: 1.3.2(eslint-plugin-import@2.28.0) + eslint-import-resolver-typescript: + specifier: ^3.6.0 + version: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.0)(eslint@8.46.0) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.28.0(eslint@8.46.0) + specifier: ^2.28.0 + version: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@2.7.1) @@ -869,7 +887,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 dev: true /@ampproject/remapping@2.2.1: @@ -7829,6 +7847,35 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.46.0)(typescript@4.9.5): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 6.8.0(eslint@8.46.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.46.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.46.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.46.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/experimental-utils@5.3.0(eslint@8.46.0)(typescript@4.6.4): resolution: {integrity: sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7867,6 +7914,27 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@6.8.0(eslint@8.46.0)(typescript@4.9.5): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.46.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.3.0: resolution: {integrity: sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7883,6 +7951,14 @@ packages: '@typescript-eslint/visitor-keys': 5.48.2 dev: true + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + dev: true + /@typescript-eslint/type-utils@5.48.2(eslint@8.46.0)(typescript@4.6.4): resolution: {integrity: sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7903,6 +7979,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@6.8.0(eslint@8.46.0)(typescript@4.9.5): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + '@typescript-eslint/utils': 6.8.0(eslint@8.46.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.46.0 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.3.0: resolution: {integrity: sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7913,6 +8009,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.3.0(typescript@4.6.4): resolution: {integrity: sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7955,6 +8056,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@6.8.0(typescript@4.9.5): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.48.2(eslint@8.46.0)(typescript@4.6.4): resolution: {integrity: sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7975,6 +8097,25 @@ packages: - typescript dev: true + /@typescript-eslint/utils@6.8.0(eslint@8.46.0)(typescript@4.9.5): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@4.9.5) + eslint: 8.46.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.3.0: resolution: {integrity: sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7991,6 +8132,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@vercel/nft@0.24.3: resolution: {integrity: sha512-IyBdIxmFAeGZnEfMgt4QrGK7XX4lWazlQj34HEi9dw04/WeDBJ7r1yaOIO5tTf9pbfvwUFodj9b0H+NDGGoOMg==} engines: {node: '>=16'} @@ -12125,12 +12274,27 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.46.0 - eslint-plugin-import: 2.28.0(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) object.assign: 4.1.4 object.entries: 1.1.6 semver: 6.3.1 dev: true + /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.8.0)(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.0)(eslint@8.46.0): + resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 + '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + '@typescript-eslint/eslint-plugin': 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.46.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.8.0(eslint@8.46.0)(typescript@4.9.5) + eslint: 8.46.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + dev: true + /eslint-config-prettier@8.9.0(eslint@8.46.0): resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true @@ -12140,17 +12304,59 @@ packages: eslint: 8.46.0 dev: true + /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.28.0): + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + dependencies: + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + dev: true + + /eslint-import-resolver-custom-alias@1.3.2(eslint-plugin-import@2.28.0): + resolution: {integrity: sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==} + peerDependencies: + eslint-plugin-import: '>=2.2.0' + dependencies: + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + glob-parent: 6.0.2 + resolve: 1.22.4 + dev: true + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.3 + is-core-module: 2.13.0 + resolve: 1.22.4 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.46.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.0)(eslint@8.46.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.46.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.2 + is-core-module: 2.13.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -12171,14 +12377,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.46.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.8.0)(eslint-plugin-import@2.28.0)(eslint@8.46.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.28.0(eslint@8.46.0): + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0): resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: @@ -12188,6 +12396,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 6.8.0(eslint@8.46.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 @@ -12196,15 +12405,15 @@ packages: doctrine: 2.1.0 eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(eslint-import-resolver-node@0.3.7)(eslint@8.46.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.8.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.6 object.groupby: 1.0.0 object.values: 1.1.6 - resolve: 1.22.3 + resolve: 1.22.4 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -13062,6 +13271,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -13299,13 +13514,13 @@ packages: duplexer: 0.1.2 dev: true - /h3-nightly@1.9.0-1696355884.fb79f41: - resolution: {integrity: sha512-uJvBNUd9ZGE6fpJ2nVzOF5emjrcZA23i+x1Ztxvr68TP99AfUo1W9tVw+3og7uxZKPoci11eipxYxQ275ZVqKA==} + /h3-nightly@1.9.0-1697582360.fb79f41: + resolution: {integrity: sha512-FgS16YNHZDKyPZBcC/cOD98C9kKA2gre70fqQCK/S1I6rE5Loax9DGn8IxrhBgiSylE9GDugltvmmBJNeAfm8Q==} dependencies: cookie-es: 1.0.0 defu: 6.1.2 destr: 2.0.1 - iron-webcrypto: 0.10.1 + iron-webcrypto: 1.0.0 radix3: 1.1.0 ufo: 1.3.1 uncrypto: 0.1.3 @@ -13874,10 +14089,6 @@ packages: engines: {node: '>= 10'} dev: true - /iron-webcrypto@0.10.1: - resolution: {integrity: sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==} - dev: true - /iron-webcrypto@0.8.0: resolution: {integrity: sha512-gScdcWHjTGclCU15CIv2r069NoQrys1UeUFFfaO1hL++ytLHkVw7N5nXJmFf3J2LEDMz1PkrvC0m62JEeu1axQ==} dev: true @@ -13886,6 +14097,10 @@ packages: resolution: {integrity: sha512-jGiwmpgTuF19Vt4hn3+AzaVFGpVZt7A1ysd5ivFel2r4aNVFwqaYa6aU6qsF1PM7b+WFivZHz3nipwUOXaOnHg==} dev: true + /iron-webcrypto@1.0.0: + resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + dev: true + /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} engines: {node: '>=0.10.0'} @@ -16250,7 +16465,7 @@ packages: fs-extra: 11.1.1 globby: 13.2.2 gzip-size: 7.0.0 - h3: /h3-nightly@1.9.0-1696355884.fb79f41 + h3: /h3-nightly@1.9.0-1697582360.fb79f41 hookable: 5.5.3 httpxy: 0.1.5 is-primitive: 3.0.1 @@ -16474,7 +16689,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - semver: 7.3.5 + semver: 7.5.4 validate-npm-package-name: 3.0.0 dev: true @@ -16495,7 +16710,7 @@ packages: npm-install-checks: 4.0.0 npm-normalize-package-bin: 1.0.1 npm-package-arg: 8.1.5 - semver: 7.3.5 + semver: 7.5.4 dev: true /npm-registry-fetch@12.0.2: @@ -18728,6 +18943,10 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve-url-loader@5.0.0: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} @@ -20712,6 +20931,15 @@ packages: hasBin: true dev: true + /ts-api-utils@1.0.3(typescript@4.9.5): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 4.9.5 + dev: true + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..887645cc853 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "strict": true, + "declaration": false, + "noEmitOnError": true, + "noEmit": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node", + "module": "ESNext", + "target": "ESNext", + "esModuleInterop": true, + "isolatedModules": true, + "lib": ["esnext", "dom"], + "skipLibCheck": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "downlevelIteration": true, + "sourceMap": true, + } +} From 760da7f30a99734a5941f1f2923b58abc6f854ce Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 13:59:32 +0200 Subject: [PATCH 04/18] Make eslint work with the codebase --- .eslintignore | 4 + .eslintrc.js | 156 +++++------------- icons/cassette-tape.svg | 2 +- icons/drama.svg | 16 +- icons/life-buoy.svg | 8 +- icons/rotate-ccw.svg | 2 +- icons/spade.svg | 4 +- icons/store.svg | 10 +- icons/text-cursor-input.svg | 10 +- icons/theater.svg | 18 +- package.json | 2 +- packages/lucide-angular/karma.conf.js | 2 +- packages/lucide-vue/nuxt.js | 4 +- packages/lucide-vue/package.json | 2 +- .../building/generateIconFiles.mjs | 1 + 15 files changed, 90 insertions(+), 151 deletions(-) diff --git a/.eslintignore b/.eslintignore index 58e72427e3f..c8b609d75b6 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,3 +4,7 @@ coverage lib tests node_modules +.eslintrc.js +docs/images +docs/guide/basics/examples +packages/lucide-react/dynamicIconImports.js diff --git a/.eslintrc.js b/.eslintrc.js index a6082f7070c..c2b92d1d5ad 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -16,37 +16,25 @@ const requiredSVGAttrs = Object.entries({ module.exports = { root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: 'tsconfig.json', - }, - plugins: ['@typescript-eslint', 'import', '@html-eslint'], - extends: [ - 'plugin:@typescript-eslint/recommended', - 'eslint:recommended', - 'airbnb-base', - 'airbnb-typescript/base', - ], - settings: { - 'import/extensions': ['.js', '.jsx', '.ts', '.tsx'], - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: {}, - node: { - extensions: ['.js', '.jsx', '.ts', '.tsx'], - 'moduleDirectory': ['src', 'node_modules'] - }, - }, + env: { + browser: true, + node: true, }, + extends: ['airbnb-base', 'prettier'], + plugins: ['import', 'prettier', '@html-eslint'], rules: { 'no-console': 'off', 'no-param-reassign': 'off', 'no-shadow': 'off', 'no-use-before-define': 'off', + 'prettier/prettier': [ + 'error', + { + singleQuote: true, + trailingComma: 'all', + printWidth: 100 + }, + ], 'import/no-extraneous-dependencies': [ 'error', { devDependencies: ['**/*.test.js', '**/*.spec.js', './scripts/**'] }, @@ -60,96 +48,42 @@ module.exports = { }, }, ], - // indent: 'off', - // '@typescript-eslint/indent': ['error', 2, { - // ...airbnbIndentOptions, - // ignoredNodes: [ - // 'JSXElement', - // 'JSXElement > *', - // 'JSXAttribute', - // 'JSXIdentifier', - // 'JSXNamespacedName', - // 'JSXMemberExpression', - // 'JSXSpreadAttribute', - // 'JSXExpressionContainer', - // 'JSXOpeningElement', - // 'JSXClosingElement', - // 'JSXFragment', - // 'JSXOpeningFragment', - // 'JSXClosingFragment', - // 'JSXText', - // 'JSXEmptyExpression', - // 'JSXSpreadChild', - // 'PropertyDefinition[decorators]', - // 'TSUnionType', - // 'TSTypeParameterInstantiation', - // 'TSIntersectionType', - // ] - // }], - - // Imports - 'import/extensions': [ - 'error', - 'ignorePackages', - { - js: 'never', - jsx: 'never', - ts: 'never', - tsx: 'never', - }, - ], - 'import/prefer-default-export': 0, - 'import/no-extraneous-dependencies': [ - 'error', - { - devDependencies: [ - '**/*.test.js', - '**/*.spec.js', - '**/*.stories.js', - '**/*.test.ts', - '**/*.spec.ts', - '**/*.stories.ts', - '**/*.stories.js', - '**/*.test.jsx', - '**/*.test.tsx', - '**/*.spec.tsx', - '**/*.stories.tsx', - '**/jest.config.js', - '**/jest.setup.js', - ], - peerDependencies: true, - optionalDependencies: true, - }, - ], - // SVG Specific - '@html-eslint/require-doctype': 'off', - '@html-eslint/no-duplicate-attrs': 'error', - '@html-eslint/no-inline-styles': 'error', - '@html-eslint/require-attrs': ['error', ...requiredSVGAttrs], - '@html-eslint/indent': ['error', 2], - '@html-eslint/no-extra-spacing-attrs': [ - 'error', - { - enforceBeforeSelfClose: true, - }, - ], - '@html-eslint/require-closing-tags': [ - 'error', - { - selfClosing: 'always', - allowSelfClosingCustom: true, - }, - ], - '@html-eslint/element-newline': 'error', - '@html-eslint/no-multiple-empty-lines': 'error', - '@html-eslint/no-trailing-spaces': 'error', - '@html-eslint/quotes': 'error', }, - + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./site/tsconfig.json', './packages/*/tsconfig.json'], + ecmaVersion: 'latest', + sourceType: 'module', + }, overrides: [ { - files: ['*.svg'], + files: ['./icons/*.svg'], parser: '@html-eslint/parser', + rules: { + 'prettier/prettier': 'off', + '@html-eslint/require-doctype': 'off', + '@html-eslint/no-duplicate-attrs': 'error', + '@html-eslint/no-inline-styles': 'error', + '@html-eslint/require-attrs': ['error', ...requiredSVGAttrs], + '@html-eslint/indent': ['error', 2], + "@html-eslint/no-multiple-empty-lines": ["error", { "max": 0 }], + '@html-eslint/no-extra-spacing-attrs': [ + 'error', + { + enforceBeforeSelfClose: true, + }, + ], + '@html-eslint/require-closing-tags': [ + 'error', + { + selfClosing: 'always', + allowSelfClosingCustom: true, + }, + ], + '@html-eslint/element-newline': 'error', + '@html-eslint/no-trailing-spaces': 'error', + '@html-eslint/quotes': 'error', + } }, ], }; diff --git a/icons/cassette-tape.svg b/icons/cassette-tape.svg index 20df843c9b7..fbcbf297072 100644 --- a/icons/cassette-tape.svg +++ b/icons/cassette-tape.svg @@ -13,5 +13,5 @@ - + diff --git a/icons/drama.svg b/icons/drama.svg index f8949447b0b..e53b0d07c21 100644 --- a/icons/drama.svg +++ b/icons/drama.svg @@ -9,12 +9,12 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - + + + + + + + + diff --git a/icons/life-buoy.svg b/icons/life-buoy.svg index 31bcb2d82a1..f60395f986b 100644 --- a/icons/life-buoy.svg +++ b/icons/life-buoy.svg @@ -10,9 +10,9 @@ stroke-linejoin="round" > - - - - + + + + diff --git a/icons/rotate-ccw.svg b/icons/rotate-ccw.svg index e7ef1cf2e02..eb0fe3491a9 100644 --- a/icons/rotate-ccw.svg +++ b/icons/rotate-ccw.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/spade.svg b/icons/spade.svg index 70863d4c4e7..669dd53cc89 100644 --- a/icons/spade.svg +++ b/icons/spade.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + diff --git a/icons/store.svg b/icons/store.svg index 92c29622a6f..971184a3c99 100644 --- a/icons/store.svg +++ b/icons/store.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/text-cursor-input.svg b/icons/text-cursor-input.svg index e3dcaeff4db..c08f47ec3d1 100644 --- a/icons/text-cursor-input.svg +++ b/icons/text-cursor-input.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/theater.svg b/icons/theater.svg index 79c08800096..804c0496343 100644 --- a/icons/theater.svg +++ b/icons/theater.svg @@ -9,13 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - - + + + + + + + + + diff --git a/package.json b/package.json index e401e134037..fcec5a83371 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "generate:contributors": "node ./scripts/updateContributors.mjs icons/*.svg", "generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mjs", "postinstall": "husky install", - "lint": "eslint --ext .ts,.js .", + "lint": "eslint .", "prepare": "husky install", "gi": "node ./scripts/generate/generateIcons.mjs" }, diff --git a/packages/lucide-angular/karma.conf.js b/packages/lucide-angular/karma.conf.js index feb06c575bc..995319346bc 100644 --- a/packages/lucide-angular/karma.conf.js +++ b/packages/lucide-angular/karma.conf.js @@ -1,4 +1,4 @@ -/* eslint-disable import/no-extraneous-dependencies, global-require, func-names */ +/* eslint-disable global-require, func-names */ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html process.env.CHROME_BIN = require('puppeteer').executablePath(); diff --git a/packages/lucide-vue/nuxt.js b/packages/lucide-vue/nuxt.js index ba76d2584e5..4c5c8122fc5 100644 --- a/packages/lucide-vue/nuxt.js +++ b/packages/lucide-vue/nuxt.js @@ -1,7 +1,7 @@ import { join } from 'path'; -export default function() { - this.nuxt.hook('components:dirs', dirs => { +export default function LucideNuxtPlugin() { + this.nuxt.hook('components:dirs', (dirs) => { dirs.push({ path: join(__dirname, 'dist', 'esm', 'icons'), prefix: 'Icon', diff --git a/packages/lucide-vue/package.json b/packages/lucide-vue/package.json index 3b6b44b2575..50ec022565f 100644 --- a/packages/lucide-vue/package.json +++ b/packages/lucide-vue/package.json @@ -26,7 +26,7 @@ "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles", "copy:license": "cp ../../LICENSE ./LICENSE", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js", - "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtention=.ts --exportFileName=index.ts", + "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", "build:bundles": "rollup -c ./rollup.config.mjs", "test": "vitest run", "version": "pnpm version --git-tag-version=false" diff --git a/tools/build-icons/building/generateIconFiles.mjs b/tools/build-icons/building/generateIconFiles.mjs index 44247f7e364..9540432939f 100644 --- a/tools/build-icons/building/generateIconFiles.mjs +++ b/tools/build-icons/building/generateIconFiles.mjs @@ -33,6 +33,7 @@ export default ({ ? prettier.format(elementTemplate, { singleQuote: true, trailingComma: 'all', + printWidth: 100, parser: 'babel', }) : elementTemplate; From 53463e271a8541b74547d94dffe36d9ae9a66a97 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 13:59:47 +0200 Subject: [PATCH 05/18] Format icons --- icons/arrow-down-0-1.json | 1 + icons/arrow-down-1-0.json | 1 + icons/arrow-down-a-z.json | 1 + icons/arrow-down-z-a.json | 1 + icons/arrow-up-0-1.json | 1 + icons/arrow-up-1-0.json | 1 + icons/arrow-up-a-z.json | 1 + icons/arrow-up-z-a.json | 1 + icons/axis-3d.json | 1 + icons/file-axis-3d.json | 1 + icons/grid-2x2.json | 1 + icons/grid-3x3.json | 1 + icons/move-3d.json | 1 + icons/rotate-3d.json | 1 + icons/scale-3d.json | 1 + 15 files changed, 15 insertions(+) diff --git a/icons/arrow-down-0-1.json b/icons/arrow-down-0-1.json index 8b9f6666d7b..259441cdc5c 100644 --- a/icons/arrow-down-0-1.json +++ b/icons/arrow-down-0-1.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-down-01", "arrow-down-01" ] } \ No newline at end of file diff --git a/icons/arrow-down-1-0.json b/icons/arrow-down-1-0.json index 102dc64389b..ac6dca32446 100644 --- a/icons/arrow-down-1-0.json +++ b/icons/arrow-down-1-0.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-down-10", "arrow-down-10" ] } \ No newline at end of file diff --git a/icons/arrow-down-a-z.json b/icons/arrow-down-a-z.json index 3f95924cfcc..53876045478 100644 --- a/icons/arrow-down-a-z.json +++ b/icons/arrow-down-a-z.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-down-az", "arrow-down-az" ] } \ No newline at end of file diff --git a/icons/arrow-down-z-a.json b/icons/arrow-down-z-a.json index fdf206aef9f..2a2b0478701 100644 --- a/icons/arrow-down-z-a.json +++ b/icons/arrow-down-z-a.json @@ -16,6 +16,7 @@ "arrows" ], "aliases": [ + "arrow-down-za", "arrow-down-za" ] } \ No newline at end of file diff --git a/icons/arrow-up-0-1.json b/icons/arrow-up-0-1.json index 7c4d4153f7e..7ae089d91d2 100644 --- a/icons/arrow-up-0-1.json +++ b/icons/arrow-up-0-1.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-up-01", "arrow-up-01" ] } \ No newline at end of file diff --git a/icons/arrow-up-1-0.json b/icons/arrow-up-1-0.json index 63edc499ab7..ee8fc5d1bc8 100644 --- a/icons/arrow-up-1-0.json +++ b/icons/arrow-up-1-0.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-up-10", "arrow-up-10" ] } \ No newline at end of file diff --git a/icons/arrow-up-a-z.json b/icons/arrow-up-a-z.json index 41e7a6d4442..110956c14be 100644 --- a/icons/arrow-up-a-z.json +++ b/icons/arrow-up-a-z.json @@ -15,6 +15,7 @@ "arrows" ], "aliases": [ + "arrow-up-az", "arrow-up-az" ] } \ No newline at end of file diff --git a/icons/arrow-up-z-a.json b/icons/arrow-up-z-a.json index 93b30120314..188ff5461f4 100644 --- a/icons/arrow-up-z-a.json +++ b/icons/arrow-up-z-a.json @@ -16,6 +16,7 @@ "arrows" ], "aliases": [ + "arrow-up-za", "arrow-up-za" ] } \ No newline at end of file diff --git a/icons/axis-3d.json b/icons/axis-3d.json index e92d8a811df..21c273cf911 100644 --- a/icons/axis-3d.json +++ b/icons/axis-3d.json @@ -13,6 +13,7 @@ "design" ], "aliases": [ + "axis-3-d", "axis-3-d" ] } \ No newline at end of file diff --git a/icons/file-axis-3d.json b/icons/file-axis-3d.json index da6023e3735..4da6326167b 100644 --- a/icons/file-axis-3d.json +++ b/icons/file-axis-3d.json @@ -14,6 +14,7 @@ "files" ], "aliases": [ + "file-axis-3-d", "file-axis-3-d" ] } \ No newline at end of file diff --git a/icons/grid-2x2.json b/icons/grid-2x2.json index 53baa92d2ee..a44a12a9832 100644 --- a/icons/grid-2x2.json +++ b/icons/grid-2x2.json @@ -28,6 +28,7 @@ "maths" ], "aliases": [ + "grid-2-x-2", "grid-2-x-2" ] } \ No newline at end of file diff --git a/icons/grid-3x3.json b/icons/grid-3x3.json index 2bf56516971..6dabfec749c 100644 --- a/icons/grid-3x3.json +++ b/icons/grid-3x3.json @@ -19,6 +19,7 @@ ], "aliases": [ "grid", + "grid-3-x-3", "grid-3-x-3" ] } \ No newline at end of file diff --git a/icons/move-3d.json b/icons/move-3d.json index faab605319d..076da041360 100644 --- a/icons/move-3d.json +++ b/icons/move-3d.json @@ -16,6 +16,7 @@ "design" ], "aliases": [ + "move-3-d", "move-3-d" ] } \ No newline at end of file diff --git a/icons/rotate-3d.json b/icons/rotate-3d.json index 9761efba368..e592a785fb4 100644 --- a/icons/rotate-3d.json +++ b/icons/rotate-3d.json @@ -13,6 +13,7 @@ "design" ], "aliases": [ + "rotate-3-d", "rotate-3-d" ] } \ No newline at end of file diff --git a/icons/scale-3d.json b/icons/scale-3d.json index ad7892eaa6a..614627f8d90 100644 --- a/icons/scale-3d.json +++ b/icons/scale-3d.json @@ -14,6 +14,7 @@ "design" ], "aliases": [ + "scale-3-d", "scale-3-d" ] } \ No newline at end of file From fa5183e7e4d16b1844da8180ec51cc22d758c0a0 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 14:00:27 +0200 Subject: [PATCH 06/18] Test svg --- icons/store.svg | 1 - 1 file changed, 1 deletion(-) diff --git a/icons/store.svg b/icons/store.svg index 971184a3c99..61d97bf38a4 100644 --- a/icons/store.svg +++ b/icons/store.svg @@ -5,7 +5,6 @@ viewBox="0 0 24 24" fill="none" stroke="currentColor" - stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > From 81f33dc70246e8de927524c8116a7bdceb5f466a Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 15:22:21 +0200 Subject: [PATCH 07/18] Add workflow --- .github/workflows/pull-request.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 335b8233963..03a608ccf0f 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -41,6 +41,22 @@ jobs: # output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A - name: Fail if contributors have changed run: git diff --exit-code -- icons/*.json + + lint-icons: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3.8.1 + with: + node-version: 18 + cache: 'pnpm' + + - name: Run ESLint + run: pnpm lint + add-changed-icons-comment: runs-on: ubuntu-latest permissions: From dd2d62f41b02cbe94aeaeee03f90ac491ae58928 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 15:25:45 +0200 Subject: [PATCH 08/18] Fix lint command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 52b51d720ab..9de77d6f49c 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "lint:json:icons": "ajv --spec=draft2020 -s icon.schema.json -d 'icons/*.json' > /dev/null", "lint:json:categories": "ajv --spec=draft2020 -s category.schema.json -d 'categories/*.json' > /dev/null", "lint:json": "pnpm run lint:json:icons && pnpm run lint:json:categories", - "lint": "pnpm lint:js lint:json", + "lint": "pnpm lint:js && pnpm lint:json", "prepare": "husky install", "gi": "node ./scripts/generate/generateIcons.mjs" }, From 73335afad059669b2ce4b43fb0a19adae305490f Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Fri, 27 Oct 2023 15:33:13 +0200 Subject: [PATCH 09/18] Revert duplicated aliases --- icons/arrow-up-0-1.json | 3 +-- icons/arrow-up-1-0.json | 3 +-- icons/arrow-up-a-z.json | 3 +-- icons/arrow-up-z-a.json | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/icons/arrow-up-0-1.json b/icons/arrow-up-0-1.json index 7ae089d91d2..f6cf19afb06 100644 --- a/icons/arrow-up-0-1.json +++ b/icons/arrow-up-0-1.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-up-01", "arrow-up-01" ] -} \ No newline at end of file +} diff --git a/icons/arrow-up-1-0.json b/icons/arrow-up-1-0.json index ee8fc5d1bc8..f82f835b68d 100644 --- a/icons/arrow-up-1-0.json +++ b/icons/arrow-up-1-0.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-up-10", "arrow-up-10" ] -} \ No newline at end of file +} diff --git a/icons/arrow-up-a-z.json b/icons/arrow-up-a-z.json index 110956c14be..993445caab8 100644 --- a/icons/arrow-up-a-z.json +++ b/icons/arrow-up-a-z.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-up-az", "arrow-up-az" ] -} \ No newline at end of file +} diff --git a/icons/arrow-up-z-a.json b/icons/arrow-up-z-a.json index 188ff5461f4..a327cee92e5 100644 --- a/icons/arrow-up-z-a.json +++ b/icons/arrow-up-z-a.json @@ -16,7 +16,6 @@ "arrows" ], "aliases": [ - "arrow-up-za", "arrow-up-za" ] -} \ No newline at end of file +} From 098a1f847fb43f8a580c0e04b4ab0270df28c5ff Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:26:24 +0100 Subject: [PATCH 10/18] Update .eslintrc.js Co-authored-by: Jakob Guddas --- .eslintrc.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index c2b92d1d5ad..2d7e61b78b1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,18 +1,6 @@ -const requiredSVGAttrs = Object.entries({ - xmlns: 'http://www.w3.org/2000/svg', - width: 24, - height: 24, - viewBox: '0 0 24 24', - fill: 'none', - stroke: 'currentColor', - 'stroke-width': 2, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round', -}).map(([attr, value]) => ({ - tag: 'svg', - attr, - value: String(value), -})); +import DEFAULT_ATTRS from './scripts/render/default-attrs.json' assert { type: 'json' }; +const requiredSVGAttrs = Object.entries(DEFAULT_ATTRS) + .map(([attr, value]) => ({ tag: 'svg', attr, value: String(value) })); module.exports = { root: true, From 6c1cc7567e7005303cfd620d354b4750510bc178 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:26:33 +0100 Subject: [PATCH 11/18] Update .eslintrc.js Co-authored-by: Jakob Guddas --- .eslintrc.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2d7e61b78b1..dfee30873b2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -52,7 +52,11 @@ module.exports = { '@html-eslint/require-doctype': 'off', '@html-eslint/no-duplicate-attrs': 'error', '@html-eslint/no-inline-styles': 'error', - '@html-eslint/require-attrs': ['error', ...requiredSVGAttrs], + '@html-eslint/require-attrs': [ + 'error', + ...Object.entries(DEFAULT_ATTRS) + .map(([attr, value]) => ({ tag: 'svg', attr, value: String(value) })) + ], '@html-eslint/indent': ['error', 2], "@html-eslint/no-multiple-empty-lines": ["error", { "max": 0 }], '@html-eslint/no-extra-spacing-attrs': [ From 71f8ae6d8a2253588cc35cc91332b5db7affdedf Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:29:59 +0100 Subject: [PATCH 12/18] Move linter to separate workflow --- .github/workflows/linting.yml | 22 ++++++++++++++++++++++ .github/workflows/pull-request.yml | 15 --------------- 2 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/linting.yml diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 00000000000..1c2d16a6e30 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,22 @@ +name: Linting + +on: + pull_request: + paths: + - icons/** + +jobs: + linting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3.8.1 + with: + node-version: 18 + cache: 'pnpm' + + - name: Run Linter + run: pnpm lint diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 03a608ccf0f..e647886f312 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -42,21 +42,6 @@ jobs: - name: Fail if contributors have changed run: git diff --exit-code -- icons/*.json - lint-icons: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 - with: - version: 8 - - uses: actions/setup-node@v3.8.1 - with: - node-version: 18 - cache: 'pnpm' - - - name: Run ESLint - run: pnpm lint - add-changed-icons-comment: runs-on: ubuntu-latest permissions: From 8308ccc1e626c9719f694deca5e5e70ed3c7bd4d Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:31:19 +0100 Subject: [PATCH 13/18] Add pnpm install --- .github/workflows/linting.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1c2d16a6e30..a6b9448a3cf 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -18,5 +18,8 @@ jobs: node-version: 18 cache: 'pnpm' + - name: Install Dependencies + run: pnpm install --frozen-lockfile + - name: Run Linter run: pnpm lint From de9237c2d3ef2e1850f4970478eb1a4958df9dcf Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:32:38 +0100 Subject: [PATCH 14/18] Revert icon changes --- icons/arrow-down-0-1.json | 1 - icons/arrow-down-1-0.json | 1 - icons/arrow-down-a-z.json | 1 - icons/arrow-down-z-a.json | 1 - icons/arrow-up-0-1.json | 2 +- icons/arrow-up-1-0.json | 2 +- icons/arrow-up-a-z.json | 2 +- icons/arrow-up-z-a.json | 2 +- icons/axis-3d.json | 1 - icons/cake.json | 5 +++-- icons/cake.svg | 12 ++++++------ icons/cassette-tape.svg | 2 +- icons/check-circle-2.svg | 2 +- icons/check-circle.svg | 2 +- icons/check-square-2.json | 14 ++++++++++++++ icons/check-square-2.svg | 14 ++++++++++++++ icons/check-square.svg | 2 +- icons/check.svg | 2 +- icons/drama.svg | 16 ++++++++-------- icons/file-axis-3d.json | 1 - icons/grid-2x2.json | 1 - icons/grid-3x3.json | 1 - icons/life-buoy.svg | 8 ++++---- icons/move-3d.json | 1 - icons/radiation.svg | 2 +- icons/rotate-3d.json | 1 - icons/rotate-ccw.svg | 2 +- icons/scale-3d.json | 1 - icons/spade.svg | 4 ++-- icons/store.svg | 11 ++++++----- icons/text-cursor-input.svg | 10 +++++----- icons/theater.svg | 18 +++++++++--------- icons/tree-deciduous.svg | 2 +- 33 files changed, 83 insertions(+), 64 deletions(-) create mode 100644 icons/check-square-2.json create mode 100644 icons/check-square-2.svg diff --git a/icons/arrow-down-0-1.json b/icons/arrow-down-0-1.json index 259441cdc5c..8b9f6666d7b 100644 --- a/icons/arrow-down-0-1.json +++ b/icons/arrow-down-0-1.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-down-01", "arrow-down-01" ] } \ No newline at end of file diff --git a/icons/arrow-down-1-0.json b/icons/arrow-down-1-0.json index ac6dca32446..102dc64389b 100644 --- a/icons/arrow-down-1-0.json +++ b/icons/arrow-down-1-0.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-down-10", "arrow-down-10" ] } \ No newline at end of file diff --git a/icons/arrow-down-a-z.json b/icons/arrow-down-a-z.json index 53876045478..3f95924cfcc 100644 --- a/icons/arrow-down-a-z.json +++ b/icons/arrow-down-a-z.json @@ -15,7 +15,6 @@ "arrows" ], "aliases": [ - "arrow-down-az", "arrow-down-az" ] } \ No newline at end of file diff --git a/icons/arrow-down-z-a.json b/icons/arrow-down-z-a.json index 2a2b0478701..fdf206aef9f 100644 --- a/icons/arrow-down-z-a.json +++ b/icons/arrow-down-z-a.json @@ -16,7 +16,6 @@ "arrows" ], "aliases": [ - "arrow-down-za", "arrow-down-za" ] } \ No newline at end of file diff --git a/icons/arrow-up-0-1.json b/icons/arrow-up-0-1.json index f6cf19afb06..7c4d4153f7e 100644 --- a/icons/arrow-up-0-1.json +++ b/icons/arrow-up-0-1.json @@ -17,4 +17,4 @@ "aliases": [ "arrow-up-01" ] -} +} \ No newline at end of file diff --git a/icons/arrow-up-1-0.json b/icons/arrow-up-1-0.json index f82f835b68d..63edc499ab7 100644 --- a/icons/arrow-up-1-0.json +++ b/icons/arrow-up-1-0.json @@ -17,4 +17,4 @@ "aliases": [ "arrow-up-10" ] -} +} \ No newline at end of file diff --git a/icons/arrow-up-a-z.json b/icons/arrow-up-a-z.json index 993445caab8..41e7a6d4442 100644 --- a/icons/arrow-up-a-z.json +++ b/icons/arrow-up-a-z.json @@ -17,4 +17,4 @@ "aliases": [ "arrow-up-az" ] -} +} \ No newline at end of file diff --git a/icons/arrow-up-z-a.json b/icons/arrow-up-z-a.json index a327cee92e5..93b30120314 100644 --- a/icons/arrow-up-z-a.json +++ b/icons/arrow-up-z-a.json @@ -18,4 +18,4 @@ "aliases": [ "arrow-up-za" ] -} +} \ No newline at end of file diff --git a/icons/axis-3d.json b/icons/axis-3d.json index 21c273cf911..e92d8a811df 100644 --- a/icons/axis-3d.json +++ b/icons/axis-3d.json @@ -13,7 +13,6 @@ "design" ], "aliases": [ - "axis-3-d", "axis-3-d" ] } \ No newline at end of file diff --git a/icons/cake.json b/icons/cake.json index 5998d3d3c50..a5a0baad287 100644 --- a/icons/cake.json +++ b/icons/cake.json @@ -1,7 +1,8 @@ { "$schema": "../icon.schema.json", "contributors": [ - "karsa-mistmere" + "karsa-mistmere", + "jguddas" ], "tags": [ "birthday", @@ -21,4 +22,4 @@ "social", "account" ] -} \ No newline at end of file +} diff --git a/icons/cake.svg b/icons/cake.svg index 175b143391a..8fb6eae868b 100644 --- a/icons/cake.svg +++ b/icons/cake.svg @@ -12,10 +12,10 @@ - - - - - - + + + + + + diff --git a/icons/cassette-tape.svg b/icons/cassette-tape.svg index fbcbf297072..20df843c9b7 100644 --- a/icons/cassette-tape.svg +++ b/icons/cassette-tape.svg @@ -13,5 +13,5 @@ - + diff --git a/icons/check-circle-2.svg b/icons/check-circle-2.svg index 903d7597c8f..2690cda6d91 100644 --- a/icons/check-circle-2.svg +++ b/icons/check-circle-2.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/check-circle.svg b/icons/check-circle.svg index 418f30029d2..b52abccfd2b 100644 --- a/icons/check-circle.svg +++ b/icons/check-circle.svg @@ -10,5 +10,5 @@ stroke-linejoin="round" > - + diff --git a/icons/check-square-2.json b/icons/check-square-2.json new file mode 100644 index 00000000000..72b825cb2fb --- /dev/null +++ b/icons/check-square-2.json @@ -0,0 +1,14 @@ +{ + "$schema": "../icon.schema.json", + "tags": [ + "done", + "todo", + "tick", + "complete", + "task" + ], + "categories": [ + "notifications", + "shapes" + ] +} \ No newline at end of file diff --git a/icons/check-square-2.svg b/icons/check-square-2.svg new file mode 100644 index 00000000000..02b0e2faf6f --- /dev/null +++ b/icons/check-square-2.svg @@ -0,0 +1,14 @@ + + + + diff --git a/icons/check-square.svg b/icons/check-square.svg index 7f8fe6b622c..eddda82c2a7 100644 --- a/icons/check-square.svg +++ b/icons/check-square.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/check.svg b/icons/check.svg index 80aaf846f21..5abe1527434 100644 --- a/icons/check.svg +++ b/icons/check.svg @@ -9,5 +9,5 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/drama.svg b/icons/drama.svg index e53b0d07c21..f8949447b0b 100644 --- a/icons/drama.svg +++ b/icons/drama.svg @@ -9,12 +9,12 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - + + + + + + + + diff --git a/icons/file-axis-3d.json b/icons/file-axis-3d.json index 4da6326167b..da6023e3735 100644 --- a/icons/file-axis-3d.json +++ b/icons/file-axis-3d.json @@ -14,7 +14,6 @@ "files" ], "aliases": [ - "file-axis-3-d", "file-axis-3-d" ] } \ No newline at end of file diff --git a/icons/grid-2x2.json b/icons/grid-2x2.json index a44a12a9832..53baa92d2ee 100644 --- a/icons/grid-2x2.json +++ b/icons/grid-2x2.json @@ -28,7 +28,6 @@ "maths" ], "aliases": [ - "grid-2-x-2", "grid-2-x-2" ] } \ No newline at end of file diff --git a/icons/grid-3x3.json b/icons/grid-3x3.json index 6dabfec749c..2bf56516971 100644 --- a/icons/grid-3x3.json +++ b/icons/grid-3x3.json @@ -19,7 +19,6 @@ ], "aliases": [ "grid", - "grid-3-x-3", "grid-3-x-3" ] } \ No newline at end of file diff --git a/icons/life-buoy.svg b/icons/life-buoy.svg index f60395f986b..31bcb2d82a1 100644 --- a/icons/life-buoy.svg +++ b/icons/life-buoy.svg @@ -10,9 +10,9 @@ stroke-linejoin="round" > - - - - + + + + diff --git a/icons/move-3d.json b/icons/move-3d.json index 076da041360..faab605319d 100644 --- a/icons/move-3d.json +++ b/icons/move-3d.json @@ -16,7 +16,6 @@ "design" ], "aliases": [ - "move-3-d", "move-3-d" ] } \ No newline at end of file diff --git a/icons/radiation.svg b/icons/radiation.svg index 2a01f72d728..147215d01a2 100644 --- a/icons/radiation.svg +++ b/icons/radiation.svg @@ -9,7 +9,7 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/rotate-3d.json b/icons/rotate-3d.json index e592a785fb4..9761efba368 100644 --- a/icons/rotate-3d.json +++ b/icons/rotate-3d.json @@ -13,7 +13,6 @@ "design" ], "aliases": [ - "rotate-3-d", "rotate-3-d" ] } \ No newline at end of file diff --git a/icons/rotate-ccw.svg b/icons/rotate-ccw.svg index eb0fe3491a9..e7ef1cf2e02 100644 --- a/icons/rotate-ccw.svg +++ b/icons/rotate-ccw.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + diff --git a/icons/scale-3d.json b/icons/scale-3d.json index 614627f8d90..ad7892eaa6a 100644 --- a/icons/scale-3d.json +++ b/icons/scale-3d.json @@ -14,7 +14,6 @@ "design" ], "aliases": [ - "scale-3-d", "scale-3-d" ] } \ No newline at end of file diff --git a/icons/spade.svg b/icons/spade.svg index 669dd53cc89..70863d4c4e7 100644 --- a/icons/spade.svg +++ b/icons/spade.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - - + + diff --git a/icons/store.svg b/icons/store.svg index 61d97bf38a4..92c29622a6f 100644 --- a/icons/store.svg +++ b/icons/store.svg @@ -5,12 +5,13 @@ viewBox="0 0 24 24" fill="none" stroke="currentColor" + stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/text-cursor-input.svg b/icons/text-cursor-input.svg index c08f47ec3d1..e3dcaeff4db 100644 --- a/icons/text-cursor-input.svg +++ b/icons/text-cursor-input.svg @@ -9,9 +9,9 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - + + + + + diff --git a/icons/theater.svg b/icons/theater.svg index 804c0496343..79c08800096 100644 --- a/icons/theater.svg +++ b/icons/theater.svg @@ -9,13 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - - + + + + + + + + + diff --git a/icons/tree-deciduous.svg b/icons/tree-deciduous.svg index 24bfadd10de..eb084b338c8 100644 --- a/icons/tree-deciduous.svg +++ b/icons/tree-deciduous.svg @@ -9,6 +9,6 @@ stroke-linecap="round" stroke-linejoin="round" > - + From c715037b2959944b88fbbe44a2272ed256774ef6 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:36:24 +0100 Subject: [PATCH 15/18] Test eslint workflow --- .eslintrc.js | 4 +--- icons/theater.svg | 18 +++++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index dfee30873b2..56898e032bc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,4 @@ -import DEFAULT_ATTRS from './scripts/render/default-attrs.json' assert { type: 'json' }; -const requiredSVGAttrs = Object.entries(DEFAULT_ATTRS) - .map(([attr, value]) => ({ tag: 'svg', attr, value: String(value) })); +const DEFAULT_ATTRS = require('./scripts/render/default-attrs.json'); module.exports = { root: true, diff --git a/icons/theater.svg b/icons/theater.svg index 79c08800096..804c0496343 100644 --- a/icons/theater.svg +++ b/icons/theater.svg @@ -9,13 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - - + + + + + + + + + From 8804f298b60a3b479a88ac712734e28cdf14906b Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:42:53 +0100 Subject: [PATCH 16/18] turn of fail lint-contributors --- .github/workflows/pull-request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index e647886f312..210c167a99a 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -39,8 +39,8 @@ jobs: # Example for the previous substitution # input: +++ b/icons/accessibility.json%0A@@ -2,0 +3 @@%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A # output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A - - name: Fail if contributors have changed - run: git diff --exit-code -- icons/*.json + # - name: Fail if contributors have changed + # run: git diff --exit-code -- icons/*.json add-changed-icons-comment: runs-on: ubuntu-latest From e1128e4b085d19af0d72c7436e130f31910ececd Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Wed, 1 Nov 2023 20:45:58 +0100 Subject: [PATCH 17/18] Revert theater --- icons/theater.svg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/icons/theater.svg b/icons/theater.svg index 804c0496343..79c08800096 100644 --- a/icons/theater.svg +++ b/icons/theater.svg @@ -9,13 +9,13 @@ stroke-linecap="round" stroke-linejoin="round" > - - - - - - - - - + + + + + + + + + From a9bd0189f60e770ad431b6d1c18a335b2a1529bd Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Mon, 6 Nov 2023 10:57:07 +0100 Subject: [PATCH 18/18] process feedback --- icons/spline.json | 11 +++++++++-- icons/umbrella-off.json | 1 - package.json | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/icons/spline.json b/icons/spline.json index cde3932cacc..97e379de270 100644 --- a/icons/spline.json +++ b/icons/spline.json @@ -4,8 +4,15 @@ "ericfennis", "jguddas" ], - "tags": [], + "tags": [ + "path", + "pen", + "tool", + "shape", + "curve", + "draw" + ], "categories": [ "design" ] -} \ No newline at end of file +} diff --git a/icons/umbrella-off.json b/icons/umbrella-off.json index bd4d441df0c..7aeeb9096a0 100644 --- a/icons/umbrella-off.json +++ b/icons/umbrella-off.json @@ -5,7 +5,6 @@ "csandman", "ericfennis", "karsa-mistmere", - "jguddas", "jguddas" ], "tags": [ diff --git a/package.json b/package.json index 9de77d6f49c..5a0db76ee91 100644 --- a/package.json +++ b/package.json @@ -29,11 +29,11 @@ "generate:contributors": "node ./scripts/updateContributors.mjs icons/*.svg", "generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mjs", "postinstall": "husky install", - "lint:js": "eslint .", + "lint:es": "eslint .", "lint:json:icons": "ajv --spec=draft2020 -s icon.schema.json -d 'icons/*.json' > /dev/null", "lint:json:categories": "ajv --spec=draft2020 -s category.schema.json -d 'categories/*.json' > /dev/null", "lint:json": "pnpm run lint:json:icons && pnpm run lint:json:categories", - "lint": "pnpm lint:js && pnpm lint:json", + "lint": "pnpm lint:es && pnpm lint:json", "prepare": "husky install", "gi": "node ./scripts/generate/generateIcons.mjs" },