@anolilab/lint-staged-config 2.0.8 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/chunk-6MD4FED2.js +19 -0
  3. package/dist/chunk-6MD4FED2.js.map +1 -0
  4. package/dist/{chunk-VAUDCZ4C.js → chunk-7A56VADI.js} +3 -3
  5. package/dist/{chunk-IOWFTBT4.js → chunk-AOGKJLJV.js} +1 -1
  6. package/dist/{chunk-IOWFTBT4.js.map → chunk-AOGKJLJV.js.map} +1 -1
  7. package/dist/{chunk-DLOH44BB.mjs → chunk-APQ2ZVEY.mjs} +2 -2
  8. package/dist/{chunk-YBLR7X5F.mjs → chunk-D5BUC6OA.mjs} +2 -2
  9. package/dist/chunk-D7P2AGNT.mjs +16 -0
  10. package/dist/chunk-D7P2AGNT.mjs.map +1 -0
  11. package/dist/{chunk-7NERYZQR.mjs → chunk-GVPCY2MG.mjs} +2 -2
  12. package/dist/chunk-KP7AH4EU.js +11 -0
  13. package/dist/{chunk-32WCNCA6.mjs.map → chunk-KP7AH4EU.js.map} +1 -1
  14. package/dist/{chunk-BQEQMF7R.mjs → chunk-KYQ2HO44.mjs} +1 -1
  15. package/dist/{chunk-BQEQMF7R.mjs.map → chunk-KYQ2HO44.mjs.map} +1 -1
  16. package/dist/{chunk-KNLP6LX4.mjs → chunk-LT6BJJE6.mjs} +2 -2
  17. package/dist/{chunk-CZNOXHD3.js → chunk-NCVPRYTB.js} +3 -3
  18. package/dist/chunk-PP4XAK3E.mjs +8 -0
  19. package/dist/{chunk-26UFUGBI.js.map → chunk-PP4XAK3E.mjs.map} +1 -1
  20. package/dist/{chunk-GWSF22B6.js → chunk-RGGA3MP6.js} +3 -3
  21. package/dist/chunk-YMKHL6BJ.js +9 -0
  22. package/dist/groups/eslint/index.js +3 -3
  23. package/dist/groups/eslint/index.mjs +2 -2
  24. package/dist/groups/json.js +3 -3
  25. package/dist/groups/json.mjs +2 -2
  26. package/dist/groups/markdown.js +3 -3
  27. package/dist/groups/markdown.mjs +2 -2
  28. package/dist/groups/stylesheets.js +3 -3
  29. package/dist/groups/stylesheets.mjs +2 -2
  30. package/dist/groups/tests.js +3 -3
  31. package/dist/groups/tests.mjs +2 -2
  32. package/dist/groups/typescript.js +2 -2
  33. package/dist/groups/typescript.mjs +1 -1
  34. package/dist/index.js +8 -8
  35. package/dist/index.mjs +7 -7
  36. package/dist/postinstall.js.map +1 -1
  37. package/dist/postinstall.mjs.map +1 -1
  38. package/package.json +27 -9
  39. package/dist/chunk-254HTULG.mjs +0 -12
  40. package/dist/chunk-254HTULG.mjs.map +0 -1
  41. package/dist/chunk-26UFUGBI.js +0 -11
  42. package/dist/chunk-32WCNCA6.mjs +0 -8
  43. package/dist/chunk-FZFCZD6I.js +0 -9
  44. package/dist/chunk-OOLGGS6M.js +0 -15
  45. package/dist/chunk-OOLGGS6M.js.map +0 -1
  46. /package/dist/{chunk-VAUDCZ4C.js.map → chunk-7A56VADI.js.map} +0 -0
  47. /package/dist/{chunk-DLOH44BB.mjs.map → chunk-APQ2ZVEY.mjs.map} +0 -0
  48. /package/dist/{chunk-YBLR7X5F.mjs.map → chunk-D5BUC6OA.mjs.map} +0 -0
  49. /package/dist/{chunk-7NERYZQR.mjs.map → chunk-GVPCY2MG.mjs.map} +0 -0
  50. /package/dist/{chunk-KNLP6LX4.mjs.map → chunk-LT6BJJE6.mjs.map} +0 -0
  51. /package/dist/{chunk-CZNOXHD3.js.map → chunk-NCVPRYTB.js.map} +0 -0
  52. /package/dist/{chunk-GWSF22B6.js.map → chunk-RGGA3MP6.js.map} +0 -0
  53. /package/dist/{chunk-FZFCZD6I.js.map → chunk-YMKHL6BJ.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,42 @@
1
+ ## @anolilab/lint-staged-config [2.0.10](https://github.com/anolilab/javascript-style-guide/compare/@anolilab/lint-staged-config@2.0.9...@anolilab/lint-staged-config@2.0.10) (2023-09-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Handle failed promise in removeIgnoredFiles function ([c899a83](https://github.com/anolilab/javascript-style-guide/commit/c899a830080f139afb83fd8e2b7fb4bfc9aba774))
7
+ * Various project dependencies have been updated to their respective newer versions. This covers multiple packages such as '@babel/cli', '@babel/core', '@nrwl/js', and 'eslint' among others within the package.json file. This upgrade is necessary to ensure the utilization of the most recent features, optimization and security improvements of the updated packages, and it also helps to maintain overall project consistency. ([38535ab](https://github.com/anolilab/javascript-style-guide/commit/38535abf2557680e3f22e1ff74372764ca11c2f1))
8
+
9
+
10
+ ### Styles
11
+
12
+ * cs fixes ([e053d90](https://github.com/anolilab/javascript-style-guide/commit/e053d90a4ab7a6466699c17d5afec1a7adc2459d))
13
+ * cs fixes ([bcf423f](https://github.com/anolilab/javascript-style-guide/commit/bcf423f0d292f286ff448a205575b3b2a08cae17))
14
+
15
+
16
+
17
+ ### Dependencies
18
+
19
+ * **@anolilab/package-json-utils:** upgraded to 3.0.6
20
+ * **@anolilab/semantic-release-preset:** upgraded to 7.0.3
21
+
22
+ ## @anolilab/lint-staged-config [2.0.9](https://github.com/anolilab/javascript-style-guide/compare/@anolilab/lint-staged-config@2.0.8...@anolilab/lint-staged-config@2.0.9) (2023-09-22)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * changed optionalDependencies to peerDependencies with peerDependenciesMeta ([2a21b86](https://github.com/anolilab/javascript-style-guide/commit/2a21b861f1ff60483f9ee5762579e4369fca5467))
28
+
29
+
30
+ ### Styles
31
+
32
+ * cs fixes ([8e66dc2](https://github.com/anolilab/javascript-style-guide/commit/8e66dc261129837075a52a4364036918f1bbc115))
33
+
34
+
35
+
36
+ ### Dependencies
37
+
38
+ * **@anolilab/semantic-release-preset:** upgraded to 7.0.2
39
+
1
40
  ## @anolilab/lint-staged-config [2.0.8](https://github.com/anolilab/javascript-style-guide/compare/@anolilab/lint-staged-config@2.0.7...@anolilab/lint-staged-config@2.0.8) (2023-09-21)
2
41
 
3
42
 
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var chunkVU6SMFTD_js = require('./chunk-VU6SMFTD.js');
4
+ var chunkKP7AH4EU_js = require('./chunk-KP7AH4EU.js');
5
+ var packageJsonUtils = require('@anolilab/package-json-utils');
6
+ var path = require('path');
7
+ var eslint = require('eslint');
8
+ var shellQuote = require('shell-quote');
9
+
10
+ !global.anolilabLintStagedPackageJsonConfig&&packageJsonUtils.pkg&&(global.anolilabLintStagedPackageJsonConfig=packageJsonUtils.pkg.anolilab?.["lint-staged-config"]);var C=global.anolilabLintStagedPackageJsonConfig??{},u=C;var j=n=>{let t={};return n.forEach(o=>{let i=path.dirname(o);t[i]||(t[i]=[]),t[i].push(o);}),t},p=j;var E=async n=>{let t=new eslint.ESLint,i=(await Promise.allSettled(n.map(async e=>await t.isPathIgnored(e)))).map(e=>{if(e.status==="fulfilled")return e.value;throw console.error(`
11
+ Unable to determine if file is ignored.
12
+
13
+
14
+ ${e.reason}`),new Error("Stopping lint-staged because of an error.")});return n.filter((e,r)=>!i[r]).map(e=>`"${chunkKP7AH4EU_js.a?e:shellQuote.quote([e])}"`)},h=E;var s=u?.settings?.eslint??{},b=["react-hooks/exhaustive-deps: off"],a=".eslintrc",F=()=>{let n=[];s["max-warnings"]!==void 0&&Number.isNaN(s["max-warnings"])?n.push(`--max-warnings=${s["max-warnings"]}`):s["max-warnings"]!==!1&&n.push("--max-warnings=0");let t=[];s.rules!==void 0&&Array.isArray(s.rules)?t.push([...s.rules,...b].filter(i=>i.trim().length>0).map(i=>`"${i.trim()}"`)):t.push(b.map(i=>`"${i.trim()}"`)),t.length>0&&n.push(`--rule ${t.join(" --rule ")}`);let o=[...s["fix-type"]??["layout"]].filter(i=>i.trim().length>0);return o.length>0&&n.push(`--fix-type ${o.join(",")}`,"--fix"),s.cache&&n.push("--cache"),n},A=async n=>{let t=await h(n),o=F();if(s.config)return o.push(`--config ${s.config}`),[`cross-env NO_LOGS=true eslint ${o.join(" ")} ${t.join(" ")}`];let i=p(t),l=[];return Object.values(i).forEach(e=>{let r;[a,`${a}.js`,`${a}.cjs`,`${a}.json`,`${a}.yaml`,`${a}.yml`].forEach($=>{if(!r)try{r=chunkVU6SMFTD_js.a($,e[0]);}catch{}}),r&&l.push(`cross-env NO_LOGS=true eslint ${o.join(" ")} --config ${r} ${e.join(" ")}`);}),l},g=A;var x=["cjs","js","mjs","cts","ts","mts","yml","yaml","jsx","tsx","mdx","toml"];global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=packageJsonUtils.hasDependency("markdownlint-cli")||packageJsonUtils.hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=packageJsonUtils.hasDependency("markdownlint-cli2")||packageJsonUtils.hasDevDependency("markdownlint-cli2"));!global.hasAnolilabLintStagedMarkdownCli&&!global.hasAnolilabLintStagedMarkdownCli2&&x.push("md");var N={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:async n=>[...await g(n)],[`**/*.{${[x].join(",")}}`]:async n=>[`prettier --write ${chunkKP7AH4EU_js.b(n)}`,...await g(n)]},H=N;
15
+
16
+ exports.a = u;
17
+ exports.b = H;
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=chunk-6MD4FED2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/groups/eslint/index.ts","../src/utils/lint-staged-config.ts","../src/groups/eslint/group-file-paths-by-directory-name.ts","../src/groups/eslint/remove-ignored-files.ts","../src/groups/eslint/create-eslint-commands.ts"],"names":["hasDependency","hasDevDependency","pkg","config","lint_staged_config_default","dirname","groupFilePathsByDirectoryName","filePaths","groups","filePath","directoryName","group_file_paths_by_directory_name_default","ESLint","quote","removeIgnoredFiles","filenames","eslint","ignoredFiles","filename","promise","_","index","is_windows_default","remove_ignored_files_default","eslintSettings","eslintGlobalRulesForFix","configFile","createEslintArguments","eslintArguments","rules","rule","r","fixType","type","createEslintCommands","filteredFiles","groupedFilesNames","eslintCommands","configName","get_nearest_config_path_default","create_eslint_commands_default","extensions","group","concat_files_default","eslint_default"],"mappings":"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","sourcesContent":["import { hasDependency, hasDevDependency } from \"@anolilab/package-json-utils\";\nimport type { Config } from \"lint-staged\";\n\nimport concatFiles from \"../../utils/concat-files\";\nimport createEslintCommands from \"./create-eslint-commands\";\n\nconst extensions = [\"cjs\", \"js\", \"mjs\", \"cts\", \"ts\", \"mts\", \"yml\", \"yaml\", \"jsx\", \"tsx\", \"mdx\", \"toml\"];\n\nif (!global.hasAnolilabLintStagedMarkdownCli) {\n global.hasAnolilabLintStagedMarkdownCli = hasDependency(\"markdownlint-cli\") || hasDevDependency(\"markdownlint-cli\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli2) {\n global.hasAnolilabLintStagedMarkdownCli2 = hasDependency(\"markdownlint-cli2\") || hasDevDependency(\"markdownlint-cli2\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli && !global.hasAnolilabLintStagedMarkdownCli2) {\n extensions.push(\"md\");\n}\n\nconst group: Config = {\n [`**/*.{${[\"json\", \"json5\", \"jsonc\"].join(\",\")}}`]: async (filenames: string[]) => [...(await createEslintCommands(filenames))],\n [`**/*.{${[extensions].join(\",\")}}`]: async (filenames: string[]) => [\n `prettier --write ${concatFiles(filenames)}`,\n ...(await createEslintCommands(filenames)),\n ],\n};\n\nexport default group;\n","import { pkg } from \"@anolilab/package-json-utils\";\n\nif (!global.anolilabLintStagedPackageJsonConfig && pkg) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n global.anolilabLintStagedPackageJsonConfig = pkg[\"anolilab\"]?.[\"lint-staged-config\"];\n}\n\nconst config: Record<string, boolean | undefined> = global.anolilabLintStagedPackageJsonConfig ?? {};\n\nexport default config;\n","import { dirname } from \"node:path\";\n\nconst groupFilePathsByDirectoryName = (filePaths: string[]): Record<string, string[]> => {\n const groups: Record<string, string[]> = {};\n\n filePaths.forEach((filePath) => {\n const directoryName = dirname(filePath);\n\n // eslint-disable-next-line security/detect-object-injection\n if (!groups[directoryName]) {\n // eslint-disable-next-line security/detect-object-injection\n groups[directoryName] = [];\n }\n // eslint-disable-next-line security/detect-object-injection\n (groups[directoryName] as string[]).push(filePath);\n });\n\n return groups;\n};\n\nexport default groupFilePathsByDirectoryName;\n","import { ESLint } from \"eslint\";\nimport { quote } from \"shell-quote\";\n\nimport isWindows from \"../../utils/is-windows\";\n\nconst removeIgnoredFiles = async (filenames: string[]): Promise<string[]> => {\n const eslint = new ESLint();\n // eslint-disable-next-line compat/compat\n const promises = await Promise.allSettled(filenames.map(async (filename) => await eslint.isPathIgnored(filename)));\n const ignoredFiles = promises.map((promise) => {\n if (promise.status === \"fulfilled\") {\n return promise.value;\n }\n\n console.error(`\\nUnable to determine if file is ignored.\\n\\n\\n${promise.reason}`);\n\n throw new Error(\"Stopping lint-staged because of an error.\");\n });\n\n // eslint-disable-next-line security/detect-object-injection\n const filteredFiles = filenames.filter((_, index) => !ignoredFiles[index]);\n\n return filteredFiles.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`);\n};\n\nexport default removeIgnoredFiles;\n","import getNearestConfigPath from \"../../utils/get-nearest-config-path\";\nimport anolilabLintStagedConfig from \"../../utils/lint-staged-config\";\nimport groupFilePathsByDirectoryName from \"./group-file-paths-by-directory-name\";\nimport removeIgnoredFiles from \"./remove-ignored-files\";\n\ninterface EslintConfig {\n cache?: boolean;\n config?: string;\n \"fix-type\"?: string[];\n \"max-warnings\"?: number | string | false;\n rules?: string[];\n}\n\ninterface ESLintSettings {\n settings?: {\n eslint?: EslintConfig;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nconst eslintSettings: EslintConfig = (anolilabLintStagedConfig as ESLintSettings)?.settings?.eslint ?? ({} as EslintConfig);\n\nconst eslintGlobalRulesForFix = [\n // react-hooks/eslint and react in general is very strict about exhaustively\n // declaring the dependencies when using the useEffect, useCallback... hooks.\n //\n // In some specific scenarios declaring the deps seems 'less' wanted or 'less' applicable\n // by the developer, leading to some exceptions in the code. That said it should be avoided.\n //\n // While the 'react-hooks/exhaustive-deps' rule is a good rule of thumb, it's not recommended to\n // automatically fix it from lint-staged as it can potentially break a legit intent.\n //\n // Reminder that a good practice is to always declare the dependencies when using the hooks,\n // and if not applicable, add an eslint disable comment to the useEffect, useCallback... such as:\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n //\n // Another approach can be to use hooks such as https://github.com/kentcdodds/use-deep-compare-effect to quickly bypass\n // shallow rendering limitations.\n //\n // @see https://reactjs.org/docs/hooks-rules.html\n // @see https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments\n \"react-hooks/exhaustive-deps: off\",\n];\n\nconst configFile = \".eslintrc\";\n\nconst createEslintArguments = (): string[] => {\n const eslintArguments: string[] = [];\n\n if (eslintSettings[\"max-warnings\"] !== undefined && Number.isNaN(eslintSettings[\"max-warnings\"])) {\n eslintArguments.push(`--max-warnings=${eslintSettings[\"max-warnings\"]}`);\n } else if (eslintSettings[\"max-warnings\"] !== false) {\n eslintArguments.push(\"--max-warnings=0\");\n }\n\n const rules = [];\n\n if (eslintSettings.rules !== undefined && Array.isArray(eslintSettings.rules)) {\n rules.push([...eslintSettings.rules, ...eslintGlobalRulesForFix].filter((rule) => rule.trim().length > 0).map((r) => `\"${r.trim()}\"`));\n } else {\n rules.push(eslintGlobalRulesForFix.map((r) => `\"${r.trim()}\"`));\n }\n\n if (rules.length > 0) {\n eslintArguments.push(`--rule ${rules.join(\" --rule \")}`);\n }\n\n // For lint-staged it's safer to not apply the fix command if it changes the AST\n // @see https://eslint.org/docs/user-guide/command-line-interface#--fix-type\n const fixType = [...(eslintSettings[\"fix-type\"] ?? [\"layout\"])].filter((type) => type.trim().length > 0);\n\n if (fixType.length > 0) {\n eslintArguments.push(`--fix-type ${fixType.join(\",\")}`, \"--fix\");\n }\n\n if (eslintSettings.cache) {\n eslintArguments.push(\"--cache\");\n }\n\n return eslintArguments;\n};\n\nconst createEslintCommands = async (filenames: string[]): Promise<string[]> => {\n const filteredFiles = await removeIgnoredFiles(filenames);\n\n const eslintArguments = createEslintArguments();\n\n if (eslintSettings.config) {\n eslintArguments.push(`--config ${eslintSettings.config}`);\n\n return [`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} ${filteredFiles.join(\" \")}`];\n }\n\n const groupedFilesNames = groupFilePathsByDirectoryName(filteredFiles);\n const eslintCommands: string[] = [];\n\n Object.values(groupedFilesNames).forEach((filePaths) => {\n let config: string | undefined;\n\n [configFile, `${configFile}.js`, `${configFile}.cjs`, `${configFile}.json`, `${configFile}.yaml`, `${configFile}.yml`].forEach((configName) => {\n if (config) {\n return;\n }\n\n try {\n // eslint-disable-next-line no-template-curly-in-string\n config = getNearestConfigPath(configName, filePaths[0] as \"/${string}\") as string;\n } catch {\n // Ignore\n }\n });\n\n if (config) {\n eslintCommands.push(`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} --config ${config} ${filePaths.join(\" \")}`);\n }\n });\n\n return eslintCommands;\n};\n\nexport default createEslintCommands;\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk26UFUGBI_js = require('./chunk-26UFUGBI.js');
3
+ var chunkKP7AH4EU_js = require('./chunk-KP7AH4EU.js');
4
4
  var packageJsonUtils = require('@anolilab/package-json-utils');
5
5
 
6
- var n=packageJsonUtils.hasDependency("vitest")||packageJsonUtils.hasDevDependency("vitest"),i=packageJsonUtils.hasDependency("jest")||packageJsonUtils.hasDevDependency("jest"),j=packageJsonUtils.hasDependency("ava")||packageJsonUtils.hasDevDependency("ava"),d={...n&&{"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["vitest related --run"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["vitest related --run"]},...i&&{"**/*.spec.{js,ts,tsx}":["jest --findRelatedTests"],"**/*.test.{js,ts,tsx}":["jest --findRelatedTests"],"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__mocks__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__tests__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/test/*.{js,ts,tsx}":["jest --findRelatedTests"]},...j&&{"**/(test|tests|__tests__)/**/*.js":t=>[`ava ${chunk26UFUGBI_js.b(t)}`],"**/*.(spec|test).js":t=>[`ava ${chunk26UFUGBI_js.b(t)}`],"**/test.js":t=>[`ava ${chunk26UFUGBI_js.b(t)}`],"**/test-*.js":t=>[`ava ${chunk26UFUGBI_js.b(t)}`]}},o=d;
6
+ var n=packageJsonUtils.hasDependency("vitest")||packageJsonUtils.hasDevDependency("vitest"),i=packageJsonUtils.hasDependency("jest")||packageJsonUtils.hasDevDependency("jest"),j=packageJsonUtils.hasDependency("ava")||packageJsonUtils.hasDevDependency("ava"),d={...n&&{"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["vitest related --run"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["vitest related --run"]},...i&&{"**/*.spec.{js,ts,tsx}":["jest --findRelatedTests"],"**/*.test.{js,ts,tsx}":["jest --findRelatedTests"],"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__mocks__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__tests__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/test/*.{js,ts,tsx}":["jest --findRelatedTests"]},...j&&{"**/(test|tests|__tests__)/**/*.js":t=>[`ava ${chunkKP7AH4EU_js.b(t)}`],"**/*.(spec|test).js":t=>[`ava ${chunkKP7AH4EU_js.b(t)}`],"**/test.js":t=>[`ava ${chunkKP7AH4EU_js.b(t)}`],"**/test-*.js":t=>[`ava ${chunkKP7AH4EU_js.b(t)}`]}},o=d;
7
7
 
8
8
  exports.a = o;
9
9
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-VAUDCZ4C.js.map
10
+ //# sourceMappingURL=chunk-7A56VADI.js.map
@@ -7,4 +7,4 @@ var e={[`**/*.{${["ts","mts","cts"].join(",")}}`]:n=>{let o=new Set;return n.for
7
7
 
8
8
  exports.a = a;
9
9
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-IOWFTBT4.js.map
10
+ //# sourceMappingURL=chunk-AOGKJLJV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/groups/typescript.ts"],"names":["env","group","filenames","commands","filePath","tsconfigPath","get_nearest_config_path_default","error","typescript_default"],"mappings":"wCAAA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAgB,CAClB,CAAC,SAAS,CAAC,KAAM,MAAO,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,EAAIC,GAAwB,CACnE,IAAMC,EAAW,IAAI,IAErB,OAAAD,EAAU,QAASE,GAAa,CAC5B,GAAI,CAEA,IAAMC,EAAeC,EAAqB,gBAAiBF,CAAwB,EAEnFD,EAAS,IAAI,0BAA0BE,CAAY,EAAE,CACzD,OAASE,EAAP,CACMP,EAAI,OACJ,QAAQ,MAAMO,CAAK,CAE3B,CACJ,CAAC,EAEM,CAAC,GAAGJ,CAAQ,CACvB,CACJ,EAEOK,EAAQP","sourcesContent":["import { env } from \"node:process\";\n\nimport type { Config } from \"lint-staged\";\n\nimport getNearestConfigPath from \"../utils/get-nearest-config-path\";\n\nconst group: Config = {\n [`**/*.{${[\"ts\", \"mts\", \"cts\"].join(\",\")}}`]: (filenames: string[]) => {\n const commands = new Set<string>();\n\n filenames.forEach((filePath) => {\n try {\n // eslint-disable-next-line no-template-curly-in-string\n const tsconfigPath = getNearestConfigPath(\"tsconfig.json\", filePath as \"/${string}\") as string;\n\n commands.add(`tsc --noEmit --project ${tsconfigPath}`);\n } catch (error) {\n if (env[\"DEBUG\"]) {\n console.error(error);\n }\n }\n });\n\n return [...commands];\n },\n};\n\nexport default group;\n"]}
1
+ {"version":3,"sources":["../src/groups/typescript.ts"],"names":["env","group","filenames","commands","filePath","tsconfigPath","get_nearest_config_path_default","error","typescript_default"],"mappings":"wCAAA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAgB,CAClB,CAAC,SAAS,CAAC,KAAM,MAAO,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,EAAIC,GAAwB,CACnE,IAAMC,EAAW,IAAI,IAErB,OAAAD,EAAU,QAASE,GAAa,CAC5B,GAAI,CAEA,IAAMC,EAAeC,EAAqB,gBAAiBF,CAAwB,EAEnFD,EAAS,IAAI,0BAA0BE,CAAY,EAAE,CACzD,OAASE,EAAO,CACRP,EAAI,OACJ,QAAQ,MAAMO,CAAK,CAE3B,CACJ,CAAC,EAEM,CAAC,GAAGJ,CAAQ,CACvB,CACJ,EAEOK,EAAQP","sourcesContent":["import { env } from \"node:process\";\n\nimport type { Config } from \"lint-staged\";\n\nimport getNearestConfigPath from \"../utils/get-nearest-config-path\";\n\nconst group: Config = {\n [`**/*.{${[\"ts\", \"mts\", \"cts\"].join(\",\")}}`]: (filenames: string[]) => {\n const commands = new Set<string>();\n\n filenames.forEach((filePath) => {\n try {\n // eslint-disable-next-line no-template-curly-in-string\n const tsconfigPath = getNearestConfigPath(\"tsconfig.json\", filePath as \"/${string}\") as string;\n\n commands.add(`tsc --noEmit --project ${tsconfigPath}`);\n } catch (error) {\n if (env[\"DEBUG\"]) {\n console.error(error);\n }\n }\n });\n\n return [...commands];\n },\n};\n\nexport default group;\n"]}
@@ -1,7 +1,7 @@
1
- import { b } from './chunk-32WCNCA6.mjs';
1
+ import { b } from './chunk-PP4XAK3E.mjs';
2
2
 
3
3
  var i={[`**/*.{${["css","sass","scss","less"].join(",")}}`]:t=>[`prettier --ignore-unknown --write ${b(t)}`,"stylelint --fix"]},n=i;
4
4
 
5
5
  export { n as a };
6
6
  //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-DLOH44BB.mjs.map
7
+ //# sourceMappingURL=chunk-APQ2ZVEY.mjs.map
@@ -1,8 +1,8 @@
1
- import { b } from './chunk-32WCNCA6.mjs';
1
+ import { b } from './chunk-PP4XAK3E.mjs';
2
2
  import { hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
3
3
 
4
4
  var a=hasDependency("sort-package-json")||hasDevDependency("sort-package-json"),t={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:o=>[`prettier --write ${b(o)}`],...a?{"package.json,{packages,apps}/*/package.json":o=>[`sort-package-json ${b(o)}`]}:{}},c=t;
5
5
 
6
6
  export { c as a };
7
7
  //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-YBLR7X5F.mjs.map
8
+ //# sourceMappingURL=chunk-D5BUC6OA.mjs.map
@@ -0,0 +1,16 @@
1
+ import { a as a$1 } from './chunk-HGDREIGE.mjs';
2
+ import { b as b$1, a as a$2 } from './chunk-PP4XAK3E.mjs';
3
+ import { pkg, hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
4
+ import { dirname } from 'path';
5
+ import { ESLint } from 'eslint';
6
+ import { quote } from 'shell-quote';
7
+
8
+ !global.anolilabLintStagedPackageJsonConfig&&pkg&&(global.anolilabLintStagedPackageJsonConfig=pkg.anolilab?.["lint-staged-config"]);var C=global.anolilabLintStagedPackageJsonConfig??{},u=C;var j=n=>{let t={};return n.forEach(o=>{let i=dirname(o);t[i]||(t[i]=[]),t[i].push(o);}),t},p=j;var E=async n=>{let t=new ESLint,i=(await Promise.allSettled(n.map(async e=>await t.isPathIgnored(e)))).map(e=>{if(e.status==="fulfilled")return e.value;throw console.error(`
9
+ Unable to determine if file is ignored.
10
+
11
+
12
+ ${e.reason}`),new Error("Stopping lint-staged because of an error.")});return n.filter((e,r)=>!i[r]).map(e=>`"${a$2?e:quote([e])}"`)},h=E;var s=u?.settings?.eslint??{},b=["react-hooks/exhaustive-deps: off"],a=".eslintrc",F=()=>{let n=[];s["max-warnings"]!==void 0&&Number.isNaN(s["max-warnings"])?n.push(`--max-warnings=${s["max-warnings"]}`):s["max-warnings"]!==!1&&n.push("--max-warnings=0");let t=[];s.rules!==void 0&&Array.isArray(s.rules)?t.push([...s.rules,...b].filter(i=>i.trim().length>0).map(i=>`"${i.trim()}"`)):t.push(b.map(i=>`"${i.trim()}"`)),t.length>0&&n.push(`--rule ${t.join(" --rule ")}`);let o=[...s["fix-type"]??["layout"]].filter(i=>i.trim().length>0);return o.length>0&&n.push(`--fix-type ${o.join(",")}`,"--fix"),s.cache&&n.push("--cache"),n},A=async n=>{let t=await h(n),o=F();if(s.config)return o.push(`--config ${s.config}`),[`cross-env NO_LOGS=true eslint ${o.join(" ")} ${t.join(" ")}`];let i=p(t),l=[];return Object.values(i).forEach(e=>{let r;[a,`${a}.js`,`${a}.cjs`,`${a}.json`,`${a}.yaml`,`${a}.yml`].forEach($=>{if(!r)try{r=a$1($,e[0]);}catch{}}),r&&l.push(`cross-env NO_LOGS=true eslint ${o.join(" ")} --config ${r} ${e.join(" ")}`);}),l},g=A;var x=["cjs","js","mjs","cts","ts","mts","yml","yaml","jsx","tsx","mdx","toml"];global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=hasDependency("markdownlint-cli")||hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=hasDependency("markdownlint-cli2")||hasDevDependency("markdownlint-cli2"));!global.hasAnolilabLintStagedMarkdownCli&&!global.hasAnolilabLintStagedMarkdownCli2&&x.push("md");var N={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:async n=>[...await g(n)],[`**/*.{${[x].join(",")}}`]:async n=>[`prettier --write ${b$1(n)}`,...await g(n)]},H=N;
13
+
14
+ export { u as a, H as b };
15
+ //# sourceMappingURL=out.js.map
16
+ //# sourceMappingURL=chunk-D7P2AGNT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/groups/eslint/index.ts","../src/utils/lint-staged-config.ts","../src/groups/eslint/group-file-paths-by-directory-name.ts","../src/groups/eslint/remove-ignored-files.ts","../src/groups/eslint/create-eslint-commands.ts"],"names":["hasDependency","hasDevDependency","pkg","config","lint_staged_config_default","dirname","groupFilePathsByDirectoryName","filePaths","groups","filePath","directoryName","group_file_paths_by_directory_name_default","ESLint","quote","removeIgnoredFiles","filenames","eslint","ignoredFiles","filename","promise","_","index","is_windows_default","remove_ignored_files_default","eslintSettings","eslintGlobalRulesForFix","configFile","createEslintArguments","eslintArguments","rules","rule","r","fixType","type","createEslintCommands","filteredFiles","groupedFilesNames","eslintCommands","configName","get_nearest_config_path_default","create_eslint_commands_default","extensions","group","concat_files_default","eslint_default"],"mappings":"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","sourcesContent":["import { hasDependency, hasDevDependency } from \"@anolilab/package-json-utils\";\nimport type { Config } from \"lint-staged\";\n\nimport concatFiles from \"../../utils/concat-files\";\nimport createEslintCommands from \"./create-eslint-commands\";\n\nconst extensions = [\"cjs\", \"js\", \"mjs\", \"cts\", \"ts\", \"mts\", \"yml\", \"yaml\", \"jsx\", \"tsx\", \"mdx\", \"toml\"];\n\nif (!global.hasAnolilabLintStagedMarkdownCli) {\n global.hasAnolilabLintStagedMarkdownCli = hasDependency(\"markdownlint-cli\") || hasDevDependency(\"markdownlint-cli\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli2) {\n global.hasAnolilabLintStagedMarkdownCli2 = hasDependency(\"markdownlint-cli2\") || hasDevDependency(\"markdownlint-cli2\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli && !global.hasAnolilabLintStagedMarkdownCli2) {\n extensions.push(\"md\");\n}\n\nconst group: Config = {\n [`**/*.{${[\"json\", \"json5\", \"jsonc\"].join(\",\")}}`]: async (filenames: string[]) => [...(await createEslintCommands(filenames))],\n [`**/*.{${[extensions].join(\",\")}}`]: async (filenames: string[]) => [\n `prettier --write ${concatFiles(filenames)}`,\n ...(await createEslintCommands(filenames)),\n ],\n};\n\nexport default group;\n","import { pkg } from \"@anolilab/package-json-utils\";\n\nif (!global.anolilabLintStagedPackageJsonConfig && pkg) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n global.anolilabLintStagedPackageJsonConfig = pkg[\"anolilab\"]?.[\"lint-staged-config\"];\n}\n\nconst config: Record<string, boolean | undefined> = global.anolilabLintStagedPackageJsonConfig ?? {};\n\nexport default config;\n","import { dirname } from \"node:path\";\n\nconst groupFilePathsByDirectoryName = (filePaths: string[]): Record<string, string[]> => {\n const groups: Record<string, string[]> = {};\n\n filePaths.forEach((filePath) => {\n const directoryName = dirname(filePath);\n\n // eslint-disable-next-line security/detect-object-injection\n if (!groups[directoryName]) {\n // eslint-disable-next-line security/detect-object-injection\n groups[directoryName] = [];\n }\n // eslint-disable-next-line security/detect-object-injection\n (groups[directoryName] as string[]).push(filePath);\n });\n\n return groups;\n};\n\nexport default groupFilePathsByDirectoryName;\n","import { ESLint } from \"eslint\";\nimport { quote } from \"shell-quote\";\n\nimport isWindows from \"../../utils/is-windows\";\n\nconst removeIgnoredFiles = async (filenames: string[]): Promise<string[]> => {\n const eslint = new ESLint();\n // eslint-disable-next-line compat/compat\n const promises = await Promise.allSettled(filenames.map(async (filename) => await eslint.isPathIgnored(filename)));\n const ignoredFiles = promises.map((promise) => {\n if (promise.status === \"fulfilled\") {\n return promise.value;\n }\n\n console.error(`\\nUnable to determine if file is ignored.\\n\\n\\n${promise.reason}`);\n\n throw new Error(\"Stopping lint-staged because of an error.\");\n });\n\n // eslint-disable-next-line security/detect-object-injection\n const filteredFiles = filenames.filter((_, index) => !ignoredFiles[index]);\n\n return filteredFiles.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`);\n};\n\nexport default removeIgnoredFiles;\n","import getNearestConfigPath from \"../../utils/get-nearest-config-path\";\nimport anolilabLintStagedConfig from \"../../utils/lint-staged-config\";\nimport groupFilePathsByDirectoryName from \"./group-file-paths-by-directory-name\";\nimport removeIgnoredFiles from \"./remove-ignored-files\";\n\ninterface EslintConfig {\n cache?: boolean;\n config?: string;\n \"fix-type\"?: string[];\n \"max-warnings\"?: number | string | false;\n rules?: string[];\n}\n\ninterface ESLintSettings {\n settings?: {\n eslint?: EslintConfig;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nconst eslintSettings: EslintConfig = (anolilabLintStagedConfig as ESLintSettings)?.settings?.eslint ?? ({} as EslintConfig);\n\nconst eslintGlobalRulesForFix = [\n // react-hooks/eslint and react in general is very strict about exhaustively\n // declaring the dependencies when using the useEffect, useCallback... hooks.\n //\n // In some specific scenarios declaring the deps seems 'less' wanted or 'less' applicable\n // by the developer, leading to some exceptions in the code. That said it should be avoided.\n //\n // While the 'react-hooks/exhaustive-deps' rule is a good rule of thumb, it's not recommended to\n // automatically fix it from lint-staged as it can potentially break a legit intent.\n //\n // Reminder that a good practice is to always declare the dependencies when using the hooks,\n // and if not applicable, add an eslint disable comment to the useEffect, useCallback... such as:\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n //\n // Another approach can be to use hooks such as https://github.com/kentcdodds/use-deep-compare-effect to quickly bypass\n // shallow rendering limitations.\n //\n // @see https://reactjs.org/docs/hooks-rules.html\n // @see https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments\n \"react-hooks/exhaustive-deps: off\",\n];\n\nconst configFile = \".eslintrc\";\n\nconst createEslintArguments = (): string[] => {\n const eslintArguments: string[] = [];\n\n if (eslintSettings[\"max-warnings\"] !== undefined && Number.isNaN(eslintSettings[\"max-warnings\"])) {\n eslintArguments.push(`--max-warnings=${eslintSettings[\"max-warnings\"]}`);\n } else if (eslintSettings[\"max-warnings\"] !== false) {\n eslintArguments.push(\"--max-warnings=0\");\n }\n\n const rules = [];\n\n if (eslintSettings.rules !== undefined && Array.isArray(eslintSettings.rules)) {\n rules.push([...eslintSettings.rules, ...eslintGlobalRulesForFix].filter((rule) => rule.trim().length > 0).map((r) => `\"${r.trim()}\"`));\n } else {\n rules.push(eslintGlobalRulesForFix.map((r) => `\"${r.trim()}\"`));\n }\n\n if (rules.length > 0) {\n eslintArguments.push(`--rule ${rules.join(\" --rule \")}`);\n }\n\n // For lint-staged it's safer to not apply the fix command if it changes the AST\n // @see https://eslint.org/docs/user-guide/command-line-interface#--fix-type\n const fixType = [...(eslintSettings[\"fix-type\"] ?? [\"layout\"])].filter((type) => type.trim().length > 0);\n\n if (fixType.length > 0) {\n eslintArguments.push(`--fix-type ${fixType.join(\",\")}`, \"--fix\");\n }\n\n if (eslintSettings.cache) {\n eslintArguments.push(\"--cache\");\n }\n\n return eslintArguments;\n};\n\nconst createEslintCommands = async (filenames: string[]): Promise<string[]> => {\n const filteredFiles = await removeIgnoredFiles(filenames);\n\n const eslintArguments = createEslintArguments();\n\n if (eslintSettings.config) {\n eslintArguments.push(`--config ${eslintSettings.config}`);\n\n return [`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} ${filteredFiles.join(\" \")}`];\n }\n\n const groupedFilesNames = groupFilePathsByDirectoryName(filteredFiles);\n const eslintCommands: string[] = [];\n\n Object.values(groupedFilesNames).forEach((filePaths) => {\n let config: string | undefined;\n\n [configFile, `${configFile}.js`, `${configFile}.cjs`, `${configFile}.json`, `${configFile}.yaml`, `${configFile}.yml`].forEach((configName) => {\n if (config) {\n return;\n }\n\n try {\n // eslint-disable-next-line no-template-curly-in-string\n config = getNearestConfigPath(configName, filePaths[0] as \"/${string}\") as string;\n } catch {\n // Ignore\n }\n });\n\n if (config) {\n eslintCommands.push(`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} --config ${config} ${filePaths.join(\" \")}`);\n }\n });\n\n return eslintCommands;\n};\n\nexport default createEslintCommands;\n"]}
@@ -1,8 +1,8 @@
1
- import { b } from './chunk-32WCNCA6.mjs';
1
+ import { b } from './chunk-PP4XAK3E.mjs';
2
2
  import { hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
3
3
 
4
4
  var n=hasDependency("vitest")||hasDevDependency("vitest"),i=hasDependency("jest")||hasDevDependency("jest"),j=hasDependency("ava")||hasDevDependency("ava"),d={...n&&{"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["vitest related --run"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["vitest related --run"]},...i&&{"**/*.spec.{js,ts,tsx}":["jest --findRelatedTests"],"**/*.test.{js,ts,tsx}":["jest --findRelatedTests"],"**/?(*.){test,spec}.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__mocks__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/__tests__/**/*.?(c|m)[jt]s?(x)":["jest --findRelatedTests"],"**/__tests__/*.{js,ts,tsx}":["jest --findRelatedTests"],"**/test/*.{js,ts,tsx}":["jest --findRelatedTests"]},...j&&{"**/(test|tests|__tests__)/**/*.js":t=>[`ava ${b(t)}`],"**/*.(spec|test).js":t=>[`ava ${b(t)}`],"**/test.js":t=>[`ava ${b(t)}`],"**/test-*.js":t=>[`ava ${b(t)}`]}},o=d;
5
5
 
6
6
  export { o as a };
7
7
  //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-7NERYZQR.mjs.map
8
+ //# sourceMappingURL=chunk-GVPCY2MG.mjs.map
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var shellQuote = require('shell-quote');
4
+ var process = require('process');
5
+
6
+ var n=process.platform==="win32"||/^(msys|cygwin)$/u.test(process.env.OSTYPE??""),t=n;var p=i=>i.map(o=>`"${t?o:shellQuote.quote([o])}"`).join(" "),d=p;
7
+
8
+ exports.a = t;
9
+ exports.b = d;
10
+ //# sourceMappingURL=out.js.map
11
+ //# sourceMappingURL=chunk-KP7AH4EU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/concat-files.ts","../src/utils/is-windows.ts"],"names":["quote","env","platform","isWindows","is_windows_default","concatFiles","filenames","filename","concat_files_default"],"mappings":"AAAA,OAAS,SAAAA,MAAa,cCAtB,OAAS,OAAAC,EAAK,YAAAC,MAAgB,UAG9B,IAAMC,EAAYD,IAAa,SAAW,kBAAkB,KAAKD,EAAI,QAAa,EAAE,EAE7EG,EAAQD,EDUf,IAAME,EAAeC,GAAgCA,EAAU,IAAKC,GAAa,IAAIH,EAAYG,EAAWP,EAAM,CAACO,CAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAEnIC,EAAQH","sourcesContent":["import { quote } from \"shell-quote\";\n\nimport isWindows from \"./is-windows\";\n\n/**\n * Concatenate and escape a list of filenames that can be passed as args to prettier cli\n *\n * Prettier and Stylelint have an issue with special characters in filenames,\n * such as the ones uses for Next.js dynamic routes (ie: [id].tsx...)\n *\n * @link https://github.com/okonet/lint-staged/issues/676\n *\n * @param {string[]} filenames\n * @returns {string} Return concatenated and escaped filenames\n */\nconst concatFiles = (filenames: string[]): string => filenames.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`).join(\" \");\n\nexport default concatFiles;\n","import { env, platform } from \"node:process\";\n\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst isWindows = platform === \"win32\" || /^(msys|cygwin)$/.test(env[\"OSTYPE\"] ?? \"\");\n\nexport default isWindows;\n"]}
1
+ {"version":3,"sources":["../src/utils/concat-files.ts","../src/utils/is-windows.ts"],"names":["quote","env","platform","isWindows","is_windows_default","concatFiles","filenames","filename","concat_files_default"],"mappings":"AAAA,OAAS,SAAAA,MAAa,cCAtB,OAAS,OAAAC,EAAK,YAAAC,MAAgB,UAG9B,IAAMC,EAAYD,IAAa,SAAW,mBAAmB,KAAKD,EAAI,QAAa,EAAE,EAE9EG,EAAQD,EDUf,IAAME,EAAeC,GAAgCA,EAAU,IAAKC,GAAa,IAAIH,EAAYG,EAAWP,EAAM,CAACO,CAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAEnIC,EAAQH","sourcesContent":["import { quote } from \"shell-quote\";\n\nimport isWindows from \"./is-windows\";\n\n/**\n * Concatenate and escape a list of filenames that can be passed as args to prettier cli\n *\n * Prettier and Stylelint have an issue with special characters in filenames,\n * such as the ones uses for Next.js dynamic routes (ie: [id].tsx...)\n *\n * @link https://github.com/okonet/lint-staged/issues/676\n *\n * @param {string[]} filenames\n * @returns {string} Return concatenated and escaped filenames\n */\nconst concatFiles = (filenames: string[]): string => filenames.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`).join(\" \");\n\nexport default concatFiles;\n","import { env, platform } from \"node:process\";\n\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst isWindows = platform === \"win32\" || /^(msys|cygwin)$/u.test(env[\"OSTYPE\"] ?? \"\");\n\nexport default isWindows;\n"]}
@@ -5,4 +5,4 @@ var e={[`**/*.{${["ts","mts","cts"].join(",")}}`]:n=>{let o=new Set;return n.for
5
5
 
6
6
  export { a };
7
7
  //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-BQEQMF7R.mjs.map
8
+ //# sourceMappingURL=chunk-KYQ2HO44.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/groups/typescript.ts"],"names":["env","group","filenames","commands","filePath","tsconfigPath","get_nearest_config_path_default","error","typescript_default"],"mappings":"yCAAA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAgB,CAClB,CAAC,SAAS,CAAC,KAAM,MAAO,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,EAAIC,GAAwB,CACnE,IAAMC,EAAW,IAAI,IAErB,OAAAD,EAAU,QAASE,GAAa,CAC5B,GAAI,CAEA,IAAMC,EAAeC,EAAqB,gBAAiBF,CAAwB,EAEnFD,EAAS,IAAI,0BAA0BE,CAAY,EAAE,CACzD,OAASE,EAAP,CACMP,EAAI,OACJ,QAAQ,MAAMO,CAAK,CAE3B,CACJ,CAAC,EAEM,CAAC,GAAGJ,CAAQ,CACvB,CACJ,EAEOK,EAAQP","sourcesContent":["import { env } from \"node:process\";\n\nimport type { Config } from \"lint-staged\";\n\nimport getNearestConfigPath from \"../utils/get-nearest-config-path\";\n\nconst group: Config = {\n [`**/*.{${[\"ts\", \"mts\", \"cts\"].join(\",\")}}`]: (filenames: string[]) => {\n const commands = new Set<string>();\n\n filenames.forEach((filePath) => {\n try {\n // eslint-disable-next-line no-template-curly-in-string\n const tsconfigPath = getNearestConfigPath(\"tsconfig.json\", filePath as \"/${string}\") as string;\n\n commands.add(`tsc --noEmit --project ${tsconfigPath}`);\n } catch (error) {\n if (env[\"DEBUG\"]) {\n console.error(error);\n }\n }\n });\n\n return [...commands];\n },\n};\n\nexport default group;\n"]}
1
+ {"version":3,"sources":["../src/groups/typescript.ts"],"names":["env","group","filenames","commands","filePath","tsconfigPath","get_nearest_config_path_default","error","typescript_default"],"mappings":"yCAAA,OAAS,OAAAA,MAAW,UAMpB,IAAMC,EAAgB,CAClB,CAAC,SAAS,CAAC,KAAM,MAAO,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,EAAIC,GAAwB,CACnE,IAAMC,EAAW,IAAI,IAErB,OAAAD,EAAU,QAASE,GAAa,CAC5B,GAAI,CAEA,IAAMC,EAAeC,EAAqB,gBAAiBF,CAAwB,EAEnFD,EAAS,IAAI,0BAA0BE,CAAY,EAAE,CACzD,OAASE,EAAO,CACRP,EAAI,OACJ,QAAQ,MAAMO,CAAK,CAE3B,CACJ,CAAC,EAEM,CAAC,GAAGJ,CAAQ,CACvB,CACJ,EAEOK,EAAQP","sourcesContent":["import { env } from \"node:process\";\n\nimport type { Config } from \"lint-staged\";\n\nimport getNearestConfigPath from \"../utils/get-nearest-config-path\";\n\nconst group: Config = {\n [`**/*.{${[\"ts\", \"mts\", \"cts\"].join(\",\")}}`]: (filenames: string[]) => {\n const commands = new Set<string>();\n\n filenames.forEach((filePath) => {\n try {\n // eslint-disable-next-line no-template-curly-in-string\n const tsconfigPath = getNearestConfigPath(\"tsconfig.json\", filePath as \"/${string}\") as string;\n\n commands.add(`tsc --noEmit --project ${tsconfigPath}`);\n } catch (error) {\n if (env[\"DEBUG\"]) {\n console.error(error);\n }\n }\n });\n\n return [...commands];\n },\n};\n\nexport default group;\n"]}
@@ -1,8 +1,8 @@
1
- import { b } from './chunk-32WCNCA6.mjs';
1
+ import { b } from './chunk-PP4XAK3E.mjs';
2
2
  import { hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
3
3
 
4
4
  global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=hasDependency("markdownlint-cli")||hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=hasDependency("markdownlint-cli2")||hasDevDependency("markdownlint-cli2"));var a={"**/*.md":i=>[`prettier --write ${b(i)}`,...global.hasAnolilabLintStagedMarkdownCli?[`markdownlint --fix --ignore '**/node_modules/**' --ignore '**/CHANGELOG.md' ${b(i)}`]:[],...global.hasAnolilabLintStagedMarkdownCli2?[`markdownlint-cli2 --fix '!**/node_modules/**' '!**/CHANGELOG.md' ${b(i)}`]:[]],"**/*.mdx":i=>[`prettier --write ${b(i)}`]},r=a;
5
5
 
6
6
  export { r as a };
7
7
  //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-KNLP6LX4.mjs.map
8
+ //# sourceMappingURL=chunk-LT6BJJE6.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk26UFUGBI_js = require('./chunk-26UFUGBI.js');
3
+ var chunkKP7AH4EU_js = require('./chunk-KP7AH4EU.js');
4
4
  var packageJsonUtils = require('@anolilab/package-json-utils');
5
5
 
6
- global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=packageJsonUtils.hasDependency("markdownlint-cli")||packageJsonUtils.hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=packageJsonUtils.hasDependency("markdownlint-cli2")||packageJsonUtils.hasDevDependency("markdownlint-cli2"));var a={"**/*.md":i=>[`prettier --write ${chunk26UFUGBI_js.b(i)}`,...global.hasAnolilabLintStagedMarkdownCli?[`markdownlint --fix --ignore '**/node_modules/**' --ignore '**/CHANGELOG.md' ${chunk26UFUGBI_js.b(i)}`]:[],...global.hasAnolilabLintStagedMarkdownCli2?[`markdownlint-cli2 --fix '!**/node_modules/**' '!**/CHANGELOG.md' ${chunk26UFUGBI_js.b(i)}`]:[]],"**/*.mdx":i=>[`prettier --write ${chunk26UFUGBI_js.b(i)}`]},r=a;
6
+ global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=packageJsonUtils.hasDependency("markdownlint-cli")||packageJsonUtils.hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=packageJsonUtils.hasDependency("markdownlint-cli2")||packageJsonUtils.hasDevDependency("markdownlint-cli2"));var a={"**/*.md":i=>[`prettier --write ${chunkKP7AH4EU_js.b(i)}`,...global.hasAnolilabLintStagedMarkdownCli?[`markdownlint --fix --ignore '**/node_modules/**' --ignore '**/CHANGELOG.md' ${chunkKP7AH4EU_js.b(i)}`]:[],...global.hasAnolilabLintStagedMarkdownCli2?[`markdownlint-cli2 --fix '!**/node_modules/**' '!**/CHANGELOG.md' ${chunkKP7AH4EU_js.b(i)}`]:[]],"**/*.mdx":i=>[`prettier --write ${chunkKP7AH4EU_js.b(i)}`]},r=a;
7
7
 
8
8
  exports.a = r;
9
9
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-CZNOXHD3.js.map
10
+ //# sourceMappingURL=chunk-NCVPRYTB.js.map
@@ -0,0 +1,8 @@
1
+ import { quote } from 'shell-quote';
2
+ import { platform, env } from 'process';
3
+
4
+ var n=platform==="win32"||/^(msys|cygwin)$/u.test(env.OSTYPE??""),t=n;var p=i=>i.map(o=>`"${t?o:quote([o])}"`).join(" "),d=p;
5
+
6
+ export { t as a, d as b };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-PP4XAK3E.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/concat-files.ts","../src/utils/is-windows.ts"],"names":["quote","env","platform","isWindows","is_windows_default","concatFiles","filenames","filename","concat_files_default"],"mappings":"AAAA,OAAS,SAAAA,MAAa,cCAtB,OAAS,OAAAC,EAAK,YAAAC,MAAgB,UAG9B,IAAMC,EAAYD,IAAa,SAAW,kBAAkB,KAAKD,EAAI,QAAa,EAAE,EAE7EG,EAAQD,EDUf,IAAME,EAAeC,GAAgCA,EAAU,IAAKC,GAAa,IAAIH,EAAYG,EAAWP,EAAM,CAACO,CAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAEnIC,EAAQH","sourcesContent":["import { quote } from \"shell-quote\";\n\nimport isWindows from \"./is-windows\";\n\n/**\n * Concatenate and escape a list of filenames that can be passed as args to prettier cli\n *\n * Prettier and Stylelint have an issue with special characters in filenames,\n * such as the ones uses for Next.js dynamic routes (ie: [id].tsx...)\n *\n * @link https://github.com/okonet/lint-staged/issues/676\n *\n * @param {string[]} filenames\n * @returns {string} Return concatenated and escaped filenames\n */\nconst concatFiles = (filenames: string[]): string => filenames.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`).join(\" \");\n\nexport default concatFiles;\n","import { env, platform } from \"node:process\";\n\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst isWindows = platform === \"win32\" || /^(msys|cygwin)$/.test(env[\"OSTYPE\"] ?? \"\");\n\nexport default isWindows;\n"]}
1
+ {"version":3,"sources":["../src/utils/concat-files.ts","../src/utils/is-windows.ts"],"names":["quote","env","platform","isWindows","is_windows_default","concatFiles","filenames","filename","concat_files_default"],"mappings":"AAAA,OAAS,SAAAA,MAAa,cCAtB,OAAS,OAAAC,EAAK,YAAAC,MAAgB,UAG9B,IAAMC,EAAYD,IAAa,SAAW,mBAAmB,KAAKD,EAAI,QAAa,EAAE,EAE9EG,EAAQD,EDUf,IAAME,EAAeC,GAAgCA,EAAU,IAAKC,GAAa,IAAIH,EAAYG,EAAWP,EAAM,CAACO,CAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAEnIC,EAAQH","sourcesContent":["import { quote } from \"shell-quote\";\n\nimport isWindows from \"./is-windows\";\n\n/**\n * Concatenate and escape a list of filenames that can be passed as args to prettier cli\n *\n * Prettier and Stylelint have an issue with special characters in filenames,\n * such as the ones uses for Next.js dynamic routes (ie: [id].tsx...)\n *\n * @link https://github.com/okonet/lint-staged/issues/676\n *\n * @param {string[]} filenames\n * @returns {string} Return concatenated and escaped filenames\n */\nconst concatFiles = (filenames: string[]): string => filenames.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`).join(\" \");\n\nexport default concatFiles;\n","import { env, platform } from \"node:process\";\n\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst isWindows = platform === \"win32\" || /^(msys|cygwin)$/u.test(env[\"OSTYPE\"] ?? \"\");\n\nexport default isWindows;\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk26UFUGBI_js = require('./chunk-26UFUGBI.js');
3
+ var chunkKP7AH4EU_js = require('./chunk-KP7AH4EU.js');
4
4
  var packageJsonUtils = require('@anolilab/package-json-utils');
5
5
 
6
- var a=packageJsonUtils.hasDependency("sort-package-json")||packageJsonUtils.hasDevDependency("sort-package-json"),t={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:o=>[`prettier --write ${chunk26UFUGBI_js.b(o)}`],...a?{"package.json,{packages,apps}/*/package.json":o=>[`sort-package-json ${chunk26UFUGBI_js.b(o)}`]}:{}},c=t;
6
+ var a=packageJsonUtils.hasDependency("sort-package-json")||packageJsonUtils.hasDevDependency("sort-package-json"),t={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:o=>[`prettier --write ${chunkKP7AH4EU_js.b(o)}`],...a?{"package.json,{packages,apps}/*/package.json":o=>[`sort-package-json ${chunkKP7AH4EU_js.b(o)}`]}:{}},c=t;
7
7
 
8
8
  exports.a = c;
9
9
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-GWSF22B6.js.map
10
+ //# sourceMappingURL=chunk-RGGA3MP6.js.map
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkKP7AH4EU_js = require('./chunk-KP7AH4EU.js');
4
+
5
+ var i={[`**/*.{${["css","sass","scss","less"].join(",")}}`]:t=>[`prettier --ignore-unknown --write ${chunkKP7AH4EU_js.b(t)}`,"stylelint --fix"]},n=i;
6
+
7
+ exports.a = n;
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=chunk-YMKHL6BJ.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkOOLGGS6M_js = require('../../chunk-OOLGGS6M.js');
3
+ var chunk6MD4FED2_js = require('../../chunk-6MD4FED2.js');
4
4
  require('../../chunk-VU6SMFTD.js');
5
- require('../../chunk-26UFUGBI.js');
5
+ require('../../chunk-KP7AH4EU.js');
6
6
 
7
7
 
8
8
 
9
- module.exports = chunkOOLGGS6M_js.b;
9
+ module.exports = chunk6MD4FED2_js.b;
10
10
  //# sourceMappingURL=out.js.map
11
11
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- export { b as default } from '../../chunk-254HTULG.mjs';
1
+ export { b as default } from '../../chunk-D7P2AGNT.mjs';
2
2
  import '../../chunk-HGDREIGE.mjs';
3
- import '../../chunk-32WCNCA6.mjs';
3
+ import '../../chunk-PP4XAK3E.mjs';
4
4
  //# sourceMappingURL=out.js.map
5
5
  //# sourceMappingURL=index.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkGWSF22B6_js = require('../chunk-GWSF22B6.js');
4
- require('../chunk-26UFUGBI.js');
3
+ var chunkRGGA3MP6_js = require('../chunk-RGGA3MP6.js');
4
+ require('../chunk-KP7AH4EU.js');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkGWSF22B6_js.a;
8
+ module.exports = chunkRGGA3MP6_js.a;
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=json.js.map
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-YBLR7X5F.mjs';
2
- import '../chunk-32WCNCA6.mjs';
1
+ export { a as default } from '../chunk-D5BUC6OA.mjs';
2
+ import '../chunk-PP4XAK3E.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=json.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkCZNOXHD3_js = require('../chunk-CZNOXHD3.js');
4
- require('../chunk-26UFUGBI.js');
3
+ var chunkNCVPRYTB_js = require('../chunk-NCVPRYTB.js');
4
+ require('../chunk-KP7AH4EU.js');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkCZNOXHD3_js.a;
8
+ module.exports = chunkNCVPRYTB_js.a;
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=markdown.js.map
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-KNLP6LX4.mjs';
2
- import '../chunk-32WCNCA6.mjs';
1
+ export { a as default } from '../chunk-LT6BJJE6.mjs';
2
+ import '../chunk-PP4XAK3E.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=markdown.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkFZFCZD6I_js = require('../chunk-FZFCZD6I.js');
4
- require('../chunk-26UFUGBI.js');
3
+ var chunkYMKHL6BJ_js = require('../chunk-YMKHL6BJ.js');
4
+ require('../chunk-KP7AH4EU.js');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkFZFCZD6I_js.a;
8
+ module.exports = chunkYMKHL6BJ_js.a;
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=stylesheets.js.map
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-DLOH44BB.mjs';
2
- import '../chunk-32WCNCA6.mjs';
1
+ export { a as default } from '../chunk-APQ2ZVEY.mjs';
2
+ import '../chunk-PP4XAK3E.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=stylesheets.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkVAUDCZ4C_js = require('../chunk-VAUDCZ4C.js');
4
- require('../chunk-26UFUGBI.js');
3
+ var chunk7A56VADI_js = require('../chunk-7A56VADI.js');
4
+ require('../chunk-KP7AH4EU.js');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkVAUDCZ4C_js.a;
8
+ module.exports = chunk7A56VADI_js.a;
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=tests.js.map
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-7NERYZQR.mjs';
2
- import '../chunk-32WCNCA6.mjs';
1
+ export { a as default } from '../chunk-GVPCY2MG.mjs';
2
+ import '../chunk-PP4XAK3E.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=tests.mjs.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkIOWFTBT4_js = require('../chunk-IOWFTBT4.js');
3
+ var chunkAOGKJLJV_js = require('../chunk-AOGKJLJV.js');
4
4
  require('../chunk-VU6SMFTD.js');
5
5
 
6
6
 
7
7
 
8
- module.exports = chunkIOWFTBT4_js.a;
8
+ module.exports = chunkAOGKJLJV_js.a;
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=typescript.js.map
@@ -1,4 +1,4 @@
1
- export { a as default } from '../chunk-BQEQMF7R.mjs';
1
+ export { a as default } from '../chunk-KYQ2HO44.mjs';
2
2
  import '../chunk-HGDREIGE.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=typescript.mjs.map
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkIOWFTBT4_js = require('./chunk-IOWFTBT4.js');
4
- var chunkOOLGGS6M_js = require('./chunk-OOLGGS6M.js');
3
+ var chunkAOGKJLJV_js = require('./chunk-AOGKJLJV.js');
4
+ var chunk6MD4FED2_js = require('./chunk-6MD4FED2.js');
5
5
  require('./chunk-VU6SMFTD.js');
6
- var chunkGWSF22B6_js = require('./chunk-GWSF22B6.js');
7
- var chunkCZNOXHD3_js = require('./chunk-CZNOXHD3.js');
6
+ var chunkRGGA3MP6_js = require('./chunk-RGGA3MP6.js');
7
+ var chunkNCVPRYTB_js = require('./chunk-NCVPRYTB.js');
8
8
  var chunk6EWZW5LF_js = require('./chunk-6EWZW5LF.js');
9
- var chunkFZFCZD6I_js = require('./chunk-FZFCZD6I.js');
10
- var chunkVAUDCZ4C_js = require('./chunk-VAUDCZ4C.js');
11
- require('./chunk-26UFUGBI.js');
9
+ var chunkYMKHL6BJ_js = require('./chunk-YMKHL6BJ.js');
10
+ var chunk7A56VADI_js = require('./chunk-7A56VADI.js');
11
+ require('./chunk-KP7AH4EU.js');
12
12
  var process = require('process');
13
13
  var packageJsonUtils = require('@anolilab/package-json-utils');
14
14
 
15
- var y=[{config:chunkOOLGGS6M_js.b,configName:"eslint",dependencies:["prettier","eslint"]},{config:chunkGWSF22B6_js.a,configName:"json",dependencies:["prettier","sort-package-json"]},{config:chunkCZNOXHD3_js.a,configName:"markdown",dependencies:["prettier","markdownlint-cli","markdownlint-cli2"]},{config:chunk6EWZW5LF_js.a,configName:"secretlint",dependencies:["secretlint"]},{config:chunkFZFCZD6I_js.a,configName:"stylesheets",dependencies:["stylelint"]},{config:chunkVAUDCZ4C_js.a,configName:"tests",dependencies:["vite","jest","ava"]},{config:chunkIOWFTBT4_js.a,configName:"typescript",dependencies:["typescript"]}],g={},r=[],a={};y.forEach(t=>{let{config:n,configName:i,dependencies:l}=t;if(chunkOOLGGS6M_js.a.plugin?.[i]!==!1){let s=[];l.forEach(e=>{(packageJsonUtils.hasDependency(e)||packageJsonUtils.hasDevDependency(e))&&s.push(e);}),s.length>0?(g={...g,...n},r.push(i)):(a[i]={},l.forEach(e=>{a[i][e]=packageJsonUtils.hasDependency(e)||packageJsonUtils.hasDevDependency(e);}));}});var w={...g};var j=()=>{},k=t=>process.env.NO_LOGS?j:n=>console.log(`${t}${n}`),O=k(""),o=O;if(!global.hasAnolilabStagedLintConfigLoaded){process.env.DEBUG&&(o(`
15
+ var y=[{config:chunk6MD4FED2_js.b,configName:"eslint",dependencies:["prettier","eslint"]},{config:chunkRGGA3MP6_js.a,configName:"json",dependencies:["prettier","sort-package-json"]},{config:chunkNCVPRYTB_js.a,configName:"markdown",dependencies:["prettier","markdownlint-cli","markdownlint-cli2"]},{config:chunk6EWZW5LF_js.a,configName:"secretlint",dependencies:["secretlint"]},{config:chunkYMKHL6BJ_js.a,configName:"stylesheets",dependencies:["stylelint"]},{config:chunk7A56VADI_js.a,configName:"tests",dependencies:["vite","jest","ava"]},{config:chunkAOGKJLJV_js.a,configName:"typescript",dependencies:["typescript"]}],g={},r=[],a={};y.forEach(t=>{let{config:n,configName:i,dependencies:l}=t;if(chunk6MD4FED2_js.a.plugin?.[i]!==!1){let s=[];l.forEach(e=>{(packageJsonUtils.hasDependency(e)||packageJsonUtils.hasDevDependency(e))&&s.push(e);}),s.length>0?(g={...g,...n},r.push(i)):(a[i]={},l.forEach(e=>{a[i][e]=packageJsonUtils.hasDependency(e)||packageJsonUtils.hasDevDependency(e);}));}});var w={...g};var j=()=>{},k=t=>process.env.NO_LOGS?j:n=>console.log(`${t}${n}`),O=k(""),o=O;if(!global.hasAnolilabStagedLintConfigLoaded){process.env.DEBUG&&(o(`
16
16
  @anolilab/lint-stage-config loaded the following plugins:
17
17
  `),r.forEach(n=>{o(` ${n}`);}));let t=!1;Object.entries(a).forEach(([n,i])=>{Object.values(i).some(Boolean)&&(t=!0,o(`
18
18
  Your package.json container dependencies for the "${n}" plugin, please add the following dependencies with your chosen package manager to enable this plugin:`),Object.entries(i).forEach(([s,e])=>{e||o(` ${s}`);}));}),t&&(o(`
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import { a as a$7 } from './chunk-BQEQMF7R.mjs';
2
- import { a as a$1, b } from './chunk-254HTULG.mjs';
1
+ import { a as a$7 } from './chunk-KYQ2HO44.mjs';
2
+ import { a as a$1, b } from './chunk-D7P2AGNT.mjs';
3
3
  import './chunk-HGDREIGE.mjs';
4
- import { a as a$2 } from './chunk-YBLR7X5F.mjs';
5
- import { a as a$3 } from './chunk-KNLP6LX4.mjs';
4
+ import { a as a$2 } from './chunk-D5BUC6OA.mjs';
5
+ import { a as a$3 } from './chunk-LT6BJJE6.mjs';
6
6
  import { a as a$4 } from './chunk-4RVIFLAT.mjs';
7
- import { a as a$5 } from './chunk-DLOH44BB.mjs';
8
- import { a as a$6 } from './chunk-7NERYZQR.mjs';
9
- import './chunk-32WCNCA6.mjs';
7
+ import { a as a$5 } from './chunk-APQ2ZVEY.mjs';
8
+ import { a as a$6 } from './chunk-GVPCY2MG.mjs';
9
+ import './chunk-PP4XAK3E.mjs';
10
10
  import { env } from 'process';
11
11
  import { hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
12
12
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/postinstall.ts"],"names":["existsSync","mkdir","writeFile","join","exit","promisify","hasDependency","hasDevDependency","packageIsTypeModule","projectPath","writeFileAsync","mkdirAsync","configFile","checkIfFileExists","filename","writeLintstagedRc","lintstagedPath","writeHuskyFiles","huskyFolderPath","commonShPath","preCommitPath","hasPnpm","get_nearest_config_path_default","prepareCommitMessagePath","error"],"mappings":"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","sourcesContent":["import { existsSync, mkdir, writeFile } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { exit } from \"node:process\";\nimport { promisify } from \"node:util\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, projectPath } from \"@anolilab/package-json-utils\";\n\nimport getNearestConfigPath from \"./utils/get-nearest-config-path\";\n\nif (process.env[\"CI\"]) {\n exit(0);\n}\n\nconst writeFileAsync = promisify(writeFile);\nconst mkdirAsync = promisify(mkdir);\n\nconsole.log(\"Configuring @anolilab/lint-staged-config\", projectPath, \"\\n\");\n\nconst configFile = \".lintstagedrc\";\n\nconst checkIfFileExists = (filename: string): boolean => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filename)) {\n console.warn(`⚠️ ${filename} already exists;`);\n\n return true;\n }\n\n return false;\n};\n\n/**\n * Writes .lintstagedrc.js if it doesn't exist. Warns if it exists.\n */\nconst writeLintstagedRc = async () => {\n // eslint-disable-next-line no-restricted-syntax\n for (const filename of [\n configFile,\n `${configFile}.js`,\n `${configFile}.cjs`,\n `${configFile}.mjs`,\n `${configFile}.json`,\n `${configFile}.yaml`,\n `${configFile}.yml`,\n \"lint-staged.config.js\",\n \"lint-staged.config.mjs\",\n \"lint-staged.config.cjs\",\n ]) {\n if (checkIfFileExists(join(projectPath, filename))) {\n return;\n }\n }\n\n const lintstagedPath = join(projectPath, \".lintstagedrc.js\");\n\n const content = `${packageIsTypeModule ? 'import config from \"@anolilab/lint-staged-config\"' : 'const config = require(\"@anolilab/lint-staged-config\")'};\n\n${packageIsTypeModule ? \"export default\" : \"module.exports =\"} {\n ...config,\n};\n`;\n\n await writeFileAsync(lintstagedPath, content, \"utf-8\");\n};\n\n/**\n * Adds husky hooks to .husky folder if they don't exist. Warns if they exist.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst writeHuskyFiles = async () => {\n const hasHusky = hasDependency(\"husky\") || hasDevDependency(\"husky\");\n\n if (!hasHusky) {\n console.warn(\"⚠️ husky is not installed;\");\n\n return;\n }\n\n const huskyFolderPath = join(projectPath, \".husky\");\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(huskyFolderPath)) {\n await mkdirAsync(huskyFolderPath);\n }\n\n const commonShPath = join(huskyFolderPath, \"common.sh\");\n\n if (!checkIfFileExists(commonShPath)) {\n await writeFileAsync(\n commonShPath,\n `#!/bin/sh\n\ncommand_exists () {\n command -v \"$1\" >/dev/null 2>&1\n}\n\nIS_WINDOWS=\"false\"\n\nif [ \"$OSTYPE\" = \"cygwin\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"msys\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"win32\" ]; then\n IS_WINDOWS=\"true\"\nfi\n\n# Workaround for Windows 10, Git Bash and Yarn\nif [ \"$IS_WINDOWS\" = \"true\" ]; then\n if command_exists winpty && test -t 1; then\n exec < /dev/tty\n fi\nfi\n`,\n \"utf-8\",\n );\n }\n\n const preCommitPath = join(huskyFolderPath, \"pre-commit\");\n\n let hasPnpm = false;\n\n try {\n getNearestConfigPath(\"pnpm-lock.yaml\");\n\n hasPnpm = true;\n } catch {\n hasPnpm = false;\n\n // ignore\n }\n\n if (!checkIfFileExists(preCommitPath)) {\n await writeFileAsync(\n preCommitPath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\n# The hook should exit with non-zero status after issuing\n# an appropriate message if it wants to stop the commit.\n\necho --------------------------------------------\necho Starting Git hook: pre-commit\n\n${hasPnpm ? \"pnpx\" : \"npx\"} lint-staged --verbose --concurrent false\n\necho Finished Git hook: pre-commit\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n\n const prepareCommitMessagePath = join(huskyFolderPath, \"prepare-commit-msg\");\n const hasCz = hasDependency(\"commitizen\") || hasDevDependency(\"commitizen\");\n\n if (hasCz && !checkIfFileExists(prepareCommitMessagePath)) {\n await writeFileAsync(\n prepareCommitMessagePath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\necho --------------------------------------------\necho Starting Git hook: prepare-commit-msg\n\n# if we hve a cmd that is running ${hasPnpm ? \"pnpx\" : \"npx\"} cz that means finalize and commit\nFILE=commit.cmd\nif test -f \"$FILE\"; then\n echo \"$FILE exists.\"\n rm commit.cmd\n exit 0;\nfi\n# if on Windows, spawn a cmd that will run ${hasPnpm ? \"pnpx\" : \"npx\"} cz\ncase \\`uname\\` in\n *CYGWIN*|*MINGW*|*MSYS* )\n # Only run commitizen if no commit message was already provided.\n if [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n echo \"${hasPnpm ? \"pnpx\" : \"npx\"} cz && exit\" > commit.cmd\n start commit.cmd\n exit 1;\n fi\n\n exit 0;;\nesac\n\n# Only run commitizen if no commit message was already provided.\nif [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n # By default git hooks are not interactive. exec < /dev/tty allows a users terminal to interact with commitizen.\n exec < /dev/tty && ${hasPnpm ? \"pnpx\" : \"npx\"} cz --hook || true\nfi\n\necho Finished Git hook: prepare-commit-msg\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n};\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\n(async () => {\n try {\n await writeLintstagedRc();\n await writeHuskyFiles();\n\n console.log(\"😎 Everything went well, have fun!\");\n\n exit(0);\n } catch (error) {\n console.log(\"😬 something went wrong:\");\n console.error(error);\n\n exit(1);\n }\n})();\n"]}
1
+ {"version":3,"sources":["../src/postinstall.ts"],"names":["existsSync","mkdir","writeFile","join","exit","promisify","hasDependency","hasDevDependency","packageIsTypeModule","projectPath","writeFileAsync","mkdirAsync","configFile","checkIfFileExists","filename","writeLintstagedRc","lintstagedPath","writeHuskyFiles","huskyFolderPath","commonShPath","preCommitPath","hasPnpm","get_nearest_config_path_default","prepareCommitMessagePath","error"],"mappings":"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","sourcesContent":["import { existsSync, mkdir, writeFile } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { exit } from \"node:process\";\nimport { promisify } from \"node:util\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, projectPath } from \"@anolilab/package-json-utils\";\n\nimport getNearestConfigPath from \"./utils/get-nearest-config-path\";\n\nif (process.env[\"CI\"]) {\n exit(0);\n}\n\nconst writeFileAsync = promisify(writeFile);\nconst mkdirAsync = promisify(mkdir);\n\nconsole.log(\"Configuring @anolilab/lint-staged-config\", projectPath, \"\\n\");\n\nconst configFile = \".lintstagedrc\";\n\nconst checkIfFileExists = (filename: string): boolean => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filename)) {\n console.warn(`⚠️ ${filename} already exists;`);\n\n return true;\n }\n\n return false;\n};\n\n/**\n * Writes .lintstagedrc.js if it doesn't exist. Warns if it exists.\n */\nconst writeLintstagedRc = async () => {\n // eslint-disable-next-line no-restricted-syntax,no-loops/no-loops\n for (const filename of [\n configFile,\n `${configFile}.js`,\n `${configFile}.cjs`,\n `${configFile}.mjs`,\n `${configFile}.json`,\n `${configFile}.yaml`,\n `${configFile}.yml`,\n \"lint-staged.config.js\",\n \"lint-staged.config.mjs\",\n \"lint-staged.config.cjs\",\n ]) {\n if (checkIfFileExists(join(projectPath, filename))) {\n return;\n }\n }\n\n const lintstagedPath = join(projectPath, \".lintstagedrc.js\");\n\n const content = `${packageIsTypeModule ? 'import config from \"@anolilab/lint-staged-config\"' : 'const config = require(\"@anolilab/lint-staged-config\")'};\n\n${packageIsTypeModule ? \"export default\" : \"module.exports =\"} {\n ...config,\n};\n`;\n\n await writeFileAsync(lintstagedPath, content, \"utf-8\");\n};\n\n/**\n * Adds husky hooks to .husky folder if they don't exist. Warns if they exist.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst writeHuskyFiles = async () => {\n const hasHusky = hasDependency(\"husky\") || hasDevDependency(\"husky\");\n\n if (!hasHusky) {\n console.warn(\"⚠️ husky is not installed;\");\n\n return;\n }\n\n const huskyFolderPath = join(projectPath, \".husky\");\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(huskyFolderPath)) {\n await mkdirAsync(huskyFolderPath);\n }\n\n const commonShPath = join(huskyFolderPath, \"common.sh\");\n\n if (!checkIfFileExists(commonShPath)) {\n await writeFileAsync(\n commonShPath,\n `#!/bin/sh\n\ncommand_exists () {\n command -v \"$1\" >/dev/null 2>&1\n}\n\nIS_WINDOWS=\"false\"\n\nif [ \"$OSTYPE\" = \"cygwin\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"msys\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"win32\" ]; then\n IS_WINDOWS=\"true\"\nfi\n\n# Workaround for Windows 10, Git Bash and Yarn\nif [ \"$IS_WINDOWS\" = \"true\" ]; then\n if command_exists winpty && test -t 1; then\n exec < /dev/tty\n fi\nfi\n`,\n \"utf-8\",\n );\n }\n\n const preCommitPath = join(huskyFolderPath, \"pre-commit\");\n\n let hasPnpm = false;\n\n try {\n getNearestConfigPath(\"pnpm-lock.yaml\");\n\n hasPnpm = true;\n } catch {\n hasPnpm = false;\n\n // ignore\n }\n\n if (!checkIfFileExists(preCommitPath)) {\n await writeFileAsync(\n preCommitPath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\n# The hook should exit with non-zero status after issuing\n# an appropriate message if it wants to stop the commit.\n\necho --------------------------------------------\necho Starting Git hook: pre-commit\n\n${hasPnpm ? \"pnpx\" : \"npx\"} lint-staged --verbose --concurrent false\n\necho Finished Git hook: pre-commit\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n\n const prepareCommitMessagePath = join(huskyFolderPath, \"prepare-commit-msg\");\n const hasCz = hasDependency(\"commitizen\") || hasDevDependency(\"commitizen\");\n\n if (hasCz && !checkIfFileExists(prepareCommitMessagePath)) {\n await writeFileAsync(\n prepareCommitMessagePath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\necho --------------------------------------------\necho Starting Git hook: prepare-commit-msg\n\n# if we hve a cmd that is running ${hasPnpm ? \"pnpx\" : \"npx\"} cz that means finalize and commit\nFILE=commit.cmd\nif test -f \"$FILE\"; then\n echo \"$FILE exists.\"\n rm commit.cmd\n exit 0;\nfi\n# if on Windows, spawn a cmd that will run ${hasPnpm ? \"pnpx\" : \"npx\"} cz\ncase \\`uname\\` in\n *CYGWIN*|*MINGW*|*MSYS* )\n # Only run commitizen if no commit message was already provided.\n if [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n echo \"${hasPnpm ? \"pnpx\" : \"npx\"} cz && exit\" > commit.cmd\n start commit.cmd\n exit 1;\n fi\n\n exit 0;;\nesac\n\n# Only run commitizen if no commit message was already provided.\nif [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n # By default git hooks are not interactive. exec < /dev/tty allows a users terminal to interact with commitizen.\n exec < /dev/tty && ${hasPnpm ? \"pnpx\" : \"npx\"} cz --hook || true\nfi\n\necho Finished Git hook: prepare-commit-msg\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n};\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\n(async () => {\n try {\n await writeLintstagedRc();\n await writeHuskyFiles();\n\n console.log(\"😎 Everything went well, have fun!\");\n\n exit(0);\n } catch (error) {\n console.log(\"😬 something went wrong:\");\n console.error(error);\n\n exit(1);\n }\n})();\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/postinstall.ts"],"names":["existsSync","mkdir","writeFile","join","exit","promisify","hasDependency","hasDevDependency","packageIsTypeModule","projectPath","writeFileAsync","mkdirAsync","configFile","checkIfFileExists","filename","writeLintstagedRc","lintstagedPath","writeHuskyFiles","huskyFolderPath","commonShPath","preCommitPath","hasPnpm","get_nearest_config_path_default","prepareCommitMessagePath","error"],"mappings":"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","sourcesContent":["import { existsSync, mkdir, writeFile } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { exit } from \"node:process\";\nimport { promisify } from \"node:util\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, projectPath } from \"@anolilab/package-json-utils\";\n\nimport getNearestConfigPath from \"./utils/get-nearest-config-path\";\n\nif (process.env[\"CI\"]) {\n exit(0);\n}\n\nconst writeFileAsync = promisify(writeFile);\nconst mkdirAsync = promisify(mkdir);\n\nconsole.log(\"Configuring @anolilab/lint-staged-config\", projectPath, \"\\n\");\n\nconst configFile = \".lintstagedrc\";\n\nconst checkIfFileExists = (filename: string): boolean => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filename)) {\n console.warn(`⚠️ ${filename} already exists;`);\n\n return true;\n }\n\n return false;\n};\n\n/**\n * Writes .lintstagedrc.js if it doesn't exist. Warns if it exists.\n */\nconst writeLintstagedRc = async () => {\n // eslint-disable-next-line no-restricted-syntax\n for (const filename of [\n configFile,\n `${configFile}.js`,\n `${configFile}.cjs`,\n `${configFile}.mjs`,\n `${configFile}.json`,\n `${configFile}.yaml`,\n `${configFile}.yml`,\n \"lint-staged.config.js\",\n \"lint-staged.config.mjs\",\n \"lint-staged.config.cjs\",\n ]) {\n if (checkIfFileExists(join(projectPath, filename))) {\n return;\n }\n }\n\n const lintstagedPath = join(projectPath, \".lintstagedrc.js\");\n\n const content = `${packageIsTypeModule ? 'import config from \"@anolilab/lint-staged-config\"' : 'const config = require(\"@anolilab/lint-staged-config\")'};\n\n${packageIsTypeModule ? \"export default\" : \"module.exports =\"} {\n ...config,\n};\n`;\n\n await writeFileAsync(lintstagedPath, content, \"utf-8\");\n};\n\n/**\n * Adds husky hooks to .husky folder if they don't exist. Warns if they exist.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst writeHuskyFiles = async () => {\n const hasHusky = hasDependency(\"husky\") || hasDevDependency(\"husky\");\n\n if (!hasHusky) {\n console.warn(\"⚠️ husky is not installed;\");\n\n return;\n }\n\n const huskyFolderPath = join(projectPath, \".husky\");\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(huskyFolderPath)) {\n await mkdirAsync(huskyFolderPath);\n }\n\n const commonShPath = join(huskyFolderPath, \"common.sh\");\n\n if (!checkIfFileExists(commonShPath)) {\n await writeFileAsync(\n commonShPath,\n `#!/bin/sh\n\ncommand_exists () {\n command -v \"$1\" >/dev/null 2>&1\n}\n\nIS_WINDOWS=\"false\"\n\nif [ \"$OSTYPE\" = \"cygwin\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"msys\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"win32\" ]; then\n IS_WINDOWS=\"true\"\nfi\n\n# Workaround for Windows 10, Git Bash and Yarn\nif [ \"$IS_WINDOWS\" = \"true\" ]; then\n if command_exists winpty && test -t 1; then\n exec < /dev/tty\n fi\nfi\n`,\n \"utf-8\",\n );\n }\n\n const preCommitPath = join(huskyFolderPath, \"pre-commit\");\n\n let hasPnpm = false;\n\n try {\n getNearestConfigPath(\"pnpm-lock.yaml\");\n\n hasPnpm = true;\n } catch {\n hasPnpm = false;\n\n // ignore\n }\n\n if (!checkIfFileExists(preCommitPath)) {\n await writeFileAsync(\n preCommitPath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\n# The hook should exit with non-zero status after issuing\n# an appropriate message if it wants to stop the commit.\n\necho --------------------------------------------\necho Starting Git hook: pre-commit\n\n${hasPnpm ? \"pnpx\" : \"npx\"} lint-staged --verbose --concurrent false\n\necho Finished Git hook: pre-commit\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n\n const prepareCommitMessagePath = join(huskyFolderPath, \"prepare-commit-msg\");\n const hasCz = hasDependency(\"commitizen\") || hasDevDependency(\"commitizen\");\n\n if (hasCz && !checkIfFileExists(prepareCommitMessagePath)) {\n await writeFileAsync(\n prepareCommitMessagePath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\necho --------------------------------------------\necho Starting Git hook: prepare-commit-msg\n\n# if we hve a cmd that is running ${hasPnpm ? \"pnpx\" : \"npx\"} cz that means finalize and commit\nFILE=commit.cmd\nif test -f \"$FILE\"; then\n echo \"$FILE exists.\"\n rm commit.cmd\n exit 0;\nfi\n# if on Windows, spawn a cmd that will run ${hasPnpm ? \"pnpx\" : \"npx\"} cz\ncase \\`uname\\` in\n *CYGWIN*|*MINGW*|*MSYS* )\n # Only run commitizen if no commit message was already provided.\n if [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n echo \"${hasPnpm ? \"pnpx\" : \"npx\"} cz && exit\" > commit.cmd\n start commit.cmd\n exit 1;\n fi\n\n exit 0;;\nesac\n\n# Only run commitizen if no commit message was already provided.\nif [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n # By default git hooks are not interactive. exec < /dev/tty allows a users terminal to interact with commitizen.\n exec < /dev/tty && ${hasPnpm ? \"pnpx\" : \"npx\"} cz --hook || true\nfi\n\necho Finished Git hook: prepare-commit-msg\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n};\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\n(async () => {\n try {\n await writeLintstagedRc();\n await writeHuskyFiles();\n\n console.log(\"😎 Everything went well, have fun!\");\n\n exit(0);\n } catch (error) {\n console.log(\"😬 something went wrong:\");\n console.error(error);\n\n exit(1);\n }\n})();\n"]}
1
+ {"version":3,"sources":["../src/postinstall.ts"],"names":["existsSync","mkdir","writeFile","join","exit","promisify","hasDependency","hasDevDependency","packageIsTypeModule","projectPath","writeFileAsync","mkdirAsync","configFile","checkIfFileExists","filename","writeLintstagedRc","lintstagedPath","writeHuskyFiles","huskyFolderPath","commonShPath","preCommitPath","hasPnpm","get_nearest_config_path_default","prepareCommitMessagePath","error"],"mappings":"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","sourcesContent":["import { existsSync, mkdir, writeFile } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { exit } from \"node:process\";\nimport { promisify } from \"node:util\";\n\nimport { hasDependency, hasDevDependency, packageIsTypeModule, projectPath } from \"@anolilab/package-json-utils\";\n\nimport getNearestConfigPath from \"./utils/get-nearest-config-path\";\n\nif (process.env[\"CI\"]) {\n exit(0);\n}\n\nconst writeFileAsync = promisify(writeFile);\nconst mkdirAsync = promisify(mkdir);\n\nconsole.log(\"Configuring @anolilab/lint-staged-config\", projectPath, \"\\n\");\n\nconst configFile = \".lintstagedrc\";\n\nconst checkIfFileExists = (filename: string): boolean => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(filename)) {\n console.warn(`⚠️ ${filename} already exists;`);\n\n return true;\n }\n\n return false;\n};\n\n/**\n * Writes .lintstagedrc.js if it doesn't exist. Warns if it exists.\n */\nconst writeLintstagedRc = async () => {\n // eslint-disable-next-line no-restricted-syntax,no-loops/no-loops\n for (const filename of [\n configFile,\n `${configFile}.js`,\n `${configFile}.cjs`,\n `${configFile}.mjs`,\n `${configFile}.json`,\n `${configFile}.yaml`,\n `${configFile}.yml`,\n \"lint-staged.config.js\",\n \"lint-staged.config.mjs\",\n \"lint-staged.config.cjs\",\n ]) {\n if (checkIfFileExists(join(projectPath, filename))) {\n return;\n }\n }\n\n const lintstagedPath = join(projectPath, \".lintstagedrc.js\");\n\n const content = `${packageIsTypeModule ? 'import config from \"@anolilab/lint-staged-config\"' : 'const config = require(\"@anolilab/lint-staged-config\")'};\n\n${packageIsTypeModule ? \"export default\" : \"module.exports =\"} {\n ...config,\n};\n`;\n\n await writeFileAsync(lintstagedPath, content, \"utf-8\");\n};\n\n/**\n * Adds husky hooks to .husky folder if they don't exist. Warns if they exist.\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst writeHuskyFiles = async () => {\n const hasHusky = hasDependency(\"husky\") || hasDevDependency(\"husky\");\n\n if (!hasHusky) {\n console.warn(\"⚠️ husky is not installed;\");\n\n return;\n }\n\n const huskyFolderPath = join(projectPath, \".husky\");\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (!existsSync(huskyFolderPath)) {\n await mkdirAsync(huskyFolderPath);\n }\n\n const commonShPath = join(huskyFolderPath, \"common.sh\");\n\n if (!checkIfFileExists(commonShPath)) {\n await writeFileAsync(\n commonShPath,\n `#!/bin/sh\n\ncommand_exists () {\n command -v \"$1\" >/dev/null 2>&1\n}\n\nIS_WINDOWS=\"false\"\n\nif [ \"$OSTYPE\" = \"cygwin\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"msys\" ]; then\n IS_WINDOWS=\"true\"\nelif [ \"$OSTYPE\" = \"win32\" ]; then\n IS_WINDOWS=\"true\"\nfi\n\n# Workaround for Windows 10, Git Bash and Yarn\nif [ \"$IS_WINDOWS\" = \"true\" ]; then\n if command_exists winpty && test -t 1; then\n exec < /dev/tty\n fi\nfi\n`,\n \"utf-8\",\n );\n }\n\n const preCommitPath = join(huskyFolderPath, \"pre-commit\");\n\n let hasPnpm = false;\n\n try {\n getNearestConfigPath(\"pnpm-lock.yaml\");\n\n hasPnpm = true;\n } catch {\n hasPnpm = false;\n\n // ignore\n }\n\n if (!checkIfFileExists(preCommitPath)) {\n await writeFileAsync(\n preCommitPath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\n# The hook should exit with non-zero status after issuing\n# an appropriate message if it wants to stop the commit.\n\necho --------------------------------------------\necho Starting Git hook: pre-commit\n\n${hasPnpm ? \"pnpx\" : \"npx\"} lint-staged --verbose --concurrent false\n\necho Finished Git hook: pre-commit\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n\n const prepareCommitMessagePath = join(huskyFolderPath, \"prepare-commit-msg\");\n const hasCz = hasDependency(\"commitizen\") || hasDevDependency(\"commitizen\");\n\n if (hasCz && !checkIfFileExists(prepareCommitMessagePath)) {\n await writeFileAsync(\n prepareCommitMessagePath,\n `#!/bin/sh\n\n. \"$(dirname \"$0\")/_/husky.sh\"\n. \"$(dirname \"$0\")/common.sh\"\n\necho --------------------------------------------\necho Starting Git hook: prepare-commit-msg\n\n# if we hve a cmd that is running ${hasPnpm ? \"pnpx\" : \"npx\"} cz that means finalize and commit\nFILE=commit.cmd\nif test -f \"$FILE\"; then\n echo \"$FILE exists.\"\n rm commit.cmd\n exit 0;\nfi\n# if on Windows, spawn a cmd that will run ${hasPnpm ? \"pnpx\" : \"npx\"} cz\ncase \\`uname\\` in\n *CYGWIN*|*MINGW*|*MSYS* )\n # Only run commitizen if no commit message was already provided.\n if [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n echo \"${hasPnpm ? \"pnpx\" : \"npx\"} cz && exit\" > commit.cmd\n start commit.cmd\n exit 1;\n fi\n\n exit 0;;\nesac\n\n# Only run commitizen if no commit message was already provided.\nif [ -z \"\\${2-}\" ]; then\n export CZ_TYPE=\"\\${CZ_TYPE:-fix}\"\n export CZ_MAX_HEADER_WIDTH=$COMMITLINT_MAX_WIDTH\n export CZ_MAX_LINE_WIDTH=$CZ_MAX_HEADER_WIDTH\n # By default git hooks are not interactive. exec < /dev/tty allows a users terminal to interact with commitizen.\n exec < /dev/tty && ${hasPnpm ? \"pnpx\" : \"npx\"} cz --hook || true\nfi\n\necho Finished Git hook: prepare-commit-msg\necho --------------------------------------------\n`,\n \"utf-8\",\n );\n }\n};\n\n// eslint-disable-next-line unicorn/prefer-top-level-await\n(async () => {\n try {\n await writeLintstagedRc();\n await writeHuskyFiles();\n\n console.log(\"😎 Everything went well, have fun!\");\n\n exit(0);\n } catch (error) {\n console.log(\"😬 something went wrong:\");\n console.error(error);\n\n exit(1);\n }\n})();\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anolilab/lint-staged-config",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Shareable Lint-Staged Config for any project.",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -94,20 +94,20 @@
94
94
  "test:coverage": "vitest --config ./vitest.config.ts --run --coverage"
95
95
  },
96
96
  "dependencies": {
97
- "@anolilab/package-json-utils": "3.0.5",
97
+ "@anolilab/package-json-utils": "3.0.6",
98
98
  "cross-env": "^7.0.3",
99
99
  "find-up": "5.0.0",
100
100
  "shell-quote": "^1.8.1"
101
101
  },
102
102
  "devDependencies": {
103
- "@anolilab/semantic-release-preset": "7.0.0",
103
+ "@anolilab/semantic-release-preset": "7.0.3",
104
104
  "@total-typescript/ts-reset": "^0.5.1",
105
105
  "@types/lint-staged": "^13.2.0",
106
- "@types/shell-quote": "^1.7.1",
106
+ "@types/shell-quote": "^1.7.2",
107
107
  "@vitest/coverage-v8": "^0.34.5",
108
108
  "husky": "^8.0.3",
109
109
  "lint-staged": "^14.0.1",
110
- "rimraf": "^5.0.1",
110
+ "rimraf": "^5.0.2",
111
111
  "semantic-release": "^21.1.2",
112
112
  "tsup": "^7.2.0",
113
113
  "type-fest": "^4.3.1",
@@ -115,17 +115,35 @@
115
115
  "vitest": "^0.34.5"
116
116
  },
117
117
  "peerDependencies": {
118
- "husky": "^8.x",
119
- "lint-staged": "^13.x || ^14.0.0"
120
- },
121
- "optionalDependencies": {
122
118
  "eslint": "^8.49.0",
119
+ "husky": "^8.x",
123
120
  "jest": "^29.7.0",
121
+ "lint-staged": "^13.x || ^14.0.0",
124
122
  "prettier": "^3.0.3",
125
123
  "secretlint": "^7.0.7",
126
124
  "stylelint": "^15.10.3",
127
125
  "vite": "^4.4.9"
128
126
  },
127
+ "peerDependenciesMeta": {
128
+ "eslint": {
129
+ "optional": true
130
+ },
131
+ "jest": {
132
+ "optional": true
133
+ },
134
+ "prettier": {
135
+ "optional": true
136
+ },
137
+ "secretlint": {
138
+ "optional": true
139
+ },
140
+ "stylelint": {
141
+ "optional": true
142
+ },
143
+ "vite": {
144
+ "optional": true
145
+ }
146
+ },
129
147
  "engines": {
130
148
  "node": ">=18"
131
149
  },
@@ -1,12 +0,0 @@
1
- import { a } from './chunk-HGDREIGE.mjs';
2
- import { b as b$1, a as a$1 } from './chunk-32WCNCA6.mjs';
3
- import { pkg, hasDependency, hasDevDependency } from '@anolilab/package-json-utils';
4
- import { dirname } from 'path';
5
- import { ESLint } from 'eslint';
6
- import { quote } from 'shell-quote';
7
-
8
- !global.anolilabLintStagedPackageJsonConfig&&pkg&&(global.anolilabLintStagedPackageJsonConfig=pkg.anolilab?.["lint-staged-config"]);var C=global.anolilabLintStagedPackageJsonConfig??{},u=C;var S=n=>{let i={};return n.forEach(s=>{let t=dirname(s);i[t]||(i[t]=[]),i[t].push(s);}),i},p=S;var E=async n=>{let i=new ESLint,s=await Promise.all(n.map(async o=>await i.isPathIgnored(o)));return n.filter((o,a)=>!s[a]).map(o=>`"${a$1?o:quote([o])}"`)},h=E;var e=u?.settings?.eslint??{},b=["react-hooks/exhaustive-deps: off"],r=".eslintrc",F=()=>{let n=[];e["max-warnings"]!==void 0&&Number.isNaN(e["max-warnings"])?n.push(`--max-warnings=${e["max-warnings"]}`):e["max-warnings"]!==!1&&n.push("--max-warnings=0");let i=[];e.rules!==void 0&&Array.isArray(e.rules)?i.push([...e.rules,...b].filter(t=>t.trim().length>0).map(t=>`"${t.trim()}"`)):i.push(b.map(t=>`"${t.trim()}"`)),i.length>0&&n.push(`--rule ${i.join(" --rule ")}`);let s=[...e["fix-type"]??["layout"]].filter(t=>t.trim().length>0);return s.length>0&&n.push(`--fix-type ${s.join(",")}`,"--fix"),e.cache&&n.push("--cache"),n},A=async n=>{let i=await h(n),s=F();if(e.config)return s.push(`--config ${e.config}`),[`cross-env NO_LOGS=true eslint ${s.join(" ")} ${i.join(" ")}`];let t=p(i),o=[];return Object.values(t).forEach(a$1=>{let l;[r,`${r}.js`,`${r}.cjs`,`${r}.json`,`${r}.yaml`,`${r}.yml`].forEach($=>{if(!l)try{l=a($,a$1[0]);}catch{}}),l&&o.push(`cross-env NO_LOGS=true eslint ${s.join(" ")} --config ${l} ${a$1.join(" ")}`);}),o},g=A;var x=["cjs","js","mjs","cts","ts","mts","yml","yaml","jsx","tsx","mdx","toml"];global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=hasDependency("markdownlint-cli")||hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=hasDependency("markdownlint-cli2")||hasDevDependency("markdownlint-cli2"));!global.hasAnolilabLintStagedMarkdownCli&&!global.hasAnolilabLintStagedMarkdownCli2&&x.push("md");var N={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:async n=>[...await g(n)],[`**/*.{${[x].join(",")}}`]:async n=>[`prettier --write ${b$1(n)}`,...await g(n)]},K=N;
9
-
10
- export { u as a, K as b };
11
- //# sourceMappingURL=out.js.map
12
- //# sourceMappingURL=chunk-254HTULG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/groups/eslint/index.ts","../src/utils/lint-staged-config.ts","../src/groups/eslint/group-file-paths-by-directory-name.ts","../src/groups/eslint/remove-ignored-files.ts","../src/groups/eslint/create-eslint-commands.ts"],"names":["hasDependency","hasDevDependency","pkg","config","lint_staged_config_default","dirname","groupFilePathsByDirectoryName","filePaths","groups","filePath","directoryName","group_file_paths_by_directory_name_default","ESLint","quote","removeIgnoredFiles","filenames","eslint","ignoredFiles","filename","_","index","is_windows_default","remove_ignored_files_default","eslintSettings","eslintGlobalRulesForFix","configFile","createEslintArguments","eslintArguments","rules","rule","r","fixType","type","createEslintCommands","filteredFiles","groupedFilesNames","eslintCommands","configName","get_nearest_config_path_default","create_eslint_commands_default","extensions","group","concat_files_default","eslint_default"],"mappings":"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","sourcesContent":["import { hasDependency, hasDevDependency } from \"@anolilab/package-json-utils\";\nimport type { Config } from \"lint-staged\";\n\nimport concatFiles from \"../../utils/concat-files\";\nimport createEslintCommands from \"./create-eslint-commands\";\n\nconst extensions = [\"cjs\", \"js\", \"mjs\", \"cts\", \"ts\", \"mts\", \"yml\", \"yaml\", \"jsx\", \"tsx\", \"mdx\", \"toml\"];\n\nif (!global.hasAnolilabLintStagedMarkdownCli) {\n global.hasAnolilabLintStagedMarkdownCli = hasDependency(\"markdownlint-cli\") || hasDevDependency(\"markdownlint-cli\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli2) {\n global.hasAnolilabLintStagedMarkdownCli2 = hasDependency(\"markdownlint-cli2\") || hasDevDependency(\"markdownlint-cli2\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli && !global.hasAnolilabLintStagedMarkdownCli2) {\n extensions.push(\"md\");\n}\n\nconst group: Config = {\n [`**/*.{${[\"json\", \"json5\", \"jsonc\"].join(\",\")}}`]: async (filenames: string[]) => [...(await createEslintCommands(filenames))],\n [`**/*.{${[extensions].join(\",\")}}`]: async (filenames: string[]) => [\n `prettier --write ${concatFiles(filenames)}`,\n ...(await createEslintCommands(filenames)),\n ],\n};\n\nexport default group;\n","import { pkg } from \"@anolilab/package-json-utils\";\n\nif (!global.anolilabLintStagedPackageJsonConfig && pkg) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n global.anolilabLintStagedPackageJsonConfig = pkg[\"anolilab\"]?.[\"lint-staged-config\"];\n}\n\nconst config: Record<string, boolean | undefined> = global.anolilabLintStagedPackageJsonConfig ?? {};\n\nexport default config;\n","import { dirname } from \"node:path\";\n\nconst groupFilePathsByDirectoryName = (filePaths: string[]): Record<string, string[]> => {\n const groups: Record<string, string[]> = {};\n\n filePaths.forEach((filePath) => {\n const directoryName = dirname(filePath);\n\n // eslint-disable-next-line security/detect-object-injection\n if (!groups[directoryName]) {\n // eslint-disable-next-line security/detect-object-injection\n groups[directoryName] = [];\n }\n // eslint-disable-next-line security/detect-object-injection\n (groups[directoryName] as string[]).push(filePath);\n });\n\n return groups;\n};\n\nexport default groupFilePathsByDirectoryName;\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ESLint } from \"eslint\";\nimport { quote } from \"shell-quote\";\n\nimport isWindows from \"../../utils/is-windows\";\n\nconst removeIgnoredFiles = async (filenames: string[]): Promise<string[]> => {\n const eslint = new ESLint();\n // eslint-disable-next-line compat/compat\n const ignoredFiles = await Promise.all(filenames.map(async (filename) => await eslint.isPathIgnored(filename)));\n // eslint-disable-next-line security/detect-object-injection\n const filteredFiles = filenames.filter((_, index) => !ignoredFiles[index]);\n\n return filteredFiles.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`);\n};\n\nexport default removeIgnoredFiles;\n","import getNearestConfigPath from \"../../utils/get-nearest-config-path\";\nimport anolilabLintStagedConfig from \"../../utils/lint-staged-config\";\nimport groupFilePathsByDirectoryName from \"./group-file-paths-by-directory-name\";\nimport removeIgnoredFiles from \"./remove-ignored-files\";\n\ninterface EslintConfig {\n cache?: boolean;\n config?: string;\n \"fix-type\"?: string[];\n \"max-warnings\"?: number | string | false;\n rules?: string[];\n}\n\ninterface ESLintSettings {\n settings?: {\n eslint?: EslintConfig;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nconst eslintSettings: EslintConfig = (anolilabLintStagedConfig as ESLintSettings)?.settings?.eslint ?? ({} as EslintConfig);\n\nconst eslintGlobalRulesForFix = [\n // react-hooks/eslint and react in general is very strict about exhaustively\n // declaring the dependencies when using the useEffect, useCallback... hooks.\n //\n // In some specific scenarios declaring the deps seems 'less' wanted or 'less' applicable\n // by the developer, leading to some exceptions in the code. That said it should be avoided.\n //\n // While the 'react-hooks/exhaustive-deps' rule is a good rule of thumb, it's not recommended to\n // automatically fix it from lint-staged as it can potentially break a legit intent.\n //\n // Reminder that a good practice is to always declare the dependencies when using the hooks,\n // and if not applicable, add an eslint disable comment to the useEffect, useCallback... such as:\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n //\n // Another approach can be to use hooks such as https://github.com/kentcdodds/use-deep-compare-effect to quickly bypass\n // shallow rendering limitations.\n //\n // @see https://reactjs.org/docs/hooks-rules.html\n // @see https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments\n \"react-hooks/exhaustive-deps: off\",\n];\n\nconst configFile = \".eslintrc\";\n\nconst createEslintArguments = (): string[] => {\n const eslintArguments: string[] = [];\n\n if (eslintSettings[\"max-warnings\"] !== undefined && Number.isNaN(eslintSettings[\"max-warnings\"])) {\n eslintArguments.push(`--max-warnings=${eslintSettings[\"max-warnings\"]}`);\n } else if (eslintSettings[\"max-warnings\"] !== false) {\n eslintArguments.push(\"--max-warnings=0\");\n }\n\n const rules = [];\n\n if (eslintSettings.rules !== undefined && Array.isArray(eslintSettings.rules)) {\n rules.push([...eslintSettings.rules, ...eslintGlobalRulesForFix].filter((rule) => rule.trim().length > 0).map((r) => `\"${r.trim()}\"`));\n } else {\n rules.push(eslintGlobalRulesForFix.map((r) => `\"${r.trim()}\"`));\n }\n\n if (rules.length > 0) {\n eslintArguments.push(`--rule ${rules.join(\" --rule \")}`);\n }\n\n // For lint-staged it's safer to not apply the fix command if it changes the AST\n // @see https://eslint.org/docs/user-guide/command-line-interface#--fix-type\n const fixType = [...(eslintSettings[\"fix-type\"] ?? [\"layout\"])].filter((type) => type.trim().length > 0);\n\n if (fixType.length > 0) {\n eslintArguments.push(`--fix-type ${fixType.join(\",\")}`, \"--fix\");\n }\n\n if (eslintSettings.cache) {\n eslintArguments.push(\"--cache\");\n }\n\n return eslintArguments;\n};\n\nconst createEslintCommands = async (filenames: string[]): Promise<string[]> => {\n const filteredFiles = await removeIgnoredFiles(filenames);\n\n const eslintArguments = createEslintArguments();\n\n if (eslintSettings.config) {\n eslintArguments.push(`--config ${eslintSettings.config}`);\n\n return [`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} ${filteredFiles.join(\" \")}`];\n }\n\n const groupedFilesNames = groupFilePathsByDirectoryName(filteredFiles);\n const eslintCommands: string[] = [];\n\n Object.values(groupedFilesNames).forEach((filePaths) => {\n let config: string | undefined;\n\n [configFile, `${configFile}.js`, `${configFile}.cjs`, `${configFile}.json`, `${configFile}.yaml`, `${configFile}.yml`].forEach((configName) => {\n if (config) {\n return;\n }\n\n try {\n // eslint-disable-next-line no-template-curly-in-string\n config = getNearestConfigPath(configName, filePaths[0] as \"/${string}\") as string;\n } catch {\n // Ignore\n }\n });\n\n if (config) {\n eslintCommands.push(`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} --config ${config} ${filePaths.join(\" \")}`);\n }\n });\n\n return eslintCommands;\n};\n\nexport default createEslintCommands;\n"]}
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var shellQuote = require('shell-quote');
4
- var process = require('process');
5
-
6
- var n=process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE??""),t=n;var p=i=>i.map(o=>`"${t?o:shellQuote.quote([o])}"`).join(" "),d=p;
7
-
8
- exports.a = t;
9
- exports.b = d;
10
- //# sourceMappingURL=out.js.map
11
- //# sourceMappingURL=chunk-26UFUGBI.js.map
@@ -1,8 +0,0 @@
1
- import { quote } from 'shell-quote';
2
- import { platform, env } from 'process';
3
-
4
- var n=platform==="win32"||/^(msys|cygwin)$/.test(env.OSTYPE??""),t=n;var p=i=>i.map(o=>`"${t?o:quote([o])}"`).join(" "),d=p;
5
-
6
- export { t as a, d as b };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-32WCNCA6.mjs.map
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk26UFUGBI_js = require('./chunk-26UFUGBI.js');
4
-
5
- var i={[`**/*.{${["css","sass","scss","less"].join(",")}}`]:t=>[`prettier --ignore-unknown --write ${chunk26UFUGBI_js.b(t)}`,"stylelint --fix"]},n=i;
6
-
7
- exports.a = n;
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-FZFCZD6I.js.map
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVU6SMFTD_js = require('./chunk-VU6SMFTD.js');
4
- var chunk26UFUGBI_js = require('./chunk-26UFUGBI.js');
5
- var packageJsonUtils = require('@anolilab/package-json-utils');
6
- var path = require('path');
7
- var eslint = require('eslint');
8
- var shellQuote = require('shell-quote');
9
-
10
- !global.anolilabLintStagedPackageJsonConfig&&packageJsonUtils.pkg&&(global.anolilabLintStagedPackageJsonConfig=packageJsonUtils.pkg.anolilab?.["lint-staged-config"]);var C=global.anolilabLintStagedPackageJsonConfig??{},u=C;var S=n=>{let i={};return n.forEach(s=>{let t=path.dirname(s);i[t]||(i[t]=[]),i[t].push(s);}),i},p=S;var E=async n=>{let i=new eslint.ESLint,s=await Promise.all(n.map(async o=>await i.isPathIgnored(o)));return n.filter((o,a)=>!s[a]).map(o=>`"${chunk26UFUGBI_js.a?o:shellQuote.quote([o])}"`)},h=E;var e=u?.settings?.eslint??{},b=["react-hooks/exhaustive-deps: off"],r=".eslintrc",F=()=>{let n=[];e["max-warnings"]!==void 0&&Number.isNaN(e["max-warnings"])?n.push(`--max-warnings=${e["max-warnings"]}`):e["max-warnings"]!==!1&&n.push("--max-warnings=0");let i=[];e.rules!==void 0&&Array.isArray(e.rules)?i.push([...e.rules,...b].filter(t=>t.trim().length>0).map(t=>`"${t.trim()}"`)):i.push(b.map(t=>`"${t.trim()}"`)),i.length>0&&n.push(`--rule ${i.join(" --rule ")}`);let s=[...e["fix-type"]??["layout"]].filter(t=>t.trim().length>0);return s.length>0&&n.push(`--fix-type ${s.join(",")}`,"--fix"),e.cache&&n.push("--cache"),n},A=async n=>{let i=await h(n),s=F();if(e.config)return s.push(`--config ${e.config}`),[`cross-env NO_LOGS=true eslint ${s.join(" ")} ${i.join(" ")}`];let t=p(i),o=[];return Object.values(t).forEach(a=>{let l;[r,`${r}.js`,`${r}.cjs`,`${r}.json`,`${r}.yaml`,`${r}.yml`].forEach($=>{if(!l)try{l=chunkVU6SMFTD_js.a($,a[0]);}catch{}}),l&&o.push(`cross-env NO_LOGS=true eslint ${s.join(" ")} --config ${l} ${a.join(" ")}`);}),o},g=A;var x=["cjs","js","mjs","cts","ts","mts","yml","yaml","jsx","tsx","mdx","toml"];global.hasAnolilabLintStagedMarkdownCli||(global.hasAnolilabLintStagedMarkdownCli=packageJsonUtils.hasDependency("markdownlint-cli")||packageJsonUtils.hasDevDependency("markdownlint-cli"));global.hasAnolilabLintStagedMarkdownCli2||(global.hasAnolilabLintStagedMarkdownCli2=packageJsonUtils.hasDependency("markdownlint-cli2")||packageJsonUtils.hasDevDependency("markdownlint-cli2"));!global.hasAnolilabLintStagedMarkdownCli&&!global.hasAnolilabLintStagedMarkdownCli2&&x.push("md");var N={[`**/*.{${["json","json5","jsonc"].join(",")}}`]:async n=>[...await g(n)],[`**/*.{${[x].join(",")}}`]:async n=>[`prettier --write ${chunk26UFUGBI_js.b(n)}`,...await g(n)]},K=N;
11
-
12
- exports.a = u;
13
- exports.b = K;
14
- //# sourceMappingURL=out.js.map
15
- //# sourceMappingURL=chunk-OOLGGS6M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/groups/eslint/index.ts","../src/utils/lint-staged-config.ts","../src/groups/eslint/group-file-paths-by-directory-name.ts","../src/groups/eslint/remove-ignored-files.ts","../src/groups/eslint/create-eslint-commands.ts"],"names":["hasDependency","hasDevDependency","pkg","config","lint_staged_config_default","dirname","groupFilePathsByDirectoryName","filePaths","groups","filePath","directoryName","group_file_paths_by_directory_name_default","ESLint","quote","removeIgnoredFiles","filenames","eslint","ignoredFiles","filename","_","index","is_windows_default","remove_ignored_files_default","eslintSettings","eslintGlobalRulesForFix","configFile","createEslintArguments","eslintArguments","rules","rule","r","fixType","type","createEslintCommands","filteredFiles","groupedFilesNames","eslintCommands","configName","get_nearest_config_path_default","create_eslint_commands_default","extensions","group","concat_files_default","eslint_default"],"mappings":"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","sourcesContent":["import { hasDependency, hasDevDependency } from \"@anolilab/package-json-utils\";\nimport type { Config } from \"lint-staged\";\n\nimport concatFiles from \"../../utils/concat-files\";\nimport createEslintCommands from \"./create-eslint-commands\";\n\nconst extensions = [\"cjs\", \"js\", \"mjs\", \"cts\", \"ts\", \"mts\", \"yml\", \"yaml\", \"jsx\", \"tsx\", \"mdx\", \"toml\"];\n\nif (!global.hasAnolilabLintStagedMarkdownCli) {\n global.hasAnolilabLintStagedMarkdownCli = hasDependency(\"markdownlint-cli\") || hasDevDependency(\"markdownlint-cli\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli2) {\n global.hasAnolilabLintStagedMarkdownCli2 = hasDependency(\"markdownlint-cli2\") || hasDevDependency(\"markdownlint-cli2\");\n}\n\nif (!global.hasAnolilabLintStagedMarkdownCli && !global.hasAnolilabLintStagedMarkdownCli2) {\n extensions.push(\"md\");\n}\n\nconst group: Config = {\n [`**/*.{${[\"json\", \"json5\", \"jsonc\"].join(\",\")}}`]: async (filenames: string[]) => [...(await createEslintCommands(filenames))],\n [`**/*.{${[extensions].join(\",\")}}`]: async (filenames: string[]) => [\n `prettier --write ${concatFiles(filenames)}`,\n ...(await createEslintCommands(filenames)),\n ],\n};\n\nexport default group;\n","import { pkg } from \"@anolilab/package-json-utils\";\n\nif (!global.anolilabLintStagedPackageJsonConfig && pkg) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access\n global.anolilabLintStagedPackageJsonConfig = pkg[\"anolilab\"]?.[\"lint-staged-config\"];\n}\n\nconst config: Record<string, boolean | undefined> = global.anolilabLintStagedPackageJsonConfig ?? {};\n\nexport default config;\n","import { dirname } from \"node:path\";\n\nconst groupFilePathsByDirectoryName = (filePaths: string[]): Record<string, string[]> => {\n const groups: Record<string, string[]> = {};\n\n filePaths.forEach((filePath) => {\n const directoryName = dirname(filePath);\n\n // eslint-disable-next-line security/detect-object-injection\n if (!groups[directoryName]) {\n // eslint-disable-next-line security/detect-object-injection\n groups[directoryName] = [];\n }\n // eslint-disable-next-line security/detect-object-injection\n (groups[directoryName] as string[]).push(filePath);\n });\n\n return groups;\n};\n\nexport default groupFilePathsByDirectoryName;\n","// eslint-disable-next-line import/no-extraneous-dependencies\nimport { ESLint } from \"eslint\";\nimport { quote } from \"shell-quote\";\n\nimport isWindows from \"../../utils/is-windows\";\n\nconst removeIgnoredFiles = async (filenames: string[]): Promise<string[]> => {\n const eslint = new ESLint();\n // eslint-disable-next-line compat/compat\n const ignoredFiles = await Promise.all(filenames.map(async (filename) => await eslint.isPathIgnored(filename)));\n // eslint-disable-next-line security/detect-object-injection\n const filteredFiles = filenames.filter((_, index) => !ignoredFiles[index]);\n\n return filteredFiles.map((filename) => `\"${isWindows ? filename : quote([filename])}\"`);\n};\n\nexport default removeIgnoredFiles;\n","import getNearestConfigPath from \"../../utils/get-nearest-config-path\";\nimport anolilabLintStagedConfig from \"../../utils/lint-staged-config\";\nimport groupFilePathsByDirectoryName from \"./group-file-paths-by-directory-name\";\nimport removeIgnoredFiles from \"./remove-ignored-files\";\n\ninterface EslintConfig {\n cache?: boolean;\n config?: string;\n \"fix-type\"?: string[];\n \"max-warnings\"?: number | string | false;\n rules?: string[];\n}\n\ninterface ESLintSettings {\n settings?: {\n eslint?: EslintConfig;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nconst eslintSettings: EslintConfig = (anolilabLintStagedConfig as ESLintSettings)?.settings?.eslint ?? ({} as EslintConfig);\n\nconst eslintGlobalRulesForFix = [\n // react-hooks/eslint and react in general is very strict about exhaustively\n // declaring the dependencies when using the useEffect, useCallback... hooks.\n //\n // In some specific scenarios declaring the deps seems 'less' wanted or 'less' applicable\n // by the developer, leading to some exceptions in the code. That said it should be avoided.\n //\n // While the 'react-hooks/exhaustive-deps' rule is a good rule of thumb, it's not recommended to\n // automatically fix it from lint-staged as it can potentially break a legit intent.\n //\n // Reminder that a good practice is to always declare the dependencies when using the hooks,\n // and if not applicable, add an eslint disable comment to the useEffect, useCallback... such as:\n //\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n //\n // Another approach can be to use hooks such as https://github.com/kentcdodds/use-deep-compare-effect to quickly bypass\n // shallow rendering limitations.\n //\n // @see https://reactjs.org/docs/hooks-rules.html\n // @see https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments\n \"react-hooks/exhaustive-deps: off\",\n];\n\nconst configFile = \".eslintrc\";\n\nconst createEslintArguments = (): string[] => {\n const eslintArguments: string[] = [];\n\n if (eslintSettings[\"max-warnings\"] !== undefined && Number.isNaN(eslintSettings[\"max-warnings\"])) {\n eslintArguments.push(`--max-warnings=${eslintSettings[\"max-warnings\"]}`);\n } else if (eslintSettings[\"max-warnings\"] !== false) {\n eslintArguments.push(\"--max-warnings=0\");\n }\n\n const rules = [];\n\n if (eslintSettings.rules !== undefined && Array.isArray(eslintSettings.rules)) {\n rules.push([...eslintSettings.rules, ...eslintGlobalRulesForFix].filter((rule) => rule.trim().length > 0).map((r) => `\"${r.trim()}\"`));\n } else {\n rules.push(eslintGlobalRulesForFix.map((r) => `\"${r.trim()}\"`));\n }\n\n if (rules.length > 0) {\n eslintArguments.push(`--rule ${rules.join(\" --rule \")}`);\n }\n\n // For lint-staged it's safer to not apply the fix command if it changes the AST\n // @see https://eslint.org/docs/user-guide/command-line-interface#--fix-type\n const fixType = [...(eslintSettings[\"fix-type\"] ?? [\"layout\"])].filter((type) => type.trim().length > 0);\n\n if (fixType.length > 0) {\n eslintArguments.push(`--fix-type ${fixType.join(\",\")}`, \"--fix\");\n }\n\n if (eslintSettings.cache) {\n eslintArguments.push(\"--cache\");\n }\n\n return eslintArguments;\n};\n\nconst createEslintCommands = async (filenames: string[]): Promise<string[]> => {\n const filteredFiles = await removeIgnoredFiles(filenames);\n\n const eslintArguments = createEslintArguments();\n\n if (eslintSettings.config) {\n eslintArguments.push(`--config ${eslintSettings.config}`);\n\n return [`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} ${filteredFiles.join(\" \")}`];\n }\n\n const groupedFilesNames = groupFilePathsByDirectoryName(filteredFiles);\n const eslintCommands: string[] = [];\n\n Object.values(groupedFilesNames).forEach((filePaths) => {\n let config: string | undefined;\n\n [configFile, `${configFile}.js`, `${configFile}.cjs`, `${configFile}.json`, `${configFile}.yaml`, `${configFile}.yml`].forEach((configName) => {\n if (config) {\n return;\n }\n\n try {\n // eslint-disable-next-line no-template-curly-in-string\n config = getNearestConfigPath(configName, filePaths[0] as \"/${string}\") as string;\n } catch {\n // Ignore\n }\n });\n\n if (config) {\n eslintCommands.push(`cross-env NO_LOGS=true eslint ${eslintArguments.join(\" \")} --config ${config} ${filePaths.join(\" \")}`);\n }\n });\n\n return eslintCommands;\n};\n\nexport default createEslintCommands;\n"]}