From a6efdf3c9a69a18d1483dca8e4a980c16e796200 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 11:20:35 +0545 Subject: [PATCH 01/11] refactor(eslint-config): add perfectionist plugin and update import rules --- packages/eslint-config/index.js | 26 ++--- packages/eslint-config/package.json | 1 + packages/eslint-config/react.js | 28 ++---- packages/eslint-config/vue.js | 26 ++--- pnpm-lock.yaml | 150 ++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 58 deletions(-) diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index 4164499..d97d03d 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -1,6 +1,7 @@ import js from "@eslint/js"; import importPlugin from "eslint-plugin-import"; import nodePlugin from "eslint-plugin-n"; +import perfectionistPlugin from "eslint-plugin-perfectionist"; import prettierPluginRecommened from "eslint-plugin-prettier/recommended"; import promisePlugin from "eslint-plugin-promise"; import unicornPlugin from "eslint-plugin-unicorn"; @@ -26,6 +27,7 @@ export default [ plugins: { n: nodePlugin, import: importPlugin, + perfectionist: perfectionistPlugin, promise: promisePlugin, unicorn: unicornPlugin, }, @@ -55,25 +57,11 @@ export default [ // Import rules ...importPlugin.configs.recommended.rules, ...importPlugin.configs.typescript.rules, - "import/order": [ - "error", - { - alphabetize: { - order: "asc", - caseInsensitive: true, - }, - groups: [ - "builtin", - "external", - "internal", - ["parent", "sibling"], - "index", - "object", - "type", - ], - "newlines-between": "always", - }, - ], + "import/order": "off", + "sort-imports": "off", + + // Perfectionist rules + ...perfectionistPlugin.configs["recommended-natural"].rules, // Unicorn rules ...unicornPlugin.configs.recommended.rules, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index b89baae..69540f6 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -29,6 +29,7 @@ "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-n": "17.20.0", + "eslint-plugin-perfectionist": "5.9.0", "eslint-plugin-prettier": "5.5.5", "eslint-plugin-promise": "7.2.1", "eslint-plugin-react": "7.37.5", diff --git a/packages/eslint-config/react.js b/packages/eslint-config/react.js index f274630..902320d 100644 --- a/packages/eslint-config/react.js +++ b/packages/eslint-config/react.js @@ -1,8 +1,9 @@ import js from "@eslint/js"; import prettierConfig from "eslint-config-prettier"; import importPlugin from "eslint-plugin-import"; -import unicornPlugin from "eslint-plugin-unicorn"; +import perfectionistPlugin from "eslint-plugin-perfectionist"; import prettierPlugin from "eslint-plugin-prettier"; +import unicornPlugin from "eslint-plugin-unicorn"; import globals from "globals"; import tseslint from "typescript-eslint"; @@ -35,6 +36,7 @@ export default [ plugins: { "@typescript-eslint": tseslint.plugin, import: importPlugin, + perfectionist: perfectionistPlugin, prettier: prettierPlugin, unicorn: unicornPlugin, }, @@ -44,25 +46,11 @@ export default [ curly: ["error", "all"], // Imports rules - "import/order": [ - 1, - { - alphabetize: { - order: "asc", - caseInsensitive: true, - }, - groups: [ - "builtin", - "external", - "internal", - ["parent", "sibling"], - "index", - "object", - "type", - ], - "newlines-between": "always", - }, - ], + "import/order": "off", + "sort-imports": "off", + + // Perfectionist rules + ...perfectionistPlugin.configs["recommended-natural"].rules, "no-console": process.env.NODE_ENV === "production" ? "error" : "warn", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "warn", diff --git a/packages/eslint-config/vue.js b/packages/eslint-config/vue.js index 22a0706..14ec1d7 100755 --- a/packages/eslint-config/vue.js +++ b/packages/eslint-config/vue.js @@ -1,6 +1,7 @@ import js from "@eslint/js"; import prettierConfig from "eslint-config-prettier"; import importPlugin from "eslint-plugin-import"; +import perfectionistPlugin from "eslint-plugin-perfectionist"; import prettierPlugin from "eslint-plugin-prettier"; import unicornPlugin from "eslint-plugin-unicorn"; import vuePlugin from "eslint-plugin-vue"; @@ -41,6 +42,7 @@ export default [ }, plugins: { import: importPlugin, + perfectionist: perfectionistPlugin, prettier: prettierPlugin, unicorn: unicornPlugin, vue: vuePlugin, @@ -53,25 +55,11 @@ export default [ // Import rules ...importPlugin.configs.recommended.rules, ...importPlugin.configs.typescript.rules, - "import/order": [ - "error", - { - alphabetize: { - order: "asc", - caseInsensitive: true, - }, - groups: [ - "builtin", - "external", - "internal", - ["parent", "sibling"], - "index", - "object", - "type", - ], - "newlines-between": "always", - }, - ], + "import/order": "off", + "sort-imports": "off", + + // Perfectionist rules + ...perfectionistPlugin.configs["recommended-natural"].rules, // Prettier rules ...prettierPlugin.configs.recommended.rules, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a71a84a..5742e78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,6 +53,9 @@ importers: eslint-plugin-n: specifier: 17.20.0 version: 17.20.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) + eslint-plugin-perfectionist: + specifier: 5.9.0 + version: 5.9.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) eslint-plugin-prettier: specifier: 5.5.5 version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@1.21.6)))(eslint@9.39.4(jiti@1.21.6))(prettier@3.8.3) @@ -457,16 +460,32 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.59.1': + resolution: {integrity: sha512-+MuHQlHiEr00Of/IQbE/MmEoi44znZHbR/Pz7Opq4HryUOlRi+/44dro9Ycy8Fyo+/024IWtw8m4JUMCGTYxDg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/scope-manager@8.54.0': resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.59.1': + resolution: {integrity: sha512-LwuHQI4pDOYVKvmH2dkaJo6YZCSgouVgnS/z7yBPKBMvgtBvyLqiLy9Z6b7+m/TRcX1NFYUqZetI5Y+aT4GEfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.54.0': resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.59.1': + resolution: {integrity: sha512-/0nEyPbX7gRsk0Uwfe4ALwwgxuA66d/l2mhRDNlAvaj4U3juhUtJNq0DsY8M2AYwwb9rEq2hrC3IcIcEt++iJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/type-utils@8.54.0': resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -478,12 +497,22 @@ packages: resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.59.1': + resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.54.0': resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.59.1': + resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/utils@8.54.0': resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -491,10 +520,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.59.1': + resolution: {integrity: sha512-3pIeoXhCeYH9FSCBI8P3iNwJlGuzPlYKkTlen2O9T1DSeeg8UG8jstq6BLk+Mda0qup7mgk4z4XL4OzRaxZ8LA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + '@typescript-eslint/visitor-keys@8.54.0': resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.59.1': + resolution: {integrity: sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -710,6 +750,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true @@ -726,6 +770,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1179,6 +1227,12 @@ packages: peerDependencies: eslint: '>=8.23.0' + eslint-plugin-perfectionist@5.9.0: + resolution: {integrity: sha512-8TWzg02zmnBdZwCkWLi8jhzqXI+fE7Z/RwV8SL6xD45tJ8Bp3wGuYL2XtQgfe/Wd0eBqOUX+s6ey73IyszvKTA==} + engines: {node: ^20.0.0 || >=22.0.0} + peerDependencies: + eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 + eslint-plugin-prettier@5.5.5: resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -1243,6 +1297,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1966,6 +2024,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2010,6 +2072,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -2682,6 +2748,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-declaration-location@1.0.7: resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} peerDependencies: @@ -3447,15 +3519,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.59.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3) + '@typescript-eslint/types': 8.59.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager@8.59.1': + dependencies: + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.59.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.54.0 @@ -3470,6 +3560,8 @@ snapshots: '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.59.1': {} + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) @@ -3485,6 +3577,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.59.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3) + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/visitor-keys': 8.59.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.6)) @@ -3496,11 +3603,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.59.1(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.59.1 + '@typescript-eslint/types': 8.59.1 + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) + eslint: 9.39.4(jiti@1.21.6) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.59.1': + dependencies: + '@typescript-eslint/types': 8.59.1 + eslint-visitor-keys: 5.0.1 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -3702,6 +3825,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + baseline-browser-mapping@2.9.19: {} before-after-hook@2.2.3: {} @@ -3717,6 +3842,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.5: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -4309,6 +4438,15 @@ snapshots: - supports-color - typescript + eslint-plugin-perfectionist@5.9.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3): + dependencies: + '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) + eslint: 9.39.4(jiti@1.21.6) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@1.21.6)))(eslint@9.39.4(jiti@1.21.6))(prettier@3.8.3): dependencies: eslint: 9.39.4(jiti@1.21.6) @@ -4400,6 +4538,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + eslint@9.39.4(jiti@1.21.6): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.6)) @@ -5132,6 +5272,10 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -5168,6 +5312,8 @@ snapshots: natural-compare@1.4.0: {} + natural-orderby@5.0.0: {} + neo-async@2.6.2: {} nice-try@1.0.5: {} @@ -5891,6 +6037,10 @@ snapshots: dependencies: typescript: 5.9.3 + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + ts-declaration-location@1.0.7(typescript@5.9.3): dependencies: picomatch: 4.0.3 From f56ccf4eb0f26aa4a946ccdc6b4fd636718e38de Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 12:53:08 +0545 Subject: [PATCH 02/11] refactor(eslint-config): add stylelint configuration for Vue and standard style rules --- packages/eslint-config/README.md | 42 ++ packages/eslint-config/package.json | 8 + packages/eslint-config/stylelint-vue.js | 9 + packages/eslint-config/stylelint.js | 12 + pnpm-lock.yaml | 601 ++++++++++++++++++++++++ 5 files changed, 672 insertions(+) create mode 100644 packages/eslint-config/stylelint-vue.js create mode 100644 packages/eslint-config/stylelint.js diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 41fe2d1..d2d479e 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -6,6 +6,8 @@ Custom ESLint configuration for streamlined linting across projects. - `@prefabs.tech/eslint-config/react` for react libraries - `@prefabs.tech/eslint-config/react-app` for react apps - `@prefabs.tech/eslint-config/vue` for vue apps and libraries +- `@prefabs.tech/eslint-config/stylelint` for CSS/SCSS linting (React, Fastify, general projects) +- `@prefabs.tech/eslint-config/stylelint-vue` for CSS/SCSS linting in Vue projects - `@prefabs.tech/eslint-config` for general typescript projects ## Installation and usage @@ -116,6 +118,40 @@ Custom ESLint configuration for streamlined linting across projects. export default config; ``` +* ### For CSS/SCSS linting: + + **For React, Fastify, and general projects:** + + Install dependencies: + + ```sh + npm i -D @prefabs.tech/eslint-config stylelint + ``` + + Create a `stylelint.config.js` file: + + ```js + import stylelintConfig from "@prefabs.tech/eslint-config/stylelint.js"; + + export default stylelintConfig; + ``` + + **For Vue projects:** + + Install dependencies: + + ```sh + npm i -D @prefabs.tech/eslint-config stylelint + ``` + + Create a `stylelint.config.js` file: + + ```js + import stylelintVueConfig from "@prefabs.tech/eslint-config/stylelint-vue.js"; + + export default stylelintVueConfig; + ``` + ## Adding linting scripts In your `package.json`, add the following commands to the `scripts` section: @@ -125,6 +161,12 @@ In your `package.json`, add the following commands to the `scripts` section: "lint:fix": "eslint . --fix" ``` +* For CSS/SCSS linting: + ```json + "stylelint": "stylelint \"src/**/*.{css,vue}\"", + "stylelint:fix": "stylelint \"src/**/*.{css,vue}\" --fix", + ``` + ## Running linting Run the following command to lint your code: diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 69540f6..790442b 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -16,6 +16,8 @@ "index.js", "react.js", "react-app.js", + "stylelint.js", + "stylelint-vue.js", "vue.js" ], "scripts": { @@ -37,6 +39,11 @@ "eslint-plugin-unicorn": "62.0.0", "eslint-plugin-vue": "10.7.0", "globals": "17.3.0", + "stylelint": "17.9.1", + "stylelint-config-prettier": "9.0.5", + "stylelint-config-recommended-vue": "1.6.1", + "stylelint-config-standard": "40.0.0", + "stylelint-order": "8.1.1", "typescript-eslint": "8.54.0", "vue-eslint-parser": "10.2.0" }, @@ -48,6 +55,7 @@ "peerDependencies": { "eslint": ">=9.0.0", "prettier": ">=3.3.3", + "stylelint": ">=17.0.0", "typescript": ">=4.9.5" }, "publishConfig": { diff --git a/packages/eslint-config/stylelint-vue.js b/packages/eslint-config/stylelint-vue.js new file mode 100644 index 0000000..de3282d --- /dev/null +++ b/packages/eslint-config/stylelint-vue.js @@ -0,0 +1,9 @@ +import baseConfig from "./stylelint.js"; + +export default { + ...baseConfig, + extends: [ + "stylelint-config-recommended-vue", + "stylelint-config-prettier", + ], +}; diff --git a/packages/eslint-config/stylelint.js b/packages/eslint-config/stylelint.js new file mode 100644 index 0000000..b55e680 --- /dev/null +++ b/packages/eslint-config/stylelint.js @@ -0,0 +1,12 @@ +export default { + extends: [ + "stylelint-config-standard", + "stylelint-config-prettier", + ], + plugins: [ + "stylelint-order", + ], + rules: { + "order/properties-alphabetical-order": true, + }, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5742e78..647ae50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,21 @@ importers: globals: specifier: 17.3.0 version: 17.3.0 + stylelint: + specifier: 17.9.1 + version: 17.9.1(typescript@5.9.3) + stylelint-config-prettier: + specifier: 9.0.5 + version: 9.0.5(stylelint@17.9.1(typescript@5.9.3)) + stylelint-config-recommended-vue: + specifier: 1.6.1 + version: 1.6.1(stylelint@17.9.1(typescript@5.9.3)) + stylelint-config-standard: + specifier: 40.0.0 + version: 40.0.0(stylelint@17.9.1(typescript@5.9.3)) + stylelint-order: + specifier: 8.1.1 + version: 8.1.1(stylelint@17.9.1(typescript@5.9.3)) typescript-eslint: specifier: 8.54.0 version: 8.54.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) @@ -181,6 +196,12 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@cacheable/memory@2.0.8': + resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} + + '@cacheable/utils@2.4.1': + resolution: {integrity: sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==} + '@commitlint/cli@19.5.0': resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} @@ -250,6 +271,50 @@ packages: resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} engines: {node: '>=v18'} + '@csstools/css-calc@3.2.0': + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@csstools/media-query-list-parser@5.0.0': + resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/selector-resolve-nested@4.0.0': + resolution: {integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -333,6 +398,15 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -401,6 +475,10 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@slack/types@1.10.0': resolution: {integrity: sha512-tA7GG7Tj479vojfV3AoxbckalA48aK6giGjNtgH6ihpLwTyHE3fIgRrvt8TWfLwW8X8dyu7vgmAsGLRG7hWWOg==} engines: {node: '>= 8.9.0', npm: '>= 5.5.1'} @@ -661,6 +739,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -725,6 +807,10 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -787,6 +873,9 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} + cacheable@2.3.4: + resolution: {integrity: sha512-djgxybDbw9fL/ZWMI3+CE8ZilNxcwFkVtDc1gJ+IlOSSWkSMPQabhV/XCHTQ6pwwN6aivXPZ43omTooZiX06Ew==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -884,6 +973,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -958,6 +1050,15 @@ packages: typescript: optional: true + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -966,6 +1067,14 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1349,6 +1458,10 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -1358,6 +1471,10 @@ packages: fast-uri@3.0.2: resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -1374,6 +1491,9 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1409,9 +1529,15 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat-cache@6.1.22: + resolution: {integrity: sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug==} + flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -1450,6 +1576,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1512,6 +1642,14 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1536,6 +1674,13 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} + globby@16.2.0: + resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} + engines: {node: '>=20'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1564,6 +1709,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -1579,6 +1728,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hashery@1.5.1: + resolution: {integrity: sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==} + engines: {node: '>=20'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -1592,6 +1745,12 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + + hookified@2.2.0: + resolution: {integrity: sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -1599,6 +1758,10 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -1623,6 +1786,9 @@ packages: import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1752,6 +1918,10 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -1895,6 +2065,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1957,6 +2130,9 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -2000,10 +2176,20 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} + meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} + engines: {node: '>=20'} + meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -2064,6 +2250,11 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2104,6 +2295,10 @@ packages: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} @@ -2305,10 +2500,28 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} + postcss-sorting@10.0.0: + resolution: {integrity: sha512-TXbU+h6vVRW+86c/+ewhWq9k7pr7ijASTnepVhCQiC87zAOTkvB1v2dHyWP+ggstSTX/PNvjzS+IOqzejndz9w==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.12: + resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2348,6 +2561,10 @@ packages: (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + qified@0.9.1: + resolution: {integrity: sha512-n7mar4T0xQ+39dE2vGTAlbxUEpndwPANH0kDef1/MYsB8Bba9wshkybIRx74qgcvKQPEWErf9AqAdYjhzY2Ilg==} + engines: {node: '>=20'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2569,13 +2786,29 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -2614,6 +2847,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -2647,6 +2884,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -2667,6 +2908,54 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + stylelint-config-html@1.1.0: + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-prettier@9.0.5: + resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} + engines: {node: '>= 12'} + hasBin: true + peerDependencies: + stylelint: '>= 11.x < 15' + + stylelint-config-recommended-vue@1.6.1: + resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-standard@40.0.0: + resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-order@8.1.1: + resolution: {integrity: sha512-LqsEB6VggJuu5v10RtkrQsBObcdwBE7GuAOlwfc/LR3VL/w8UqKX2BOLIjhyGt0Gne/njo7gRNGiJAKhfmPMNw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^16.18.0 || ^17.0.0 + + stylelint@17.9.1: + resolution: {integrity: sha512-THTmnAPJTrg/JhkTWZlSyrO+HUYMx6ELthIHeMyD2WOKqXIJUFQv2Yxn91bvUrZdbBJaW2dUuQdPST2wcQ6C3g==} + engines: {node: '>=20.19.0'} + hasBin: true + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -2675,14 +2964,25 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} + engines: {node: '>=20'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} @@ -2871,6 +3171,10 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + universal-user-agent@5.0.0: resolution: {integrity: sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==} @@ -2961,6 +3265,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} + xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -3132,6 +3440,18 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@cacheable/memory@2.0.8': + dependencies: + '@cacheable/utils': 2.4.1 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.4.1': + dependencies: + hashery: 1.5.1 + keyv: 5.6.0 + '@commitlint/cli@19.5.0(@types/node@22.6.2)(typescript@5.5.4)': dependencies: '@commitlint/format': 19.5.0 @@ -3242,6 +3562,34 @@ snapshots: '@types/conventional-commits-parser': 5.0.0 chalk: 5.3.0 + '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -3336,6 +3684,14 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.5.1 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.8.1 @@ -3442,6 +3798,8 @@ snapshots: '@rtsao/scc@1.1.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@slack/types@1.10.0': {} '@slack/webhook@5.0.4': @@ -3716,6 +4074,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.2.2: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -3805,6 +4165,8 @@ snapshots: ast-types-flow@0.0.8: {} + astral-regex@2.0.0: {} + async-function@1.0.0: {} async@3.2.6: {} @@ -3860,6 +4222,14 @@ snapshots: builtin-modules@5.0.0: {} + cacheable@2.3.4: + dependencies: + '@cacheable/memory': 2.0.8 + '@cacheable/utils': 2.4.1 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.9.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -3978,6 +4348,8 @@ snapshots: color-name@1.1.4: {} + colord@2.9.3: {} + compare-func@2.0.0: dependencies: array-ify: 1.0.0 @@ -4080,6 +4452,15 @@ snapshots: optionalDependencies: typescript: 5.5.4 + cosmiconfig@9.0.1(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + cross-spawn@6.0.5: dependencies: nice-try: 1.0.5 @@ -4094,6 +4475,13 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-functions-list@3.3.3: {} + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + cssesc@3.0.0: {} damerau-levenshtein@1.0.8: {} @@ -4627,12 +5015,22 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} fast-uri@3.0.2: {} + fastest-levenshtein@1.0.16: {} + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -4645,6 +5043,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@11.1.2: + dependencies: + flat-cache: 6.1.22 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -4684,8 +5086,16 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 + flat-cache@6.1.22: + dependencies: + cacheable: 2.3.4 + flatted: 3.4.2 + hookified: 1.15.1 + flatted@3.3.3: {} + flatted@3.4.2: {} + follow-redirects@1.15.9: {} for-each@0.3.5: @@ -4713,6 +5123,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4801,6 +5213,16 @@ snapshots: dependencies: ini: 4.1.1 + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + globals@14.0.0: {} globals@15.15.0: {} @@ -4825,6 +5247,17 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@16.2.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + globjoin@0.1.4: {} + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -4846,6 +5279,8 @@ snapshots: has-flag@4.0.0: {} + has-flag@5.0.1: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -4860,6 +5295,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.5.1: + dependencies: + hookified: 1.15.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -4875,12 +5314,18 @@ snapshots: dependencies: hermes-estree: 0.25.1 + hookified@1.15.1: {} + + hookified@2.2.0: {} + hosted-git-info@2.8.9: {} hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 + html-tags@5.1.0: {} + husky@9.1.7: {} iconv-lite@0.4.24: @@ -4898,6 +5343,8 @@ snapshots: import-meta-resolve@4.1.0: {} + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -5028,6 +5475,8 @@ snapshots: is-obj@2.0.0: {} + is-path-inside@4.0.0: {} + is-plain-obj@1.1.0: {} is-plain-object@5.0.0: {} @@ -5156,6 +5605,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + kind-of@6.0.3: {} language-subtag-registry@0.3.23: {} @@ -5211,6 +5664,8 @@ snapshots: lodash.startcase@4.4.0: {} + lodash.truncate@4.4.2: {} + lodash.uniq@4.5.0: {} lodash.upperfirst@4.3.1: {} @@ -5245,8 +5700,14 @@ snapshots: math-intrinsics@1.1.0: {} + mathml-tag-names@4.0.0: {} + + mdn-data@2.27.1: {} + meow@12.1.1: {} + meow@14.1.0: {} + meow@8.1.2: dependencies: '@types/minimist': 1.2.5 @@ -5308,6 +5769,8 @@ snapshots: mute-stream@0.0.8: {} + nanoid@3.3.11: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -5343,6 +5806,8 @@ snapshots: semver: 7.6.3 validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + npm-run-path@2.0.2: dependencies: path-key: 2.0.1 @@ -5535,11 +6000,27 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-safe-parser@7.0.1(postcss@8.5.12): + dependencies: + postcss: 8.5.12 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-sorting@10.0.0(postcss@8.5.12): + dependencies: + postcss: 8.5.12 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.12: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -5567,6 +6048,10 @@ snapshots: q@1.5.1: {} + qified@0.9.1: + dependencies: + hookified: 2.2.0 + queue-microtask@1.2.3: {} quick-lru@4.0.1: {} @@ -5846,13 +6331,25 @@ snapshots: signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + slash@3.0.0: {} + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.7.0 + source-map-js@1.2.1: {} + source-map@0.6.1: {} spdx-correct@3.2.0: @@ -5892,6 +6389,11 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -5954,6 +6456,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-bom@3.0.0: {} strip-eof@1.0.0: {} @@ -5966,6 +6472,80 @@ snapshots: strip-json-comments@3.1.1: {} + stylelint-config-html@1.1.0(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + stylelint: 17.9.1(typescript@5.9.3) + + stylelint-config-prettier@9.0.5(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + stylelint: 17.9.1(typescript@5.9.3) + + stylelint-config-recommended-vue@1.6.1(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + semver: 7.7.3 + stylelint: 17.9.1(typescript@5.9.3) + stylelint-config-html: 1.1.0(stylelint@17.9.1(typescript@5.9.3)) + stylelint-config-recommended: 18.0.0(stylelint@17.9.1(typescript@5.9.3)) + + stylelint-config-recommended@18.0.0(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + stylelint: 17.9.1(typescript@5.9.3) + + stylelint-config-standard@40.0.0(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + stylelint: 17.9.1(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.9.1(typescript@5.9.3)) + + stylelint-order@8.1.1(stylelint@17.9.1(typescript@5.9.3)): + dependencies: + postcss: 8.5.12 + postcss-sorting: 10.0.0(postcss@8.5.12) + stylelint: 17.9.1(typescript@5.9.3) + + stylelint@17.9.1(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) + colord: 2.9.3 + cosmiconfig: 9.0.1(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.2.1 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 11.1.2 + global-modules: 2.0.0 + globby: 16.2.0 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.5 + import-meta-resolve: 4.2.0 + is-plain-object: 5.0.0 + mathml-tag-names: 4.0.0 + meow: 14.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.12 + postcss-safe-parser: 7.0.1(postcss@8.5.12) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + string-width: 8.2.1 + supports-hyperlinks: 4.4.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + supports-color@10.2.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -5974,12 +6554,27 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + supports-preserve-symlinks-flag@1.0.0: {} + svg-tags@1.0.0: {} + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + tapable@2.3.0: {} temp-dir@1.0.0: {} @@ -6158,6 +6753,8 @@ snapshots: unicorn-magic@0.1.0: {} + unicorn-magic@0.4.0: {} + universal-user-agent@5.0.0: dependencies: os-name: 3.1.0 @@ -6299,6 +6896,10 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@7.0.1: + dependencies: + signal-exit: 4.1.0 + xml-name-validator@4.0.0: {} xtend@4.0.2: {} From 5f97d5b9d22035af4fd3e8a7ee48b61841f98948 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 16:06:56 +0545 Subject: [PATCH 03/11] chore(eslint-config): move stylelint-config-recommended-vue to devDependencies and peerDependencies --- packages/eslint-config/package.json | 8 +++++++- pnpm-lock.yaml | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 790442b..2030d47 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -41,7 +41,6 @@ "globals": "17.3.0", "stylelint": "17.9.1", "stylelint-config-prettier": "9.0.5", - "stylelint-config-recommended-vue": "1.6.1", "stylelint-config-standard": "40.0.0", "stylelint-order": "8.1.1", "typescript-eslint": "8.54.0", @@ -50,14 +49,21 @@ "devDependencies": { "eslint": "9.39.4", "prettier": "3.8.3", + "stylelint-config-recommended-vue": "1.6.1", "typescript": "5.9.3" }, "peerDependencies": { "eslint": ">=9.0.0", "prettier": ">=3.3.3", "stylelint": ">=17.0.0", + "stylelint-config-recommended-vue": ">=1.6.0", "typescript": ">=4.9.5" }, + "peerDependenciesMeta": { + "stylelint-config-recommended-vue": { + "optional": true + } + }, "publishConfig": { "access": "public" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 647ae50..e77014d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,9 +83,6 @@ importers: stylelint-config-prettier: specifier: 9.0.5 version: 9.0.5(stylelint@17.9.1(typescript@5.9.3)) - stylelint-config-recommended-vue: - specifier: 1.6.1 - version: 1.6.1(stylelint@17.9.1(typescript@5.9.3)) stylelint-config-standard: specifier: 40.0.0 version: 40.0.0(stylelint@17.9.1(typescript@5.9.3)) @@ -105,6 +102,9 @@ importers: prettier: specifier: 3.8.3 version: 3.8.3 + stylelint-config-recommended-vue: + specifier: 1.6.1 + version: 1.6.1(stylelint@17.9.1(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 From 01b284ee6fef812ce6b050b1a7d5555c03da71f7 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 16:29:13 +0545 Subject: [PATCH 04/11] chore(eslint-config): move stylelint-order to devDependencies and peerDependencies --- packages/eslint-config/package.json | 6 +++++- pnpm-lock.yaml | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 2030d47..3c19bf8 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -42,7 +42,6 @@ "stylelint": "17.9.1", "stylelint-config-prettier": "9.0.5", "stylelint-config-standard": "40.0.0", - "stylelint-order": "8.1.1", "typescript-eslint": "8.54.0", "vue-eslint-parser": "10.2.0" }, @@ -50,6 +49,7 @@ "eslint": "9.39.4", "prettier": "3.8.3", "stylelint-config-recommended-vue": "1.6.1", + "stylelint-order": "8.1.1", "typescript": "5.9.3" }, "peerDependencies": { @@ -57,11 +57,15 @@ "prettier": ">=3.3.3", "stylelint": ">=17.0.0", "stylelint-config-recommended-vue": ">=1.6.0", + "stylelint-order": ">=8.0.0", "typescript": ">=4.9.5" }, "peerDependenciesMeta": { "stylelint-config-recommended-vue": { "optional": true + }, + "stylelint-order": { + "optional": true } }, "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e77014d..7d8b5de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,9 +86,6 @@ importers: stylelint-config-standard: specifier: 40.0.0 version: 40.0.0(stylelint@17.9.1(typescript@5.9.3)) - stylelint-order: - specifier: 8.1.1 - version: 8.1.1(stylelint@17.9.1(typescript@5.9.3)) typescript-eslint: specifier: 8.54.0 version: 8.54.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) @@ -105,6 +102,9 @@ importers: stylelint-config-recommended-vue: specifier: 1.6.1 version: 1.6.1(stylelint@17.9.1(typescript@5.9.3)) + stylelint-order: + specifier: 8.1.1 + version: 8.1.1(stylelint@17.9.1(typescript@5.9.3)) typescript: specifier: 5.9.3 version: 5.9.3 From a09d813098f0ed301eb3a98db6bdb6306d457a2c Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 16:46:33 +0545 Subject: [PATCH 05/11] chore(stylelint): remove stylelint-config-prettier for stylelint compatibility --- packages/eslint-config/stylelint-vue.js | 1 - packages/eslint-config/stylelint.js | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/eslint-config/stylelint-vue.js b/packages/eslint-config/stylelint-vue.js index de3282d..cbf864c 100644 --- a/packages/eslint-config/stylelint-vue.js +++ b/packages/eslint-config/stylelint-vue.js @@ -4,6 +4,5 @@ export default { ...baseConfig, extends: [ "stylelint-config-recommended-vue", - "stylelint-config-prettier", ], }; diff --git a/packages/eslint-config/stylelint.js b/packages/eslint-config/stylelint.js index b55e680..854e13a 100644 --- a/packages/eslint-config/stylelint.js +++ b/packages/eslint-config/stylelint.js @@ -1,7 +1,6 @@ export default { extends: [ "stylelint-config-standard", - "stylelint-config-prettier", ], plugins: [ "stylelint-order", From 5f4c243965eb87f86d8a5db10b4f35ed74f94dd1 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 17:53:29 +0545 Subject: [PATCH 06/11] chore(eslint-config): update stylelint-config-standard as devDependencies and peerDependencies --- packages/eslint-config/README.md | 42 ++++++----- packages/eslint-config/package.json | 9 ++- packages/tsconfig/README.md | 106 ++++++++++++++-------------- pnpm-lock.yaml | 26 ++----- 4 files changed, 88 insertions(+), 95 deletions(-) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index d2d479e..93c4a9e 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -1,7 +1,9 @@ # @prefabs.tech/eslint-config + Custom ESLint configuration for streamlined linting across projects. ## Supported configurations: + - `@prefabs.tech/eslint-config/fastify` fastify apis and libraries - `@prefabs.tech/eslint-config/react` for react libraries - `@prefabs.tech/eslint-config/react-app` for react apps @@ -14,7 +16,7 @@ Custom ESLint configuration for streamlined linting across projects. **Note:** For CommonJS projects, use `eslint.config.mjs` instead of `eslint.config.js`. -* ### For fastify apis and libraries: +- ### For fastify apis and libraries: In the root directory of your app or package: @@ -32,7 +34,7 @@ Custom ESLint configuration for streamlined linting across projects. export default fastifyConfig; ``` -* ### For react libraries: +- ### For react libraries: In the root directory of your the react package: @@ -50,7 +52,7 @@ Custom ESLint configuration for streamlined linting across projects. export default reactConfig; ``` -* ### For react apps: +- ### For react apps: In the root directory of the react app: @@ -62,13 +64,13 @@ Custom ESLint configuration for streamlined linting across projects. Create a `eslint.config.js` file: - ```js - import reactConfig from "@prefabs.tech/eslint-config/react-app.js"; + ```js + import reactConfig from "@prefabs.tech/eslint-config/react-app.js"; - export default reactConfig; - ``` + export default reactConfig; + ``` -* ### For vue apps and libraries: +- ### For vue apps and libraries: In the root directory of your app or package: @@ -96,12 +98,13 @@ Custom ESLint configuration for streamlined linting across projects. { rules: { "vue/no-reserved-component-names": "off", - } - } + }, + }, ]; ``` -* ### For general typescript projects: +- ### For general typescript projects: + In the root directory of your app or package: Install dependencies: @@ -118,14 +121,14 @@ Custom ESLint configuration for streamlined linting across projects. export default config; ``` -* ### For CSS/SCSS linting: +- ### For CSS/SCSS linting: **For React, Fastify, and general projects:** Install dependencies: ```sh - npm i -D @prefabs.tech/eslint-config stylelint + npm i -D @prefabs.tech/eslint-config stylelint stylelint-config-standard stylelint-order ``` Create a `stylelint.config.js` file: @@ -141,33 +144,36 @@ Custom ESLint configuration for streamlined linting across projects. Install dependencies: ```sh - npm i -D @prefabs.tech/eslint-config stylelint + npm i -D @prefabs.tech/eslint-config stylelint stylelint-config-recommended-vue stylelint-order ``` Create a `stylelint.config.js` file: ```js - import stylelintVueConfig from "@prefabs.tech/eslint-config/stylelint-vue.js"; + import stylelintConfig from "@prefabs.tech/eslint-config/stylelint-vue.js"; - export default stylelintVueConfig; + export default stylelintConfig; ``` ## Adding linting scripts + In your `package.json`, add the following commands to the `scripts` section: -* For typescript or react projects: +- For typescript or react projects: + ```json "lint": "eslint .", "lint:fix": "eslint . --fix" ``` -* For CSS/SCSS linting: +- For CSS/SCSS linting: ```json "stylelint": "stylelint \"src/**/*.{css,vue}\"", "stylelint:fix": "stylelint \"src/**/*.{css,vue}\" --fix", ``` ## Running linting + Run the following command to lint your code: ```bash diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 3c19bf8..cfde813 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -39,16 +39,15 @@ "eslint-plugin-unicorn": "62.0.0", "eslint-plugin-vue": "10.7.0", "globals": "17.3.0", - "stylelint": "17.9.1", - "stylelint-config-prettier": "9.0.5", - "stylelint-config-standard": "40.0.0", "typescript-eslint": "8.54.0", "vue-eslint-parser": "10.2.0" }, "devDependencies": { "eslint": "9.39.4", "prettier": "3.8.3", + "stylelint": "17.9.1", "stylelint-config-recommended-vue": "1.6.1", + "stylelint-config-standard": "40.0.0", "stylelint-order": "8.1.1", "typescript": "5.9.3" }, @@ -57,6 +56,7 @@ "prettier": ">=3.3.3", "stylelint": ">=17.0.0", "stylelint-config-recommended-vue": ">=1.6.0", + "stylelint-config-standard": ">=40.0.0", "stylelint-order": ">=8.0.0", "typescript": ">=4.9.5" }, @@ -64,6 +64,9 @@ "stylelint-config-recommended-vue": { "optional": true }, + "stylelint-config-standard": { + "optional": true + }, "stylelint-order": { "optional": true } diff --git a/packages/tsconfig/README.md b/packages/tsconfig/README.md index 431e5a0..df872c1 100644 --- a/packages/tsconfig/README.md +++ b/packages/tsconfig/README.md @@ -1,7 +1,9 @@ # @prefabs.tech/tsconfig + A shared TypeScript configuration for consistent and reliable type-checking across projects. ## Install + Install the required dependencies: ```sh @@ -9,41 +11,40 @@ npm i -D @prefabs.tech/tsconfig ``` ## Usage + In the root directory of your project, create or update a `tsconfig.json` file to extend the base configuration that fits your project type: -* For fastify libraries: +- For fastify libraries: + ```json { "extends": "@prefabs.tech/tsconfig/fastify.json", - "exclude": [ - "src/**/__test__/**/*", - ], + "exclude": ["src/**/__test__/**/*"], "compilerOptions": { "baseUrl": "./", - "outDir": "./dist", + "outDir": "./dist" }, - "include": [ - "src/**/*.ts" - ], + "include": ["src/**/*.ts"] } ``` -* For fastify apis: +- For fastify apis: ```json { - "extends": "@prefabs.tech/tsconfig/fastify-api.json", + "extends": "@prefabs.tech/tsconfig/fastify-api.json" } ``` - -* For react apps: +- For react apps: + ```json { "extends": "@prefabs.tech/tsconfig/react-app.json", - "include": ["src"], + "include": ["src"] } ``` -* For react libraries: +- For react libraries: + ```json { "extends": "@prefabs.tech/tsconfig/react.json", @@ -52,47 +53,43 @@ In the root directory of your project, create or update a `tsconfig.json` file t "outDir": "./dist", "paths": { "@/*": ["./src/*"] - }, + } }, - "include": ["vite.config.*", "src/**/*", "src/**/*.tsx"], + "include": ["vite.config.*", "src/**/*", "src/**/*.tsx"] } ``` -* For vue apps: +- For vue apps: ```json { - "extends": "@prefabs.tech/tsconfig/vue-app.json", - + "extends": "@prefabs.tech/tsconfig/vue-app.json" } ``` - -* For vue libraries: +- For vue libraries: + ```json { "extends": "@prefabs.tech/tsconfig/vue.json", - "exclude": [ - "src/**/__test__/**/*", - ], + "exclude": ["src/**/__test__/**/*"], "compilerOptions": { "baseUrl": "./", "outDir": "./dist/src" }, - "include": [ - "src/**/*", - "src/**/*/*.vue" - ], + "include": ["src/**/*", "src/**/*/*.vue"] } ``` - * For general typescript projects: + - For general typescript projects: + ```json { - "extends": "@prefabs.tech/tsconfig", + "extends": "@prefabs.tech/tsconfig" // add custom options here if needed } ``` ## Adding typescript checking scripts + In your `package.json`, include a script for running typescript checks without emitting compiled files: ```json @@ -104,6 +101,7 @@ In your `package.json`, include a script for running typescript checks without e ``` ## Running typescript checks + Use the following command to type-check your code: ```bash @@ -116,27 +114,27 @@ The base configuration (`tsconfig.json`) includes the following compiler options For detailed information about each option, see the [TypeScript TSConfig Reference](https://www.typescriptlang.org/tsconfig/). -| Option | Value | Description | -|--------|-------|-------------| -| `allowJs` | `true` | Allows JavaScript files to be compiled alongside TypeScript files | -| `composite` | `true` | Enables project references and incremental compilation for better build performance | -| `declaration` | `true` | Generates `.d.ts` declaration files for TypeScript definitions | -| `declarationMap` | `true` | Creates source maps for declaration files, enabling "Go to Definition" to jump to source | -| `esModuleInterop` | `true` | Enables interoperability between CommonJS and ES modules | -| `forceConsistentCasingInFileNames` | `true` | Ensures file name casing is consistent across imports | -| `inlineSourceMap` | `true` | Embeds source maps directly in the compiled JavaScript files | -| `inlineSources` | `true` | Includes the original TypeScript source code in the source maps | -| `isolatedModules` | `true` | Ensures each file can be safely transpiled independently (required for tools like Babel) | -| `jsx` | `preserve` | Keeps JSX syntax as-is for processing by other tools (e.g., Babel, esbuild) | -| `lib` | `["ES2021"]` | Includes type definitions for ES2021 features | -| `module` | `ES2022` | Specifies ES2022 module code generation (supports top-level await) | -| `moduleResolution` | `Node` | Uses Node.js-style module resolution algorithm | -| `noUnusedLocals` | `false` | Allows unused local variables (disabled for flexibility during development) | -| `noUnusedParameters` | `false` | Allows unused function parameters (disabled for flexibility during development) | -| `preserveWatchOutput` | `true` | Keeps previous console output when running in watch mode | -| `resolveJsonModule` | `true` | Allows importing JSON files as modules | -| `skipLibCheck` | `true` | Skips type checking of declaration files for faster compilation | -| `sourceMap` | `false` | Disables separate source map files (using inline source maps instead) | -| `strict` | `true` | Enables all strict type-checking options for maximum type safety | -| `target` | `ES2021` | Compiles TypeScript to ES2021 JavaScript | -| `useDefineForClassFields` | `true` | Uses ECMAScript standard semantics for class field initialization | +| Option | Value | Description | +| ---------------------------------- | ------------ | ---------------------------------------------------------------------------------------- | +| `allowJs` | `true` | Allows JavaScript files to be compiled alongside TypeScript files | +| `composite` | `true` | Enables project references and incremental compilation for better build performance | +| `declaration` | `true` | Generates `.d.ts` declaration files for TypeScript definitions | +| `declarationMap` | `true` | Creates source maps for declaration files, enabling "Go to Definition" to jump to source | +| `esModuleInterop` | `true` | Enables interoperability between CommonJS and ES modules | +| `forceConsistentCasingInFileNames` | `true` | Ensures file name casing is consistent across imports | +| `inlineSourceMap` | `true` | Embeds source maps directly in the compiled JavaScript files | +| `inlineSources` | `true` | Includes the original TypeScript source code in the source maps | +| `isolatedModules` | `true` | Ensures each file can be safely transpiled independently (required for tools like Babel) | +| `jsx` | `preserve` | Keeps JSX syntax as-is for processing by other tools (e.g., Babel, esbuild) | +| `lib` | `["ES2021"]` | Includes type definitions for ES2021 features | +| `module` | `ES2022` | Specifies ES2022 module code generation (supports top-level await) | +| `moduleResolution` | `Node` | Uses Node.js-style module resolution algorithm | +| `noUnusedLocals` | `false` | Allows unused local variables (disabled for flexibility during development) | +| `noUnusedParameters` | `false` | Allows unused function parameters (disabled for flexibility during development) | +| `preserveWatchOutput` | `true` | Keeps previous console output when running in watch mode | +| `resolveJsonModule` | `true` | Allows importing JSON files as modules | +| `skipLibCheck` | `true` | Skips type checking of declaration files for faster compilation | +| `sourceMap` | `false` | Disables separate source map files (using inline source maps instead) | +| `strict` | `true` | Enables all strict type-checking options for maximum type safety | +| `target` | `ES2021` | Compiles TypeScript to ES2021 JavaScript | +| `useDefineForClassFields` | `true` | Uses ECMAScript standard semantics for class field initialization | diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d8b5de..47eac3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,15 +77,6 @@ importers: globals: specifier: 17.3.0 version: 17.3.0 - stylelint: - specifier: 17.9.1 - version: 17.9.1(typescript@5.9.3) - stylelint-config-prettier: - specifier: 9.0.5 - version: 9.0.5(stylelint@17.9.1(typescript@5.9.3)) - stylelint-config-standard: - specifier: 40.0.0 - version: 40.0.0(stylelint@17.9.1(typescript@5.9.3)) typescript-eslint: specifier: 8.54.0 version: 8.54.0(eslint@9.39.4(jiti@1.21.6))(typescript@5.9.3) @@ -99,9 +90,15 @@ importers: prettier: specifier: 3.8.3 version: 3.8.3 + stylelint: + specifier: 17.9.1 + version: 17.9.1(typescript@5.9.3) stylelint-config-recommended-vue: specifier: 1.6.1 version: 1.6.1(stylelint@17.9.1(typescript@5.9.3)) + stylelint-config-standard: + specifier: 40.0.0 + version: 40.0.0(stylelint@17.9.1(typescript@5.9.3)) stylelint-order: specifier: 8.1.1 version: 8.1.1(stylelint@17.9.1(typescript@5.9.3)) @@ -2915,13 +2912,6 @@ packages: postcss-html: ^1.0.0 stylelint: '>=14.0.0' - stylelint-config-prettier@9.0.5: - resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} - engines: {node: '>= 12'} - hasBin: true - peerDependencies: - stylelint: '>= 11.x < 15' - stylelint-config-recommended-vue@1.6.1: resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} engines: {node: ^12 || >=14} @@ -6476,10 +6466,6 @@ snapshots: dependencies: stylelint: 17.9.1(typescript@5.9.3) - stylelint-config-prettier@9.0.5(stylelint@17.9.1(typescript@5.9.3)): - dependencies: - stylelint: 17.9.1(typescript@5.9.3) - stylelint-config-recommended-vue@1.6.1(stylelint@17.9.1(typescript@5.9.3)): dependencies: semver: 7.7.3 From 930931f25a48eb2d4e40225775a2220c137ec7ae Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Tue, 28 Apr 2026 18:06:14 +0545 Subject: [PATCH 07/11] refactor(stylelint): remove kebab-case restriction --- packages/eslint-config/stylelint.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/eslint-config/stylelint.js b/packages/eslint-config/stylelint.js index 854e13a..f6aed94 100644 --- a/packages/eslint-config/stylelint.js +++ b/packages/eslint-config/stylelint.js @@ -6,6 +6,9 @@ export default { "stylelint-order", ], rules: { + "custom-property-pattern": null, + "keyframes-name-pattern": null, "order/properties-alphabetical-order": true, + "selector-class-pattern": null, }, }; From 7838facdc762cf4e9e6362bf6d547a1581f68131 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Wed, 29 Apr 2026 12:43:59 +0545 Subject: [PATCH 08/11] chore: remove irrelevent reame title --- packages/eslint-config/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 93c4a9e..19184b8 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -123,7 +123,7 @@ Custom ESLint configuration for streamlined linting across projects. - ### For CSS/SCSS linting: - **For React, Fastify, and general projects:** + **For React and general projects:** Install dependencies: From 3b5cc95fd560ce8f4b5279daa5050ac146bc8f76 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Wed, 29 Apr 2026 13:28:02 +0545 Subject: [PATCH 09/11] chore(eslint-config): add explicit any rule in fastify config --- packages/eslint-config/README.md | 2 +- packages/eslint-config/fastify.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 19184b8..26974e9 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -8,7 +8,7 @@ Custom ESLint configuration for streamlined linting across projects. - `@prefabs.tech/eslint-config/react` for react libraries - `@prefabs.tech/eslint-config/react-app` for react apps - `@prefabs.tech/eslint-config/vue` for vue apps and libraries -- `@prefabs.tech/eslint-config/stylelint` for CSS/SCSS linting (React, Fastify, general projects) +- `@prefabs.tech/eslint-config/stylelint` for CSS/SCSS linting (React, general projects) - `@prefabs.tech/eslint-config/stylelint-vue` for CSS/SCSS linting in Vue projects - `@prefabs.tech/eslint-config` for general typescript projects diff --git a/packages/eslint-config/fastify.js b/packages/eslint-config/fastify.js index 9af4c5c..e8586b3 100644 --- a/packages/eslint-config/fastify.js +++ b/packages/eslint-config/fastify.js @@ -2,4 +2,9 @@ import baseConfig from "./index.js"; export default [ ...baseConfig, + { + rules: { + "@typescript-eslint/no-explicit-any": "error", + }, + }, ]; From d5f29afa7f6e73d2924936568ca78a0fd157eaab Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Wed, 29 Apr 2026 14:15:41 +0545 Subject: [PATCH 10/11] feat(stylelint-config): add separate package for stylelint configuration --- packages/eslint-config/README.md | 42 ------------ packages/eslint-config/package.json | 21 ------ packages/stylelint-config/README.md | 67 +++++++++++++++++++ .../index.js} | 0 packages/stylelint-config/package.json | 47 +++++++++++++ .../vue.js} | 2 +- 6 files changed, 115 insertions(+), 64 deletions(-) create mode 100644 packages/stylelint-config/README.md rename packages/{eslint-config/stylelint.js => stylelint-config/index.js} (100%) create mode 100644 packages/stylelint-config/package.json rename packages/{eslint-config/stylelint-vue.js => stylelint-config/vue.js} (70%) diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 26974e9..6fb6cb9 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -8,8 +8,6 @@ Custom ESLint configuration for streamlined linting across projects. - `@prefabs.tech/eslint-config/react` for react libraries - `@prefabs.tech/eslint-config/react-app` for react apps - `@prefabs.tech/eslint-config/vue` for vue apps and libraries -- `@prefabs.tech/eslint-config/stylelint` for CSS/SCSS linting (React, general projects) -- `@prefabs.tech/eslint-config/stylelint-vue` for CSS/SCSS linting in Vue projects - `@prefabs.tech/eslint-config` for general typescript projects ## Installation and usage @@ -121,40 +119,6 @@ Custom ESLint configuration for streamlined linting across projects. export default config; ``` -- ### For CSS/SCSS linting: - - **For React and general projects:** - - Install dependencies: - - ```sh - npm i -D @prefabs.tech/eslint-config stylelint stylelint-config-standard stylelint-order - ``` - - Create a `stylelint.config.js` file: - - ```js - import stylelintConfig from "@prefabs.tech/eslint-config/stylelint.js"; - - export default stylelintConfig; - ``` - - **For Vue projects:** - - Install dependencies: - - ```sh - npm i -D @prefabs.tech/eslint-config stylelint stylelint-config-recommended-vue stylelint-order - ``` - - Create a `stylelint.config.js` file: - - ```js - import stylelintConfig from "@prefabs.tech/eslint-config/stylelint-vue.js"; - - export default stylelintConfig; - ``` - ## Adding linting scripts In your `package.json`, add the following commands to the `scripts` section: @@ -166,12 +130,6 @@ In your `package.json`, add the following commands to the `scripts` section: "lint:fix": "eslint . --fix" ``` -- For CSS/SCSS linting: - ```json - "stylelint": "stylelint \"src/**/*.{css,vue}\"", - "stylelint:fix": "stylelint \"src/**/*.{css,vue}\" --fix", - ``` - ## Running linting Run the following command to lint your code: diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index cfde813..69540f6 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -16,8 +16,6 @@ "index.js", "react.js", "react-app.js", - "stylelint.js", - "stylelint-vue.js", "vue.js" ], "scripts": { @@ -45,32 +43,13 @@ "devDependencies": { "eslint": "9.39.4", "prettier": "3.8.3", - "stylelint": "17.9.1", - "stylelint-config-recommended-vue": "1.6.1", - "stylelint-config-standard": "40.0.0", - "stylelint-order": "8.1.1", "typescript": "5.9.3" }, "peerDependencies": { "eslint": ">=9.0.0", "prettier": ">=3.3.3", - "stylelint": ">=17.0.0", - "stylelint-config-recommended-vue": ">=1.6.0", - "stylelint-config-standard": ">=40.0.0", - "stylelint-order": ">=8.0.0", "typescript": ">=4.9.5" }, - "peerDependenciesMeta": { - "stylelint-config-recommended-vue": { - "optional": true - }, - "stylelint-config-standard": { - "optional": true - }, - "stylelint-order": { - "optional": true - } - }, "publishConfig": { "access": "public" } diff --git a/packages/stylelint-config/README.md b/packages/stylelint-config/README.md new file mode 100644 index 0000000..c41de51 --- /dev/null +++ b/packages/stylelint-config/README.md @@ -0,0 +1,67 @@ +# @prefabs.tech/stylelint-config + +Custom stylelint configuration for CSS/SCSS linting across projects. + +## Supported configurations: + +- `@prefabs.tech/stylelint-config` for CSS/SCSS linting in general projects +- `@prefabs.tech/stylelint-config/vue` for CSS/SCSS linting in Vue projects + +## Installation and usage + +**Note:** For CommonJS projects, use `stylelint.config.mjs` instead of `stylelint.config.js`. + +- ### For general linting: + + Install dependencies: + + ```sh + npm i -D @prefabs.tech/stylelint-config stylelint stylelint-config-standard stylelint-order + ``` + + Create a `stylelint.config.js` file: + + ```js + import stylelintConfig from "@prefabs.tech/eslint-config/stylelint.js"; + + export default stylelintConfig; + ``` + + ### For Vue projects: + + Install dependencies: + + ```sh + npm i -D @prefabs.tech/stylelint-config stylelint stylelint-config-recommended-vue stylelint-order + ``` + + Create a `stylelint.config.js` file: + + ```js + import stylelintConfig from "@prefabs.tech/eslint-config/stylelint-vue.js"; + + export default stylelintConfig; + ``` + +## Adding stylelint scripts + +In your `package.json`, add the following commands to the `scripts` section: + +```json +"stylelint": "stylelint \"src/**/*.{css,vue}\"", +"stylelint:fix": "stylelint \"src/**/*.{css,vue}\" --fix", +``` + +## Running stylelint + +Run the following command to lint your code: + +```bash +npm run stylelint +``` + +To automatically fix issues, run: + +```bash +npm run stylelint:fix +``` diff --git a/packages/eslint-config/stylelint.js b/packages/stylelint-config/index.js similarity index 100% rename from packages/eslint-config/stylelint.js rename to packages/stylelint-config/index.js diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json new file mode 100644 index 0000000..866b53a --- /dev/null +++ b/packages/stylelint-config/package.json @@ -0,0 +1,47 @@ +{ + "name": "@prefabs.tech/stylelint-config", + "version": "0.6.0", + "description": "Stylelint config", + "homepage": "https://github.com/prefabs-tech/tools/tree/main/packages/stylelint-config#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/prefabs-tech/tools.git", + "directory": "packages/stylelint-config" + }, + "license": "MIT", + "main": "index.js", + "type": "module", + "files": [ + "index.js", + "vue.js" + ], + "scripts": { + "sort-package": "npx sort-package-json" + }, + "devDependencies": { + "stylelint": "17.9.1", + "stylelint-config-recommended-vue": "1.6.1", + "stylelint-config-standard": "40.0.0", + "stylelint-order": "8.1.1" + }, + "peerDependencies": { + "stylelint": ">=17.0.0", + "stylelint-config-recommended-vue": ">=1.6.0", + "stylelint-config-standard": ">=40.0.0", + "stylelint-order": ">=8.0.0" + }, + "peerDependenciesMeta": { + "stylelint-config-recommended-vue": { + "optional": true + }, + "stylelint-config-standard": { + "optional": true + }, + "stylelint-order": { + "optional": true + } + }, + "publishConfig": { + "access": "public" + } +} \ No newline at end of file diff --git a/packages/eslint-config/stylelint-vue.js b/packages/stylelint-config/vue.js similarity index 70% rename from packages/eslint-config/stylelint-vue.js rename to packages/stylelint-config/vue.js index cbf864c..7fd31bc 100644 --- a/packages/eslint-config/stylelint-vue.js +++ b/packages/stylelint-config/vue.js @@ -1,4 +1,4 @@ -import baseConfig from "./stylelint.js"; +import baseConfig from "./index.js"; export default { ...baseConfig, From de617fd82163608ff70b45050c9e539490cc29e1 Mon Sep 17 00:00:00 2001 From: kabin thakuri Date: Wed, 29 Apr 2026 14:18:49 +0545 Subject: [PATCH 11/11] chore(stylelint-config): add new line to package json --- packages/stylelint-config/package.json | 2 +- pnpm-lock.yaml | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json index 866b53a..ebd66ba 100644 --- a/packages/stylelint-config/package.json +++ b/packages/stylelint-config/package.json @@ -44,4 +44,4 @@ "publishConfig": { "access": "public" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47eac3b..ee7323a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,6 +90,12 @@ importers: prettier: specifier: 3.8.3 version: 3.8.3 + typescript: + specifier: 5.9.3 + version: 5.9.3 + + packages/stylelint-config: + devDependencies: stylelint: specifier: 17.9.1 version: 17.9.1(typescript@5.9.3) @@ -102,9 +108,6 @@ importers: stylelint-order: specifier: 8.1.1 version: 8.1.1(stylelint@17.9.1(typescript@5.9.3)) - typescript: - specifier: 5.9.3 - version: 5.9.3 packages/tsconfig: {}