diff --git a/.changeset/fresh-falcons-repeat.md b/.changeset/fresh-falcons-repeat.md new file mode 100644 index 00000000..42602515 --- /dev/null +++ b/.changeset/fresh-falcons-repeat.md @@ -0,0 +1,5 @@ +--- +'@kitql/eslint-config': patch +--- + +add eslint-plugin-pnpm-catalogs by default diff --git a/.changeset/loose-groups-trade.md b/.changeset/loose-groups-trade.md new file mode 100644 index 00000000..cb1804d5 --- /dev/null +++ b/.changeset/loose-groups-trade.md @@ -0,0 +1,5 @@ +--- +'@kitql/eslint-config': patch +--- + +add --eslint-only and --prettier-only options + time it took in console diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad63e8d2..121300bd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: - name: 🧑‍💻 Setup env uses: jycouet/jycouet/shared-config/setup@main with: - pnpmVersion: 9.15.1 + pnpmVersion: 10.5.2 nodeVersion: 22.11.0 - name: 🚧 Build Packages diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51b7090d..e3e390d8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: - uses: jycouet/jycouet/shared-config/setup@main name: setup env with: - pnpmVersion: 9.15.1 + pnpmVersion: 10.5.2 nodeVersion: 22.11.0 - name: Create Release Pull Request or Publish to npm diff --git a/.npmrc b/.npmrc index b6f27f13..b79c6c4e 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,4 @@ engine-strict=true + +public-hoist-pattern[]=*eslint* +public-hoist-pattern[]=*prettier* \ No newline at end of file diff --git a/devbox.json b/devbox.json index 97604ddc..124b2a73 100644 --- a/devbox.json +++ b/devbox.json @@ -1,17 +1,10 @@ { "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.14.0/.schema/devbox.schema.json", - "packages": [ - "nodejs@22", - "pnpm@9" - ], + "packages": ["nodejs@22.10.0", "pnpm@10.5.2"], "shell": { - "init_hook": [ - "echo 'Welcome to devbox!' > /dev/null" - ], + "init_hook": ["echo 'Welcome to devbox!' > /dev/null"], "scripts": { - "test": [ - "echo \"Error: no test specified\" && exit 1" - ] + "test": ["echo \"Error: no test specified\" && exit 1"] } } } diff --git a/devbox.lock b/devbox.lock index 5b54bfd5..469d9a69 100644 --- a/devbox.lock +++ b/devbox.lock @@ -4,7 +4,7 @@ "github:NixOS/nixpkgs/nixpkgs-unstable": { "resolved": "github:NixOS/nixpkgs/3a05eebede89661660945da1f151959900903b6a?lastModified=1740547748&narHash=sha256-Ly2fBL1LscV%2BKyCqPRufUBuiw%2BzmWrlJzpWOWbahplg%3D" }, - "nodejs@22": { + "nodejs@22.10.0": { "last_modified": "2024-12-03T12:40:06Z", "plugin_version": "0.0.2", "resolved": "github:NixOS/nixpkgs/566e53c2ad750c84f6d31f9ccb9d00f823165550#nodejs_22", @@ -15,15 +15,15 @@ "outputs": [ { "name": "out", - "path": "/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0", + "path": "/nix/store/y6piwcsias394n5kflisg8jhll9czk2x-nodejs-22.10.0", "default": true }, { "name": "libv8", - "path": "/nix/store/6rgrpzdbylr432xa1r4mi9wc5i2bgvw0-nodejs-22.10.0-libv8" + "path": "/nix/store/2qwjlhfyn2k3dixjgqxnwhsxxyn46rxl-nodejs-22.10.0-libv8" } ], - "store_path": "/nix/store/3r50cvcf5d7fahnkx4nkr2nk3h377h4s-nodejs-22.10.0" + "store_path": "/nix/store/y6piwcsias394n5kflisg8jhll9czk2x-nodejs-22.10.0" }, "aarch64-linux": { "outputs": [ @@ -57,63 +57,63 @@ "outputs": [ { "name": "out", - "path": "/nix/store/0xvgzkl74v6jrh79ibh7ss770dh4hb69-nodejs-22.10.0", + "path": "/nix/store/hnkyz55vndmvwhg6nzpliv86gh6sxg7h-nodejs-22.10.0", "default": true }, { "name": "libv8", - "path": "/nix/store/j0nfkz29q3iigzl6ly1a75bivd1bsqc3-nodejs-22.10.0-libv8" + "path": "/nix/store/j9kj5x00fh8sac4mfb6dxmfg1dk5af90-nodejs-22.10.0-libv8" } ], - "store_path": "/nix/store/0xvgzkl74v6jrh79ibh7ss770dh4hb69-nodejs-22.10.0" + "store_path": "/nix/store/hnkyz55vndmvwhg6nzpliv86gh6sxg7h-nodejs-22.10.0" } } }, - "pnpm@9": { - "last_modified": "2025-01-06T12:26:56Z", - "resolved": "github:NixOS/nixpkgs/b30f97d8c32d804d2d832ee837d0f1ca0695faa5#pnpm", + "pnpm@10.5.2": { + "last_modified": "2025-02-27T15:48:43Z", + "resolved": "github:NixOS/nixpkgs/6c5c5f5100281f8f4ff23f13edd17d645178c87c#pnpm", "source": "devbox-search", - "version": "9.15.3", + "version": "10.5.2", "systems": { "aarch64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/hhprmwazmgvxqff5zpra2bw0cb12f4sl-pnpm-9.15.3", + "path": "/nix/store/4am7jn4i2zdbavf5wsvrnrch2g281clm-pnpm-10.5.2", "default": true } ], - "store_path": "/nix/store/hhprmwazmgvxqff5zpra2bw0cb12f4sl-pnpm-9.15.3" + "store_path": "/nix/store/4am7jn4i2zdbavf5wsvrnrch2g281clm-pnpm-10.5.2" }, "aarch64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/id6m5r3zip98l8g9lyvgwv8bvvnn99hq-pnpm-9.15.3", + "path": "/nix/store/czsnfk0q4kwinyyfknbvqj1nk65dxxhz-pnpm-10.5.2", "default": true } ], - "store_path": "/nix/store/id6m5r3zip98l8g9lyvgwv8bvvnn99hq-pnpm-9.15.3" + "store_path": "/nix/store/czsnfk0q4kwinyyfknbvqj1nk65dxxhz-pnpm-10.5.2" }, "x86_64-darwin": { "outputs": [ { "name": "out", - "path": "/nix/store/4lsfbyj9fl5yf6ar3cfj7vngd5v7rvqg-pnpm-9.15.3", + "path": "/nix/store/3niwypwhxnry5awvq5j0vplqrx568l66-pnpm-10.5.2", "default": true } ], - "store_path": "/nix/store/4lsfbyj9fl5yf6ar3cfj7vngd5v7rvqg-pnpm-9.15.3" + "store_path": "/nix/store/3niwypwhxnry5awvq5j0vplqrx568l66-pnpm-10.5.2" }, "x86_64-linux": { "outputs": [ { "name": "out", - "path": "/nix/store/p7r1k66dzs1qpkas0jx5v20asih9y37q-pnpm-9.15.3", + "path": "/nix/store/1zbxqw7ahsnpqd2kkwfmh6j3wrh7wp24-pnpm-10.5.2", "default": true } ], - "store_path": "/nix/store/p7r1k66dzs1qpkas0jx5v20asih9y37q-pnpm-9.15.3" + "store_path": "/nix/store/1zbxqw7ahsnpqd2kkwfmh6j3wrh7wp24-pnpm-10.5.2" } } } diff --git a/package.json b/package.json index 04237083..23adb663 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@changesets/cli": "2.28.1", "@vitest/coverage-v8": "3.0.4", "esbuild": "0.24.0", - "prettier": "3.4.2", + "prettier": "3.5.3", "rimraf": "6.0.1" }, "pnpm": { diff --git a/packages/eslint-config/cmd.js b/packages/eslint-config/cmd.js index 26cd2802..2b3fafa0 100755 --- a/packages/eslint-config/cmd.js +++ b/packages/eslint-config/cmd.js @@ -16,6 +16,8 @@ spinner.start() program.addOption(new Option('-f, --format', 'format')) program.addOption(new Option('-g, --glob ', 'file/dir/glob (. by default)', '.')) +program.addOption(new Option('--eslint-only', 'only run eslint', false)) +program.addOption(new Option('--prettier-only', 'only run prettier', false)) program.addOption(new Option('--verbose', 'add more logs', false)) program.addOption( new Option( @@ -29,12 +31,14 @@ program.parse(process.argv) const options_cli = program.opts() const pathPrettierIgnore = findFileOrUp('.prettierignore') -const pathPrettierCjs = findFileOrUp('.prettierrc.mjs') +const pathPrettierMjs = findFileOrUp('.prettierrc.mjs') const format = options_cli.format ?? false const glob = options_cli.glob ?? '.' const verbose = options_cli.verbose ?? false const pre = options_cli.prefix ?? 'none' +const eslintOnly = options_cli.eslintOnly ?? false +const prettierOnly = options_cli.prettierOnly ?? false let preToUse = '' if (pre === 'npm') { @@ -98,7 +102,7 @@ async function prettierRun() { // ignore? ` --ignore-path ${pathPrettierIgnore}` + // config - ` --config ${pathPrettierCjs}` + + ` --config ${pathPrettierMjs}` + // format or not `${format ? ' --write' : ''}` + // exec @@ -111,21 +115,32 @@ async function prettierRun() { return result_prettier } -const eslintCode = await eslintRun() -if (eslintCode.status) { - spinner.prefixText = bgRedBright(` kitql-lint `) - spinner.fail(red(`eslint failed, check logs above.`)) - process.exit(eslintCode.status) +const took = [] +if (!prettierOnly) { + const esLintStart = Date.now() + const eslintCode = await eslintRun() + const esLintTook = Date.now() - esLintStart + took.push(`eslint: ${esLintTook}ms`) + if (eslintCode.status) { + spinner.prefixText = bgRedBright(` kitql-lint `) + spinner.fail(red(`eslint failed, check logs above.`)) + process.exit(eslintCode.status) + } } -const prettierCode = await prettierRun() -if (prettierCode.status) { - spinner.prefixText = bgRedBright(` kitql-lint `) - spinner.fail(red(`prettier failed, check logs above.`)) - process.exit(prettierCode.status) +if (!eslintOnly) { + const prettierStart = Date.now() + const prettierCode = await prettierRun() + const prettierTook = Date.now() - prettierStart + took.push(`prettier: ${prettierTook}ms`) + if (prettierCode.status) { + spinner.prefixText = bgRedBright(` kitql-lint `) + spinner.fail(red(`prettier failed, check logs above.`)) + process.exit(prettierCode.status) + } } spinner.prefixText = bgGreen(` kitql-lint `) -spinner.succeed(`All good, your files looks great!`) +spinner.succeed(`All good, your files looks great! ${gray(`(${took.join(', ')})`)}`) spinner.stop() process.exit(0) diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js index 49da4b14..45096e22 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.js @@ -1,5 +1,6 @@ import { includeIgnoreFile } from '@eslint/compat' import js from '@eslint/js' +import pnpmCatalogs from 'eslint-plugin-pnpm-catalogs' import svelte from 'eslint-plugin-svelte' import unusedImports from 'eslint-plugin-unused-imports' import globals from 'globals' @@ -66,6 +67,16 @@ export const config = [ 'no-empty': ['error', { allowEmptyCatch: true }], }, }, + { + name: '@kitql:pnpmCatalogs', + plugins: { + pnpmCatalogs, + }, + rules: { + 'pnpmCatalogs/enforce-catalog': 'error', + 'pnpmCatalogs/valid-catalog': 'error', + }, + }, { name: '@kitql:rules', rules: { @@ -86,8 +97,11 @@ export const config = [ 'no-undef': 'off', 'no-inner-declarations': 'off', + 'svelte/no-at-html-tags': 'off', 'svelte/no-inner-declarations': 'off', + + 'svelte/require-each-key': 'warn', }, }, ] diff --git a/packages/eslint-config/helper/findFileOrUp.js b/packages/eslint-config/helper/findFileOrUp.js index a09ed78f..7881438e 100644 --- a/packages/eslint-config/helper/findFileOrUp.js +++ b/packages/eslint-config/helper/findFileOrUp.js @@ -1,5 +1,5 @@ -import { statSync } from 'fs' -import { resolve } from 'path' +import { statSync } from 'node:fs' +import { resolve } from 'node:path' export const findFileOrUp = (fileName, options) => { // Find file recursively 4 levels max up diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 932e8605..ca3097d6 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -42,14 +42,15 @@ "@kitql/helpers": "workspace:*", "@theguild/prettier-config": "3.0.0", "@types/eslint": "9.6.1", - "@typescript-eslint/parser": "^8.5.0", - "commander": "13.0.0", + "@typescript-eslint/parser": "8.5.0", + "commander": "13.1.0", "eslint": "^9.10.0", - "eslint-plugin-svelte": "2.46.0", - "eslint-plugin-unused-imports": "^4.1.4", + "eslint-plugin-pnpm-catalogs": "0.0.2", + "eslint-plugin-svelte": "3.0.3", + "eslint-plugin-unused-imports": "4.1.4", "globals": "16.0.0", - "ora": "^8.1.0", - "prettier": "3.4.2", + "ora": "8.1.0", + "prettier": "3.5.3", "prettier-plugin-svelte": "3.3.2", "prettier-plugin-tailwindcss": "0.6.6", "typescript-eslint": "8.26.0" diff --git a/packages/handles/package.json b/packages/handles/package.json index bca29dbf..c00385aa 100644 --- a/packages/handles/package.json +++ b/packages/handles/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@kitql/helpers": "workspace:*", - "esm-env": "^1.0.0", + "esm-env": "^1.2.2", "vary": "^1.1.2" }, "sideEffects": false, diff --git a/packages/handles/src/app.html b/packages/handles/src/app.html index cc9ebe18..2d3a0ef8 100644 --- a/packages/handles/src/app.html +++ b/packages/handles/src/app.html @@ -2,7 +2,9 @@ + + %sveltekit.head% diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 2931372c..0d58e699 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -49,7 +49,7 @@ "vitest": "3.0.4" }, "dependencies": { - "esm-env": "^1.0.0" + "esm-env": "^1.2.2" }, "sideEffects": false, "publishConfig": { diff --git a/packages/helpers/src/app.html b/packages/helpers/src/app.html index b37687a1..280e1a0a 100644 --- a/packages/helpers/src/app.html +++ b/packages/helpers/src/app.html @@ -2,7 +2,9 @@ + + %sveltekit.head% diff --git a/packages/internals/src/app.html b/packages/internals/src/app.html index b37687a1..280e1a0a 100644 --- a/packages/internals/src/app.html +++ b/packages/internals/src/app.html @@ -2,7 +2,9 @@ + + %sveltekit.head% diff --git a/packages/vite-plugin-kit-routes/src/app.html b/packages/vite-plugin-kit-routes/src/app.html index b37687a1..280e1a0a 100644 --- a/packages/vite-plugin-kit-routes/src/app.html +++ b/packages/vite-plugin-kit-routes/src/app.html @@ -2,7 +2,9 @@ + + %sveltekit.head% diff --git a/packages/vite-plugin-kit-routes/src/routes/(rootGroup)/+page.svelte b/packages/vite-plugin-kit-routes/src/routes/(rootGroup)/+page.svelte index 865797a3..058bdc13 100644 --- a/packages/vite-plugin-kit-routes/src/routes/(rootGroup)/+page.svelte +++ b/packages/vite-plugin-kit-routes/src/routes/(rootGroup)/+page.svelte @@ -14,7 +14,7 @@

Home