From bd59eccb2c97bbe055b2d277ea1f9c1439ad8b42 Mon Sep 17 00:00:00 2001 From: ntnyq Date: Wed, 4 Dec 2024 21:08:30 +0800 Subject: [PATCH] feat: validate rule `meta.schema` --- package.json | 4 +- pnpm-lock.yaml | 634 ++++++++++++++++++++++++++++++++++++--------- src/rule-tester.ts | 25 ++ src/vendor/ajv.ts | 62 +++++ taze.config.ts | 5 + 5 files changed, 602 insertions(+), 128 deletions(-) create mode 100644 src/vendor/ajv.ts create mode 100644 taze.config.ts diff --git a/package.json b/package.json index a0e6450..94a80a0 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,8 @@ "dependencies": { "@antfu/utils": "^0.7.10", "@types/eslint": "^9.6.0", - "@typescript-eslint/utils": "^8.1.0" + "@typescript-eslint/utils": "^8.1.0", + "ajv": "^6.12.6" }, "devDependencies": { "@antfu/eslint-config": "^2.25.2", @@ -66,6 +67,7 @@ "pnpm": "^9.7.1", "rimraf": "^6.0.1", "simple-git-hooks": "^2.11.1", + "taze": "^0.18.0", "typescript": "^5.5.4", "unbuild": "^2.0.0", "vite": "^5.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54670e5..84ef1ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,11 +16,14 @@ importers: version: 9.6.0 '@typescript-eslint/utils': specifier: ^8.1.0 - version: 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + version: 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + ajv: + specifier: ^6.12.6 + version: 6.12.6 devDependencies: '@antfu/eslint-config': specifier: ^2.25.2 - version: 2.25.2(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0)) + version: 2.25.2(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0)) '@antfu/ni': specifier: ^0.22.4 version: 0.22.4 @@ -32,7 +35,7 @@ importers: version: 9.5.1 eslint: specifier: ^9.9.0 - version: 9.9.0(jiti@1.21.6) + version: 9.9.0(jiti@2.4.1) esno: specifier: ^4.7.0 version: 4.7.0 @@ -48,6 +51,9 @@ importers: simple-git-hooks: specifier: ^2.11.1 version: 2.11.1 + taze: + specifier: ^0.18.0 + version: 0.18.0 typescript: specifier: ^5.5.4 version: 5.5.4 @@ -124,6 +130,10 @@ packages: resolution: {integrity: sha512-uCzh43cmUwQQcgv2BPyo0JWOMgXhcaE+F2I6Ucmfc7f9ir52lfA4OtZXdfL5D8cMa5GAwuCSNqOshIol8YN82g==} hasBin: true + '@antfu/ni@0.23.1': + resolution: {integrity: sha512-VFAvMTJhjP6L7CuBKT5FioDCSpdmZxJ4POKTJOrFNicI2CK6mlaRwVEBGWLGm2V6BtQgdbBn9X68piHSbw5wQQ==} + hasBin: true + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} @@ -246,6 +256,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -264,6 +280,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -282,6 +304,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -300,6 +328,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -318,6 +352,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -336,6 +376,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -354,6 +400,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -372,6 +424,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -390,6 +448,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -408,6 +472,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -426,6 +496,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -444,6 +520,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -462,6 +544,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -480,6 +568,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -498,6 +592,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -516,6 +616,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -534,6 +640,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -552,6 +664,18 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -570,6 +694,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -588,6 +718,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -606,6 +742,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -624,6 +766,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -642,6 +790,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.4.0': resolution: {integrity: sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -652,7 +806,7 @@ packages: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^9.9.0 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} @@ -923,7 +1077,7 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^9.9.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: @@ -1143,6 +1297,12 @@ packages: engines: {node: '>=10'} hasBin: true + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + c12@1.11.1: resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} peerDependencies: @@ -1294,6 +1454,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1367,6 +1536,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1674,6 +1848,9 @@ packages: get-tsconfig@4.7.3: resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true @@ -1756,6 +1933,9 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + importx@0.5.0: + resolution: {integrity: sha512-qROz3rSOjQYclmEQAajH9RhBuqpAGHM+5CNd9fk+TsF4JKmQsAI1egafW8XZZv8vARCo4nAmmt5d0eI2B8GUsA==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1846,6 +2026,10 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jiti@2.4.1: + resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1929,6 +2113,10 @@ packages: resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} engines: {node: '>=18.0.0'} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -2093,6 +2281,9 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} @@ -2130,6 +2321,9 @@ packages: package-json-from-dist@1.0.0: resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.2.6: + resolution: {integrity: sha512-9vPH3qooBlYRJdmdYP00nvjZOulm40r5dhtal8st18ctf+6S1k7pi5yIHLvI4w5D70x0Y+xdVD9qITH0QO/A8A==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2475,12 +2669,19 @@ packages: resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} + taze@0.18.0: + resolution: {integrity: sha512-aL8g+4tZvfhsn147u9dRP2eUE2MV+HfJe1sAtSJp46b0Gd8AjyqlJ2uDwnJfM1XNv301Mvh98RkXQw27sco5tQ==} + hasBin: true + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} tinybench@2.8.0: resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinypool@1.0.0: resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2514,6 +2715,11 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + engines: {node: '>=18.0.0'} + hasBin: true + tsx@4.7.2: resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==} engines: {node: '>=18.0.0'} @@ -2547,6 +2753,9 @@ packages: ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + unbuild@2.0.0: resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} hasBin: true @@ -2556,6 +2765,9 @@ packages: typescript: optional: true + unconfig@0.6.0: + resolution: {integrity: sha512-4C67J0nIF2QwSXty2kW3zZx1pMZ3iXabylvJWWgHybWVUcMf9pxwsngoQt0gC+AVstRywFqrRBp3qOXJayhpOw==} + undici-types@6.18.2: resolution: {integrity: sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==} @@ -2721,42 +2933,42 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@2.25.2(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0))': + '@antfu/eslint-config@2.25.2(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0))': dependencies: '@antfu/install-pkg': 0.3.5 '@clack/prompts': 0.7.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.9.0(jiti@1.21.6)) - '@stylistic/eslint-plugin': 2.6.3(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - '@vitest/eslint-plugin': 1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0)) - eslint: 9.9.0(jiti@1.21.6) + '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.9.0(jiti@2.4.1)) + '@stylistic/eslint-plugin': 2.6.3(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + '@vitest/eslint-plugin': 1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0)) + eslint: 9.9.0(jiti@2.4.1) eslint-config-flat-gitignore: 0.1.8 eslint-flat-config-utils: 0.3.0 - eslint-merge-processors: 0.1.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-antfu: 2.3.5(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-command: 0.2.3(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-import-x: 3.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - eslint-plugin-jsdoc: 50.2.2(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-jsonc: 2.16.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-markdown: 5.1.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-n: 17.10.2(eslint@9.9.0(jiti@1.21.6)) + eslint-merge-processors: 0.1.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-antfu: 2.3.5(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-command: 0.2.3(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-import-x: 3.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + eslint-plugin-jsdoc: 50.2.2(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-jsonc: 2.16.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-markdown: 5.1.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-n: 17.10.2(eslint@9.9.0(jiti@2.4.1)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))) - eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-toml: 0.11.1(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-vue: 9.27.0(eslint@9.9.0(jiti@1.21.6)) - eslint-plugin-yml: 1.14.0(eslint@9.9.0(jiti@1.21.6)) - eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-perfectionist: 3.2.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.4.1))) + eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-toml: 0.11.1(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-unused-imports: 4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-vue: 9.27.0(eslint@9.9.0(jiti@2.4.1)) + eslint-plugin-yml: 1.14.0(eslint@9.9.0(jiti@2.4.1)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@2.4.1)) globals: 15.9.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 parse-gitignore: 2.0.0 picocolors: 1.0.1 toml-eslint-parser: 0.10.0 - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.4.1)) yaml-eslint-parser: 1.2.3 yargs: 17.7.2 transitivePeerDependencies: @@ -2773,6 +2985,8 @@ snapshots: '@antfu/ni@0.22.4': {} + '@antfu/ni@0.23.1': {} + '@antfu/utils@0.7.10': {} '@babel/code-frame@7.22.13': @@ -2934,6 +3148,9 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.1': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -2943,6 +3160,9 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.1': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -2952,6 +3172,9 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.1': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -2961,6 +3184,9 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.1': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -2970,6 +3196,9 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.1': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -2979,6 +3208,9 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.1': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -2988,6 +3220,9 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.1': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -2997,6 +3232,9 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.1': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -3006,6 +3244,9 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.1': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -3015,6 +3256,9 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.1': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -3024,6 +3268,9 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.1': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -3033,6 +3280,9 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.1': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -3042,6 +3292,9 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.1': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -3051,6 +3304,9 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.1': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -3060,6 +3316,9 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.1': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -3069,6 +3328,9 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.1': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -3078,6 +3340,9 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.1': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -3087,6 +3352,12 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -3096,6 +3367,9 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.1': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -3105,6 +3379,9 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.1': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -3114,6 +3391,9 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.1': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -3123,6 +3403,9 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.1': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -3132,15 +3415,18 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.9.0(jiti@1.21.6))': + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.9.0(jiti@2.4.1))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) ignore: 5.3.1 - '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@2.4.1))': dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -3322,47 +3608,47 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.14.3': optional: true - '@stylistic/eslint-plugin-js@2.6.3(eslint@9.9.0(jiti@1.21.6))': + '@stylistic/eslint-plugin-js@2.6.3(eslint@9.9.0(jiti@2.4.1))': dependencies: '@types/eslint': 9.6.0 acorn: 8.12.1 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-visitor-keys: 4.0.0 espree: 10.1.0 - '@stylistic/eslint-plugin-jsx@2.6.3(eslint@9.9.0(jiti@1.21.6))': + '@stylistic/eslint-plugin-jsx@2.6.3(eslint@9.9.0(jiti@2.4.1))': dependencies: - '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@2.4.1)) '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 picomatch: 4.0.2 - '@stylistic/eslint-plugin-plus@2.6.3(eslint@9.9.0(jiti@1.21.6))': + '@stylistic/eslint-plugin-plus@2.6.3(eslint@9.9.0(jiti@2.4.1))': dependencies: '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) - '@stylistic/eslint-plugin-ts@2.6.3(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@stylistic/eslint-plugin-ts@2.6.3(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@1.21.6)) + '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@2.4.1)) '@types/eslint': 9.6.0 - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.9.0(jiti@1.21.6) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + eslint: 9.9.0(jiti@2.4.1) transitivePeerDependencies: - supports-color - typescript - '@stylistic/eslint-plugin@2.6.3(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@stylistic/eslint-plugin@2.6.3(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: - '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-jsx': 2.6.3(eslint@9.9.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-plus': 2.6.3(eslint@9.9.0(jiti@1.21.6)) - '@stylistic/eslint-plugin-ts': 2.6.3(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@stylistic/eslint-plugin-js': 2.6.3(eslint@9.9.0(jiti@2.4.1)) + '@stylistic/eslint-plugin-jsx': 2.6.3(eslint@9.9.0(jiti@2.4.1)) + '@stylistic/eslint-plugin-plus': 2.6.3(eslint@9.9.0(jiti@2.4.1)) + '@stylistic/eslint-plugin-ts': 2.6.3(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) '@types/eslint': 9.6.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) transitivePeerDependencies: - supports-color - typescript @@ -3395,15 +3681,15 @@ snapshots: '@types/unist@2.0.6': {} - '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) '@typescript-eslint/scope-manager': 8.1.0 - '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.1.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -3413,14 +3699,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 8.1.0 '@typescript-eslint/types': 8.1.0 '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.1.0 debug: 4.3.6 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -3436,10 +3722,10 @@ snapshots: '@typescript-eslint/types': 8.1.0 '@typescript-eslint/visitor-keys': 8.1.0 - '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -3482,24 +3768,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.16.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@7.16.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) '@typescript-eslint/scope-manager': 7.16.0 '@typescript-eslint/types': 7.16.0 '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.4) - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)': + '@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) '@typescript-eslint/scope-manager': 8.1.0 '@typescript-eslint/types': 8.1.0 '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4) - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) transitivePeerDependencies: - supports-color - typescript @@ -3514,11 +3800,11 @@ snapshots: '@typescript-eslint/types': 8.1.0 eslint-visitor-keys: 3.4.3 - '@vitest/eslint-plugin@1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0))': + '@vitest/eslint-plugin@1.0.3(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.3.0))': dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) optionalDependencies: - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) typescript: 5.5.4 vitest: 2.0.5(@types/node@22.3.0) @@ -3681,6 +3967,11 @@ snapshots: transitivePeerDependencies: - magicast + bundle-require@5.0.0(esbuild@0.21.5): + dependencies: + esbuild: 0.21.5 + load-tsconfig: 0.2.5 + c12@1.11.1: dependencies: chokidar: 3.6.0 @@ -3822,6 +4113,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.7: + dependencies: + ms: 2.1.3 + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -3942,19 +4237,46 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.1.2(eslint@9.9.0(jiti@1.21.6)): + eslint-compat-utils@0.1.2(eslint@9.9.0(jiti@2.4.1)): dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) - eslint-compat-utils@0.5.0(eslint@9.9.0(jiti@1.21.6)): + eslint-compat-utils@0.5.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) semver: 7.6.3 eslint-config-flat-gitignore@0.1.8: @@ -3975,33 +4297,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-merge-processors@0.1.0(eslint@9.9.0(jiti@1.21.6)): + eslint-merge-processors@0.1.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) - eslint-plugin-antfu@2.3.5(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-antfu@2.3.5(eslint@9.9.0(jiti@2.4.1)): dependencies: '@antfu/utils': 0.7.10 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) - eslint-plugin-command@0.2.3(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-command@0.2.3(eslint@9.9.0(jiti@2.4.1)): dependencies: '@es-joy/jsdoccomment': 0.43.1 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) - eslint-plugin-es-x@7.5.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-es-x@7.5.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) '@eslint-community/regexpp': 4.11.0 - eslint: 9.9.0(jiti@1.21.6) - eslint-compat-utils: 0.1.2(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@2.4.1) + eslint-compat-utils: 0.1.2(eslint@9.9.0(jiti@2.4.1)) - eslint-plugin-import-x@3.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4): + eslint-plugin-import-x@3.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 7.16.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 7.16.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) debug: 4.3.6 doctrine: 3.0.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.7.3 is-glob: 4.0.3 @@ -4013,14 +4335,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@50.2.2(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-jsdoc@50.2.2(eslint@9.9.0(jiti@2.4.1)): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.6 escape-string-regexp: 4.0.0 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -4030,30 +4352,30 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.16.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-jsonc@2.16.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) - eslint: 9.9.0(jiti@1.21.6) - eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) + eslint: 9.9.0(jiti@2.4.1) + eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@2.4.1)) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-markdown@5.1.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-markdown@5.1.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color - eslint-plugin-n@17.10.2(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-n@17.10.2(eslint@9.9.0(jiti@2.4.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) enhanced-resolve: 5.17.0 - eslint: 9.9.0(jiti@1.21.6) - eslint-plugin-es-x: 7.5.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@2.4.1) + eslint-plugin-es-x: 7.5.0(eslint@9.9.0(jiti@2.4.1)) get-tsconfig: 4.7.3 globals: 15.9.0 ignore: 5.3.1 @@ -4062,48 +4384,48 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))): + eslint-plugin-perfectionist@3.2.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.4.1))): dependencies: '@typescript-eslint/types': 8.1.0 - '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) - eslint: 9.9.0(jiti@1.21.6) + '@typescript-eslint/utils': 8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) + eslint: 9.9.0(jiti@2.4.1) minimatch: 10.0.1 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.4.1)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@0.11.1(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-toml@0.11.1(eslint@9.9.0(jiti@2.4.1)): dependencies: debug: 4.3.6 - eslint: 9.9.0(jiti@1.21.6) - eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@2.4.1) + eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@2.4.1)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-unicorn@55.0.0(eslint@9.9.0(jiti@2.4.1)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.37.1 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) esquery: 1.6.0 globals: 15.9.0 indent-string: 4.0.0 @@ -4116,41 +4438,41 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-unused-imports@4.1.3(@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1)): dependencies: - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4))(eslint@9.9.0(jiti@2.4.1))(typescript@5.5.4) - eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@2.4.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) - eslint: 9.9.0(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) + eslint: 9.9.0(jiti@2.4.1) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.16 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.9.0(jiti@2.4.1)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-yml@1.14.0(eslint@9.9.0(jiti@1.21.6)): + eslint-plugin-yml@1.14.0(eslint@9.9.0(jiti@2.4.1)): dependencies: debug: 4.3.6 - eslint: 9.9.0(jiti@1.21.6) - eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@1.21.6)) + eslint: 9.9.0(jiti@2.4.1) + eslint-compat-utils: 0.5.0(eslint@9.9.0(jiti@2.4.1)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@1.21.6)): + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.3.10)(eslint@9.9.0(jiti@2.4.1)): dependencies: '@vue/compiler-sfc': 3.3.10 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-scope@7.2.2: dependencies: @@ -4166,9 +4488,9 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.9.0(jiti@1.21.6): + eslint@9.9.0(jiti@2.4.1): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@2.4.1)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.17.1 '@eslint/eslintrc': 3.1.0 @@ -4203,7 +4525,7 @@ snapshots: strip-ansi: 6.0.1 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.6 + jiti: 2.4.1 transitivePeerDependencies: - supports-color @@ -4336,6 +4658,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + giget@1.2.3: dependencies: citty: 0.1.6 @@ -4424,6 +4750,17 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + importx@0.5.0: + dependencies: + bundle-require: 5.0.0(esbuild@0.21.5) + debug: 4.3.7 + esbuild: 0.21.5 + jiti: 2.4.1 + pathe: 1.1.2 + tsx: 4.19.2 + transitivePeerDependencies: + - supports-color + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -4496,6 +4833,8 @@ snapshots: jiti@1.21.6: {} + jiti@2.4.1: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -4576,6 +4915,8 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 + load-tsconfig@0.2.5: {} + local-pkg@0.5.0: dependencies: mlly: 1.7.1 @@ -4745,6 +5086,12 @@ snapshots: pkg-types: 1.1.3 ufo: 1.5.3 + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.4 + ohash@1.1.3: {} once@1.4.0: @@ -4784,6 +5131,8 @@ snapshots: package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.6: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5114,10 +5463,24 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + taze@0.18.0: + dependencies: + '@antfu/ni': 0.23.1 + js-yaml: 4.1.0 + ofetch: 1.4.1 + package-manager-detector: 0.2.6 + tinyexec: 0.3.1 + unconfig: 0.6.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + text-table@0.2.0: {} tinybench@2.8.0: {} + tinyexec@0.3.1: {} + tinypool@1.0.0: {} tinyrainbow@1.2.0: {} @@ -5140,6 +5503,13 @@ snapshots: tslib@2.6.2: {} + tsx@4.19.2: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.1 + optionalDependencies: + fsevents: 2.3.3 + tsx@4.7.2: dependencies: esbuild: 0.19.12 @@ -5163,6 +5533,8 @@ snapshots: ufo@1.5.3: {} + ufo@1.5.4: {} + unbuild@2.0.0(typescript@5.5.4): dependencies: '@rollup/plugin-alias': 5.0.0(rollup@3.28.1) @@ -5195,6 +5567,14 @@ snapshots: - sass - supports-color + unconfig@0.6.0: + dependencies: + '@antfu/utils': 0.7.10 + defu: 6.1.4 + importx: 0.5.0 + transitivePeerDependencies: + - supports-color + undici-types@6.18.2: {} unist-util-stringify-position@2.0.3: @@ -5292,10 +5672,10 @@ snapshots: - supports-color - terser - vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)): + vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@2.4.1)): dependencies: debug: 4.3.6 - eslint: 9.9.0(jiti@1.21.6) + eslint: 9.9.0(jiti@2.4.1) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 diff --git a/src/rule-tester.ts b/src/rule-tester.ts index 8dcd509..0a008af 100644 --- a/src/rule-tester.ts +++ b/src/rule-tester.ts @@ -12,6 +12,7 @@ import type { import { isUsingTypeScriptParser, normalizeCaseError, normalizeTestCase } from './utils' import { applyFixes } from './vendor/fixer' import { pickFlatConfigFromOptions } from './options' +import { getAjvInstance, getRuleOptionsSchema } from './vendor/ajv' export function createRuleTester(options: RuleTesterInitOptions): RuleTester { const languageOptions = deepMerge( @@ -84,6 +85,30 @@ export function createRuleTester(options: RuleTesterInitOptions): RuleTester { ...pickFlatConfigFromOptions(testcase), }, ) + + const schema = getRuleOptionsSchema(options.rule) + + if (schema) { + const ajv = getAjvInstance() + + ajv.validateSchema(schema) + + if (ajv.errors) { + const errors = ajv.errors.map((error) => { + const field = error.dataPath[0] === '.' ? error.dataPath.slice(1) : error.dataPath + return `\t${field}: ${error.message}` + }) + + throw new Error(`Schema for rule ${ruleName} is invalid: ${errors}`) + } + + try { + ajv.compile(schema) + } + catch (error) { + throw new Error(`Schema for rule ${ruleName} is invalid: ${error}`) + } + } } const messages = linter.verify(testcase.code!, configs, testcase.filename) diff --git a/src/vendor/ajv.ts b/src/vendor/ajv.ts new file mode 100644 index 0000000..f74e7c7 --- /dev/null +++ b/src/vendor/ajv.ts @@ -0,0 +1,62 @@ +// Forked from https://github.com/eslint/eslint/blob/7fe4114be2e714506fd406ea4474430ea3de0f93/lib/config/flat-config-helpers.js and https://github.com/eslint/eslint/blob/7fe4114be2e714506fd406ea4474430ea3de0f93/lib/shared/ajv.js + +import Ajv from 'ajv' +import metaSchema from 'ajv/lib/refs/json-schema-draft-04.json' + +export function getAjvInstance() { + const ajv = new Ajv({ + meta: false, + useDefaults: true, + validateSchema: false, + missingRefs: 'ignore', + verbose: true, + schemaId: 'auto', + strictDefaults: true, + }) + + ajv.addMetaSchema(metaSchema) + // @ts-expect-error unexposed + ajv._opts.defaultMeta = metaSchema.id + + return ajv +} + +const noOptionsSchema = Object.freeze({ + type: 'array', + minItems: 0, + maxItems: 0, +}) + +export function getRuleOptionsSchema(rule: any) { + if (!rule?.meta) + return { ...noOptionsSchema } + + const schema = rule.meta.schema + + if (typeof schema === 'undefined') + return { ...noOptionsSchema } + + if (schema === false) + return null + + if (typeof schema !== 'object' || schema === null) + throw new TypeError(`Rule's \`meta.schema\` must be an array or object`) + + if (Array.isArray(schema)) { + if (schema.length) { + return { + type: 'array', + items: schema, + minItems: 0, + maxItems: schema.length, + } + } + else { + return { + ...noOptionsSchema, + } + } + } + + return schema +} diff --git a/taze.config.ts b/taze.config.ts new file mode 100644 index 0000000..66ae66c --- /dev/null +++ b/taze.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'taze' + +export default defineConfig({ + exclude: ['ajv'], +})