@solvro/config 1.10.11 → 1.11.1
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.
package/dist/commitlint/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/commitlint/index.ts"],"sourcesContent":["import { type UserConfig } from \"@commitlint/types\";\n\nconst Configuration: UserConfig = {\n extends: [\"@commitlint/config-conventional\"],\n helpUrl: \"https://docs.solvro.pl/guides/github/#nazewnictwo-commit%C3%B3w\",\n rules: {\n \"type-enum\": [\n 2,\n \"always\",\n [\n \"build\",\n // Boring changes\n \"chore\",\n // Changes to CI workflows\n \"ci\",\n // Documentation-only changes\n \"docs\",\n // A new feature\n \"feat\",\n //A bug fix\n \"fix\",\n // A code change that neither fixes a bug nor adds a feature\n \"refactor\",\n // Adding missing tests or correcting existing tests\n \"test\",\n // For release commits\n \"release\",\n ],\n ],\n \"body-max-length\": [
|
1
|
+
{"version":3,"sources":["../../src/commitlint/index.ts"],"sourcesContent":["import { type UserConfig } from \"@commitlint/types\";\n\nconst Configuration: UserConfig = {\n extends: [\"@commitlint/config-conventional\"],\n helpUrl: \"https://docs.solvro.pl/guides/github/#nazewnictwo-commit%C3%B3w\",\n rules: {\n \"type-enum\": [\n 2,\n \"always\",\n [\n \"build\",\n // Boring changes\n \"chore\",\n // Changes to CI workflows\n \"ci\",\n // Documentation-only changes\n \"docs\",\n // A new feature\n \"feat\",\n //A bug fix\n \"fix\",\n // A code change that neither fixes a bug nor adds a feature\n \"refactor\",\n // Adding missing tests or correcting existing tests\n \"test\",\n // For release commits\n \"release\",\n ],\n ],\n \"body-max-length\": [1, \"never\", 100],\n },\n};\n\nexport default Configuration;\n"],"mappings":";AAEA,IAAM,gBAA4B;AAAA,EAChC,SAAS,CAAC,iCAAiC;AAAA,EAC3C,SAAS;AAAA,EACT,OAAO;AAAA,IACL,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,QACE;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA,MACF;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,GAAG,SAAS,GAAG;AAAA,EACrC;AACF;AAEA,IAAO,qBAAQ;","names":[]}
|
package/dist/eslint/index.js
CHANGED
@@ -1,7 +1,89 @@
|
|
1
|
-
//
|
1
|
+
// node_modules/eslint-config-flat-gitignore/dist/index.mjs
|
2
|
+
import fs from "node:fs";
|
3
|
+
import process2 from "node:process";
|
4
|
+
import path from "node:path";
|
2
5
|
import { findUpSync } from "find-up-simple";
|
6
|
+
|
7
|
+
// node_modules/@eslint/compat/dist/esm/index.js
|
8
|
+
function convertIgnorePatternToMinimatch(pattern) {
|
9
|
+
const isNegated = pattern.startsWith("!");
|
10
|
+
const negatedPrefix = isNegated ? "!" : "";
|
11
|
+
const patternToTest = (isNegated ? pattern.slice(1) : pattern).trimEnd();
|
12
|
+
if (["", "**", "/**", "**/"].includes(patternToTest)) {
|
13
|
+
return `${negatedPrefix}${patternToTest}`;
|
14
|
+
}
|
15
|
+
const firstIndexOfSlash = patternToTest.indexOf("/");
|
16
|
+
const matchEverywherePrefix = firstIndexOfSlash < 0 || firstIndexOfSlash === patternToTest.length - 1 ? "**/" : "";
|
17
|
+
const patternWithoutLeadingSlash = firstIndexOfSlash === 0 ? patternToTest.slice(1) : patternToTest;
|
18
|
+
const escapedPatternWithoutLeadingSlash = patternWithoutLeadingSlash.replaceAll(
|
19
|
+
/(?=((?:\\.|[^{(])*))\1([{(])/guy,
|
20
|
+
"$1\\$2"
|
21
|
+
);
|
22
|
+
const matchInsideSuffix = patternToTest.endsWith("/**") ? "/*" : "";
|
23
|
+
return `${negatedPrefix}${matchEverywherePrefix}${escapedPatternWithoutLeadingSlash}${matchInsideSuffix}`;
|
24
|
+
}
|
25
|
+
|
26
|
+
// node_modules/eslint-config-flat-gitignore/dist/index.mjs
|
27
|
+
var GITIGNORE = ".gitignore";
|
28
|
+
function ignore(options = {}) {
|
29
|
+
const ignores2 = [];
|
30
|
+
const {
|
31
|
+
root = false,
|
32
|
+
files: _files = root ? GITIGNORE : findUpSync(GITIGNORE) || [],
|
33
|
+
strict = true,
|
34
|
+
cwd = process2.cwd()
|
35
|
+
} = options;
|
36
|
+
const files = Array.isArray(_files) ? _files : [_files];
|
37
|
+
for (const file of files) {
|
38
|
+
let content = "";
|
39
|
+
try {
|
40
|
+
content = fs.readFileSync(file, "utf8");
|
41
|
+
} catch (error) {
|
42
|
+
if (strict)
|
43
|
+
throw error;
|
44
|
+
continue;
|
45
|
+
}
|
46
|
+
const relativePath = path.relative(cwd, path.dirname(file)).replaceAll("\\", "/");
|
47
|
+
const globs = content.split(/\r?\n/u).filter((line) => line && !line.startsWith("#")).map((line) => convertIgnorePatternToMinimatch(line)).map((glob) => relativeMinimatch(glob, relativePath, cwd)).filter((glob) => glob !== null);
|
48
|
+
ignores2.push(...globs);
|
49
|
+
}
|
50
|
+
if (strict && files.length === 0)
|
51
|
+
throw new Error("No .gitignore file found");
|
52
|
+
return {
|
53
|
+
name: options.name || "gitignore",
|
54
|
+
ignores: ignores2
|
55
|
+
};
|
56
|
+
}
|
57
|
+
function relativeMinimatch(pattern, relativePath, cwd) {
|
58
|
+
if (["", ".", "/"].includes(relativePath))
|
59
|
+
return pattern;
|
60
|
+
const negated = pattern.startsWith("!") ? "!" : "";
|
61
|
+
let cleanPattern = negated ? pattern.slice(1) : pattern;
|
62
|
+
if (!relativePath.endsWith("/"))
|
63
|
+
relativePath = `${relativePath}/`;
|
64
|
+
const isParent = relativePath.startsWith("..");
|
65
|
+
if (!isParent)
|
66
|
+
return `${negated}${relativePath}${cleanPattern}`;
|
67
|
+
if (!relativePath.match(/^(\.\.\/)+$/))
|
68
|
+
throw new Error("The ignore file location should be either a parent or child directory");
|
69
|
+
if (cleanPattern.startsWith("**"))
|
70
|
+
return pattern;
|
71
|
+
const parents = path.relative(path.resolve(cwd, relativePath), cwd).split(/[/\\]/);
|
72
|
+
while (parents.length && cleanPattern.startsWith(`${parents[0]}/`)) {
|
73
|
+
cleanPattern = cleanPattern.slice(parents[0].length + 1);
|
74
|
+
parents.shift();
|
75
|
+
}
|
76
|
+
if (cleanPattern.startsWith("**"))
|
77
|
+
return `${negated}${cleanPattern}`;
|
78
|
+
if (parents.length === 0)
|
79
|
+
return `${negated}${cleanPattern}`;
|
80
|
+
return null;
|
81
|
+
}
|
82
|
+
|
83
|
+
// src/eslint/index.ts
|
84
|
+
import { findUpSync as findUpSync2 } from "find-up-simple";
|
3
85
|
import { isPackageListed } from "local-pkg";
|
4
|
-
import
|
86
|
+
import path2 from "node:path";
|
5
87
|
import tseslint4 from "typescript-eslint";
|
6
88
|
import { configApp } from "@adonisjs/eslint-config";
|
7
89
|
|
@@ -880,11 +962,15 @@ var adonisConfig = [
|
|
880
962
|
"error",
|
881
963
|
{
|
882
964
|
selector: ["enum", "enumMember", "class", "interface", "typeLike"],
|
883
|
-
format: ["PascalCase"]
|
965
|
+
format: ["PascalCase"],
|
966
|
+
leadingUnderscore: "allow",
|
967
|
+
trailingUnderscore: "allow"
|
884
968
|
},
|
885
969
|
{
|
886
970
|
selector: ["classProperty", "classMethod", "method", "variableLike"],
|
887
|
-
format: ["camelCase"]
|
971
|
+
format: ["camelCase"],
|
972
|
+
leadingUnderscore: "allow",
|
973
|
+
trailingUnderscore: "allow"
|
888
974
|
},
|
889
975
|
{
|
890
976
|
selector: "variable",
|
@@ -904,6 +990,7 @@ var nextjsConfig = async () => [
|
|
904
990
|
...await react()
|
905
991
|
];
|
906
992
|
var configs = [
|
993
|
+
ignore(),
|
907
994
|
...javascript(),
|
908
995
|
...jsdoc(),
|
909
996
|
...comments(),
|
@@ -925,13 +1012,13 @@ var solvro = async (...overrides) => {
|
|
925
1012
|
if (isNext) {
|
926
1013
|
newConfig.push(...await nextjsConfig());
|
927
1014
|
}
|
928
|
-
const tsConfigPath =
|
1015
|
+
const tsConfigPath = findUpSync2("tsconfig.json", {
|
929
1016
|
cwd: process.cwd()
|
930
1017
|
});
|
931
1018
|
if (tsConfigPath == null) {
|
932
1019
|
throw new Error("No tsconfig.json found");
|
933
1020
|
}
|
934
|
-
const rootDirectory =
|
1021
|
+
const rootDirectory = path2.dirname(tsConfigPath);
|
935
1022
|
configs.push({
|
936
1023
|
languageOptions: {
|
937
1024
|
parserOptions: {
|
package/dist/eslint/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/eslint/index.ts","../../src/eslint/configs/a11y.ts","../../src/eslint/plugins.ts","../../src/eslint/configs/comments.ts","../../src/eslint/configs/disables.ts","../../src/eslint/globs.ts","../../src/eslint/configs/formatters.ts","../../src/eslint/configs/ignores.ts","../../src/eslint/configs/imports.ts","../../src/eslint/configs/javascript.ts","../../src/eslint/configs/jsdoc.ts","../../src/eslint/configs/node.ts","../../src/eslint/configs/react.ts","../../src/eslint/configs/typescript-relaxed.ts","../../src/eslint/configs/typescript-strict.ts","../../src/eslint/configs/unicorn.ts"],"sourcesContent":["import { findUpSync } from \"find-up-simple\";\nimport { isPackageListed } from \"local-pkg\";\nimport path from \"node:path\";\nimport tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { configApp } from \"@adonisjs/eslint-config\";\n\nimport { a11y } from \"./configs/a11y\";\nimport { comments } from \"./configs/comments\";\nimport { disables } from \"./configs/disables\";\nimport { formatters } from \"./configs/formatters\";\nimport { ignores } from \"./configs/ignores\";\nimport { imports } from \"./configs/imports\";\nimport { javascript } from \"./configs/javascript\";\nimport { jsdoc } from \"./configs/jsdoc\";\nimport { node } from \"./configs/node\";\nimport { react } from \"./configs/react\";\nimport { typescriptRelaxed } from \"./configs/typescript-relaxed\";\nimport { typescriptStrict } from \"./configs/typescript-strict\";\nimport { unicorn } from \"./configs/unicorn\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\nconst builtinAdonisConfig: ConfigWithExtends[] = configApp();\n\nconst adonisConfig: ConfigWithExtends[] = [\n ...builtinAdonisConfig,\n ...node(),\n ...imports(),\n {\n rules: {\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: [\"enum\", \"enumMember\", \"class\", \"interface\", \"typeLike\"],\n format: [\"PascalCase\"],\n },\n {\n selector: [\"classProperty\", \"classMethod\", \"method\", \"variableLike\"],\n format: [\"camelCase\"],\n },\n {\n selector: \"variable\",\n format: [\"camelCase\", \"UPPER_CASE\", \"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n ],\n },\n },\n];\n\nconst nextjsConfig = async (): Promise<ConfigWithExtends[]> => [\n ...a11y(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n ...(await react()),\n];\n\nconst configs: ConfigWithExtends[] = [\n ...javascript(),\n ...jsdoc(),\n ...comments(),\n ...typescriptRelaxed(),\n];\n\nconst defaultOverrides = [...ignores(), ...formatters(), ...disables()];\n\nexport const solvro = async (...overrides: ConfigWithExtends[]) => {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isNext = await isPackageListed(\"next\");\n\n if (isNext && isAdonis) {\n throw new Error(\n \"You can't use both Adonis and Next.js in the same project\",\n );\n }\n\n const newConfig: ConfigWithExtends[] = [];\n\n if (isAdonis) {\n newConfig.push(...adonisConfig);\n }\n\n if (isNext) {\n newConfig.push(...(await nextjsConfig()));\n }\n\n const tsConfigPath = findUpSync(\"tsconfig.json\", {\n cwd: process.cwd(),\n });\n\n if (tsConfigPath == null) {\n throw new Error(\"No tsconfig.json found\");\n }\n\n const rootDirectory = path.dirname(tsConfigPath);\n\n configs.push({\n languageOptions: {\n parserOptions: {\n projectService: true,\n tsconfigRootDir: rootDirectory,\n },\n },\n });\n\n return tseslint.config(\n ...configs,\n ...newConfig,\n ...defaultOverrides,\n ...overrides,\n );\n};\n","import jsxA11y from \"eslint-plugin-jsx-a11y\";\nimport globals from \"globals\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function a11y(): ConfigWithExtends[] {\n return [\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...jsxA11y.flatConfigs.recommended,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n languageOptions: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...jsxA11y.flatConfigs.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser,\n },\n },\n settings: {\n \"jsx-a11y\": {\n components: {\n Input: \"input\",\n Button: \"button\",\n Link: \"a\",\n Label: \"label\",\n Select: \"select\",\n Textarea: \"textarea\",\n },\n attributes: {\n for: [\"htmlFor\", \"for\"],\n },\n },\n },\n },\n ];\n}\n","//@ts-expect-error not working\nexport { default as pluginComments } from \"@eslint-community/eslint-plugin-eslint-comments\";\nexport { default as pluginAntfu } from \"eslint-plugin-antfu\";\n//@ts-expect-error not working too\nexport { default as pluginImport } from \"eslint-plugin-import\";\nexport { default as pluginNode } from \"eslint-plugin-n\";\nexport { default as pluginUnicorn } from \"eslint-plugin-unicorn\";\nexport { default as pluginUnusedImports } from \"eslint-plugin-unused-imports\";\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginComments } from \"../plugins\";\n\nexport function comments(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/eslint-comments/rules\",\n plugins: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"eslint-comments\": pluginComments,\n },\n rules: {\n \"eslint-comments/no-aggregating-enable\": \"error\",\n \"eslint-comments/no-duplicate-disable\": \"error\",\n \"eslint-comments/no-unlimited-disable\": \"error\",\n \"eslint-comments/no-unused-enable\": \"error\",\n },\n },\n ];\n}\n","import tseslint, { type ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_SRC, GLOB_SRC_EXT } from \"../globs\";\n\nexport function disables(): ConfigWithExtends[] {\n return [\n {\n files: [`**/scripts/${GLOB_SRC}`],\n name: \"solvro/disables/scripts\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n \"@typescript-eslint/explicit-function-return-type\": \"off\",\n },\n },\n {\n rules: {\n \"prettier/prettier\": \"off\",\n },\n },\n {\n files: [`**/cli/${GLOB_SRC}`, `**/cli.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/cli\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n },\n },\n {\n files: [\"**/bin/**/*\", `**/bin.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/bin\",\n rules: {\n \"antfu/no-import-dist\": \"off\",\n \"antfu/no-import-node-modules-by-path\": \"off\",\n },\n },\n {\n files: [\"**/*.d.?([cm])ts\"],\n name: \"solvro/disables/dts\",\n rules: {\n \"eslint-comments/no-unlimited-disable\": \"off\",\n \"import-x/no-duplicates\": \"off\",\n \"no-restricted-syntax\": \"off\",\n \"unused-imports/no-unused-vars\": \"off\",\n },\n },\n {\n files: [\"**/*.js\", \"**/*.cjs\"],\n name: \"solvro/disables/cjs\",\n rules: {\n \"@typescript-eslint/no-require-imports\": \"off\",\n },\n },\n {\n files: [`**/*.config.${GLOB_SRC_EXT}`, `**/*.config.*.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/config-files\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n \"@typescript-eslint/explicit-function-return-type\": \"off\",\n },\n },\n {\n files: [\"**/*.js\"],\n extends: [tseslint.configs.disableTypeChecked],\n },\n ];\n}\n","export const GLOB_SRC_EXT = \"?([cm])[jt]s?(x)\";\nexport const GLOB_SRC = \"**/*.?([cm])[jt]s?(x)\";\n\nexport const GLOB_JS = \"**/*.?([cm])js\";\nexport const GLOB_JSX = \"**/*.?([cm])jsx\";\n\nexport const GLOB_TS = \"**/*.?([cm])ts\";\nexport const GLOB_TSX = \"**/*.?([cm])tsx\";\n\nexport const GLOB_EXCLUDE = [\n \"**/node_modules\",\n \"**/dist\",\n \"**/package-lock.json\",\n \"**/yarn.lock\",\n \"**/pnpm-lock.yaml\",\n \"**/bun.lockb\",\n \"**/build\",\n \"**/output\",\n \"**/coverage\",\n \"**/temp\",\n \"**/.temp\",\n \"**/tmp\",\n \"**/.tmp\",\n \"**/.history\",\n \"**/.vitepress/cache\",\n \"**/.nuxt\",\n \"**/.next\",\n \"**/.svelte-kit\",\n \"**/.vercel\",\n \"**/.changeset\",\n \"**/.idea\",\n \"**/.cache\",\n \"**/.output\",\n \"**/.vite-inspect\",\n \"**/.yarn\",\n \"**/vite.config.*.timestamp-*\",\n\n \"**/CHANGELOG*.md\",\n \"**/*.min.*\",\n \"**/LICENSE*\",\n \"**/__snapshots__\",\n \"**/auto-import?(s).d.ts\",\n \"**/components.d.ts\",\n];\n","import prettierConfig from \"eslint-config-prettier\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function formatters(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/prettier\",\n rules: {\n ...prettierConfig.rules,\n curly: \"error\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_EXCLUDE } from \"../globs\";\n\nexport function ignores(): ConfigWithExtends[] {\n return [\n {\n ignores: [...GLOB_EXCLUDE],\n name: \"solvro/ignores\",\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu, pluginImport } from \"../plugins\";\n\nexport function imports(\n options: { forbidDefaultExport: boolean } = { forbidDefaultExport: false },\n): ConfigWithExtends[] {\n const config = [\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n pluginImport.flatConfigs.typescript,\n {\n name: \"solvro/imports/rules\",\n plugins: {\n antfu: pluginAntfu,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n import: pluginImport,\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n rules: {\n \"antfu/import-dedupe\": \"error\",\n \"antfu/no-import-dist\": \"error\",\n \"antfu/no-import-node-modules-by-path\": \"error\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...pluginImport.flatConfigs.recommended.rules,\n \"import/no-dynamic-require\": \"warn\",\n \"import/no-unresolved\": \"off\",\n \"import/consistent-type-specifier-style\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: [\n {\n name: \"axios\",\n message: \"Please use fetch instead\",\n },\n ],\n },\n ],\n },\n },\n ];\n\n if (options.forbidDefaultExport) {\n config.push(\n {\n rules: { \"import/no-default-export\": \"error\" },\n },\n {\n files: [\n \"tsup.config.*\",\n \"eslint.config.*\",\n \".commitlintrc.*\",\n \"knip.*\",\n \"next.config.*\",\n \"commitlint.config.*\",\n \".releaserc.*\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return config;\n}\n","import eslint from \"@eslint/js\";\nimport globals from \"globals\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu, pluginUnusedImports } from \"../plugins\";\n\nexport function javascript(): ConfigWithExtends[] {\n return [\n {\n languageOptions: {\n ecmaVersion: 2022,\n globals: {\n ...globals.browser,\n ...globals.es2021,\n ...globals.node,\n document: \"readonly\",\n navigator: \"readonly\",\n window: \"readonly\",\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 2022,\n sourceType: \"module\",\n },\n sourceType: \"module\",\n },\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n name: \"solvro/javascript/setup\",\n },\n {\n name: \"solvro/javascript/rules\",\n plugins: {\n antfu: pluginAntfu,\n \"unused-imports\": pluginUnusedImports,\n },\n rules: {\n ...eslint.configs.recommended.rules,\n \"accessor-pairs\": [\n \"error\",\n { enforceForClassMembers: true, setWithoutGet: true },\n ],\n curly: \"error\",\n \"array-callback-return\": \"error\",\n \"block-scoped-var\": \"error\",\n \"constructor-super\": \"error\",\n \"default-case-last\": \"error\",\n \"dot-notation\": [\"error\", { allowKeywords: true }],\n eqeqeq: [\"error\", \"smart\"],\n \"new-cap\": [\n \"error\",\n { capIsNew: false, newIsCap: true, properties: true },\n ],\n \"no-alert\": \"error\",\n \"no-array-constructor\": \"error\",\n \"no-async-promise-executor\": \"error\",\n \"no-caller\": \"error\",\n \"no-case-declarations\": \"error\",\n \"no-class-assign\": \"error\",\n \"no-compare-neg-zero\": \"error\",\n \"no-cond-assign\": [\"error\", \"always\"],\n \"no-console\": [\"error\", { allow: [\"warn\", \"error\"] }],\n \"no-const-assign\": \"error\",\n \"no-control-regex\": \"error\",\n \"no-debugger\": \"error\",\n \"no-delete-var\": \"error\",\n \"no-dupe-args\": \"error\",\n \"no-dupe-class-members\": \"error\",\n \"no-dupe-keys\": \"error\",\n \"no-duplicate-case\": \"error\",\n \"no-empty\": [\"error\", { allowEmptyCatch: true }],\n \"no-empty-character-class\": \"error\",\n \"no-empty-pattern\": \"error\",\n \"no-eval\": \"error\",\n \"no-ex-assign\": \"error\",\n \"no-extend-native\": \"error\",\n \"no-extra-bind\": \"error\",\n \"no-extra-boolean-cast\": \"error\",\n \"no-fallthrough\": \"error\",\n \"no-func-assign\": \"error\",\n \"no-global-assign\": \"error\",\n \"no-implied-eval\": \"error\",\n \"no-import-assign\": \"error\",\n \"no-invalid-regexp\": \"error\",\n \"no-irregular-whitespace\": \"error\",\n \"no-iterator\": \"error\",\n \"no-labels\": [\"error\", { allowLoop: false, allowSwitch: false }],\n \"no-lone-blocks\": \"error\",\n \"no-loss-of-precision\": \"error\",\n \"no-misleading-character-class\": \"error\",\n \"no-multi-str\": \"error\",\n \"no-new\": \"error\",\n \"no-new-func\": \"error\",\n \"no-new-native-nonconstructor\": \"error\",\n \"no-new-wrappers\": \"error\",\n \"no-obj-calls\": \"error\",\n \"no-octal\": \"error\",\n \"no-octal-escape\": \"error\",\n \"no-proto\": \"error\",\n \"no-prototype-builtins\": \"error\",\n \"no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"no-regex-spaces\": \"error\",\n \"no-restricted-globals\": [\n \"error\",\n { message: \"Use `globalThis` instead.\", name: \"global\" },\n { message: \"Use `globalThis` instead.\", name: \"self\" },\n ],\n \"no-restricted-properties\": [\n \"error\",\n {\n message:\n \"Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.\",\n property: \"__proto__\",\n },\n {\n message: \"Use `Object.defineProperty` instead.\",\n property: \"__defineGetter__\",\n },\n {\n message: \"Use `Object.defineProperty` instead.\",\n property: \"__defineSetter__\",\n },\n {\n message: \"Use `Object.getOwnPropertyDescriptor` instead.\",\n property: \"__lookupGetter__\",\n },\n {\n message: \"Use `Object.getOwnPropertyDescriptor` instead.\",\n property: \"__lookupSetter__\",\n },\n ],\n \"no-restricted-syntax\": [\n \"error\",\n \"TSEnumDeclaration[const=true]\",\n \"TSExportAssignment\",\n ],\n \"no-self-assign\": [\"error\", { props: true }],\n \"no-self-compare\": \"error\",\n \"no-sequences\": \"error\",\n \"no-shadow-restricted-names\": \"error\",\n \"no-sparse-arrays\": \"error\",\n \"no-template-curly-in-string\": \"error\",\n \"no-this-before-super\": \"error\",\n \"no-throw-literal\": \"error\",\n \"no-undef-init\": \"error\",\n \"no-unexpected-multiline\": \"error\",\n \"no-unmodified-loop-condition\": \"error\",\n \"no-unneeded-ternary\": [\"error\", { defaultAssignment: false }],\n \"no-unreachable\": \"error\",\n \"no-unreachable-loop\": \"error\",\n \"no-unsafe-finally\": \"error\",\n \"no-unsafe-negation\": \"error\",\n \"no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n\n \"no-useless-backreference\": \"error\",\n \"no-useless-call\": \"error\",\n \"no-useless-catch\": \"error\",\n \"no-useless-computed-key\": \"error\",\n \"no-useless-constructor\": \"error\",\n \"no-useless-rename\": \"error\",\n \"no-useless-return\": \"error\",\n \"no-var\": \"error\",\n \"no-with\": \"error\",\n \"object-shorthand\": [\n \"error\",\n \"always\",\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n \"one-var\": [\"error\", { initialized: \"never\" }],\n \"prefer-arrow-callback\": [\n \"error\",\n {\n allowNamedFunctions: false,\n allowUnboundThis: true,\n },\n ],\n \"prefer-const\": [\n \"error\",\n {\n destructuring: \"all\",\n ignoreReadBeforeAssign: true,\n },\n ],\n \"prefer-exponentiation-operator\": \"error\",\n \"prefer-promise-reject-errors\": \"error\",\n \"prefer-regex-literals\": [\"error\", { disallowRedundantWrapping: true }],\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"prefer-template\": \"error\",\n \"symbol-description\": \"error\",\n \"unicode-bom\": [\"error\", \"never\"],\n \"unused-imports/no-unused-imports\": \"error\",\n \"unused-imports/no-unused-vars\": [\n \"error\",\n {\n args: \"after-used\",\n argsIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n vars: \"all\",\n varsIgnorePattern: \"^_\",\n },\n ],\n \"use-isnan\": [\n \"error\",\n { enforceForIndexOf: true, enforceForSwitchCase: true },\n ],\n \"valid-typeof\": [\"error\", { requireStringLiterals: true }],\n \"vars-on-top\": \"error\",\n yoda: [\"error\", \"never\"],\n },\n },\n ];\n}\n","import jsdocPlugin from \"eslint-plugin-jsdoc\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function jsdoc(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/jsdoc/rules\",\n plugins: {\n jsdoc: jsdocPlugin,\n },\n rules: {\n \"jsdoc/check-access\": \"warn\",\n \"jsdoc/check-param-names\": \"warn\",\n \"jsdoc/check-property-names\": \"warn\",\n \"jsdoc/check-types\": \"warn\",\n \"jsdoc/empty-tags\": \"warn\",\n \"jsdoc/implements-on-classes\": \"warn\",\n \"jsdoc/no-defaults\": \"warn\",\n \"jsdoc/no-multi-asterisks\": \"warn\",\n \"jsdoc/require-param-name\": \"warn\",\n \"jsdoc/require-property\": \"warn\",\n \"jsdoc/require-property-description\": \"warn\",\n \"jsdoc/require-property-name\": \"warn\",\n \"jsdoc/require-returns-check\": \"warn\",\n \"jsdoc/require-returns-description\": \"warn\",\n \"jsdoc/require-yields-check\": \"warn\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginNode } from \"../plugins\";\n\nexport function node(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/node/rules\",\n plugins: {\n node: pluginNode,\n },\n rules: {\n \"node/handle-callback-err\": [\"error\", \"^(err|error)$\"],\n \"node/no-deprecated-api\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-new-require\": \"error\",\n \"node/no-path-concat\": \"error\",\n \"node/prefer-global/buffer\": [\"error\"],\n \"node/prefer-global/process\": [\"error\"],\n \"node/process-exit-as-throw\": \"error\",\n },\n },\n ];\n}\n","import pluginReact from \"eslint-plugin-react\";\nimport pluginReactHooks from \"eslint-plugin-react-hooks\";\nimport { isPackageExists } from \"local-pkg\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nconst nextJsPackages = [\"next\"];\n\nconst forbiddenLibraries = [\n \"@headlessui/react\",\n \"@mui/material\",\n \"@chakra-ui/react\",\n \"@chakra-ui/core\",\n \"@nextui-org/react\",\n \"react-bootstrap\",\n \"antd\",\n];\n\nexport async function react(): Promise<ConfigWithExtends[]> {\n const isUsingNext = nextJsPackages.some((index) => isPackageExists(index));\n\n const nextjsConfig: ConfigWithExtends[] = [];\n\n if (isUsingNext) {\n // @ts-expect-error ???\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const nextPlugin = await import(\"@next/eslint-plugin-next\").then(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (d) => d.default,\n );\n\n nextjsConfig.push(\n {\n name: \"solvro/next/setup\",\n plugins: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"@next/next\": nextPlugin,\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n rules: nextPlugin.configs.recommended.rules,\n },\n {\n files: [\n \"**/app/**/{page,loading,layout}.{js,jsx,ts,tsx}\",\n \"**/pages/**/*.{js,jsx,ts,tsx}\",\n ],\n name: \"solvro/next/pages\",\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return [\n {\n name: \"solvro/react/setup\",\n plugins: {\n // @ts-expect-error ???\n react: pluginReact,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"react-hooks\": pluginReactHooks,\n },\n },\n ...nextjsConfig,\n {\n files: [\"**/*.{js,jsx,mjs,cjs,ts,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n },\n sourceType: \"module\",\n },\n settings: {\n react: {\n version: \"detect\",\n },\n },\n name: \"solvro/react/rules\",\n rules: {\n ...pluginReact.configs.flat?.recommended.rules,\n ...pluginReact.configs.flat?.[\"jsx-runtime\"].rules,\n \"react/no-danger\": \"warn\",\n \"react/jsx-no-leaked-render\": \"warn\",\n // recommended rules react-hooks\n \"react-hooks/exhaustive-deps\": \"warn\",\n \"react-hooks/rules-of-hooks\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n unnamedComponents: \"arrow-function\",\n namedComponents: \"function-declaration\",\n },\n ],\n \"react/hook-use-state\": [\n \"error\",\n {\n allowDestructuredState: true,\n },\n ],\n \"react/no-array-index-key\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: forbiddenLibraries.map((library) => ({\n name: library,\n message: `Please use ui.shadcn.com components instead.`,\n })),\n },\n ],\n },\n },\n {\n name: \"solvro/react/disables\",\n files: [\"**/components/ui/*.{jsx,tsx}\"],\n rules: {\n \"react/prop-types\": \"off\",\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": \"off\",\n \"@typescript-eslint/restrict-template-expressions\": \"off\",\n \"unicorn/no-document-cookie\": \"off\",\n \"@typescript-eslint/no-redeclare\": \"off\",\n \"@typescript-eslint/no-deprecated\": \"off\",\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function typescriptRelaxed(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.recommendedTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-relaxed/rules\",\n rules: {\n \"@typescript-eslint/no-unsafe-return\": \"off\",\n \"@typescript-eslint/require-await\": \"off\",\n \"@typescript-eslint/no-misused-promises\": [\n \"error\",\n {\n checksVoidReturn: false,\n },\n ],\n \"unused-imports/no-unused-vars\": \"off\",\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n varsIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n },\n ],\n \"@typescript-eslint/no-empty-object-type\": \"off\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n \"@typescript-eslint/no-non-null-assertion\": \"error\",\n \"@typescript-eslint/no-unnecessary-template-expression\": \"error\",\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"error\",\n {\n allowNullableObject: false,\n },\n ],\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu } from \"../plugins\";\n\nexport function typescriptStrict(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.strictTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-strict/setup\",\n plugins: {\n antfu: pluginAntfu,\n },\n },\n {\n files: [\"**/*.{ts,tsx}\"],\n name: \"solvro/typescript-strict/rules\",\n rules: {\n \"@typescript-eslint/ban-ts-comment\": [\n \"error\",\n { \"ts-expect-error\": \"allow-with-description\" },\n ],\n \"@typescript-eslint/consistent-type-definitions\": [\n \"error\",\n \"interface\",\n ],\n \"@typescript-eslint/consistent-type-imports\": [\n \"error\",\n {\n disallowTypeAnnotations: false,\n prefer: \"type-imports\",\n },\n ],\n \"@typescript-eslint/method-signature-style\": [\"error\", \"property\"], // https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful\n \"@typescript-eslint/no-dupe-class-members\": \"error\",\n \"@typescript-eslint/no-empty-object-type\": [\n \"error\",\n { allowInterfaces: \"always\" },\n ],\n \"@typescript-eslint/no-import-type-side-effects\": \"error\",\n \"@typescript-eslint/no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"@typescript-eslint/no-require-imports\": \"error\",\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-use-before-define\": [\n \"error\",\n { classes: false, functions: false, variables: true },\n ],\n \"@typescript-eslint/no-wrapper-object-types\": \"error\",\n // prevent unnecessary use of void operator\n \"@typescript-eslint/no-meaningless-void-operator\": \"error\",\n // \"using non-null assertions cancels the benefits of the strict\n // null-checking mode.\"\n // warn when one of the types in union / intersection overrides others\n \"@typescript-eslint/no-redundant-type-constituents\": \"warn\",\n // prevent variables shadowing\n \"no-shadow\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n // prevent assignment of this, signals a wrong usage of it\n \"@typescript-eslint/no-this-alias\": \"error\",\n // prevent throwing non-error\n \"no-throw-literal\": \"off\",\n\n // prevent unnecessary explicitly adding a default type argument\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n // prevent unnecessary assertions that won't change the outcome\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n // prevent extending default types\n \"@typescript-eslint/no-unnecessary-type-constraint\": \"error\",\n // force typing out function arguments\n \"@typescript-eslint/no-unsafe-argument\": \"error\",\n // prevent usage of any via reassigning\n \"@typescript-eslint/no-unsafe-assignment\": \"error\",\n // prevent usage of any via calling it\n \"@typescript-eslint/no-unsafe-call\": \"error\",\n // prevent usage of any via using it's members\n \"@typescript-eslint/no-unsafe-member-access\": \"error\",\n // prevent reverting any from functions\n \"@typescript-eslint/no-unsafe-return\": \"error\",\n // prevent unused expressions\n \"no-unused-expressions\": \"off\",\n // var<'string'> = 'string' -> var = 'string' as const\n \"@typescript-eslint/prefer-as-const\": \"error\",\n // force initializing enums\n \"@typescript-eslint/prefer-enum-initializers\": \"error\",\n // prefer for x of obj to for let i = 0...\n \"@typescript-eslint/prefer-for-of\": \"error\",\n // prefer includes() to indexOf()\n \"@typescript-eslint/prefer-includes\": \"error\",\n // use literals for enum initialization\n \"@typescript-eslint/prefer-literal-enum-member\": \"error\",\n // prefer safe cascade of a value when dealing with undefined or null\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n // prefer optional chaining (a?.b)\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n // prefer using type parameter for Array.reduce\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n // prefer RegExp#exec when no /g flag in regex\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n // enforce `this` as a type when stating type for a method\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n // enforce startsWith to indexOf === 0\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n // prevents default behavior of .sort() - which is confusing\n \"@typescript-eslint/require-array-sort-compare\": \"error\",\n // no async functions without awaits in body\n \"require-await\": \"off\",\n \"@typescript-eslint/require-await\": \"error\",\n // prevent number + string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n // only allow string in templates\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n // prevent returning await\n \"no-return-await\": \"off\",\n \"@typescript-eslint/return-await\": \"error\",\n // only booleans in ifs and whiles\n \"@typescript-eslint/strict-boolean-expressions\": \"error\",\n // check if all paths are followed in code\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"dot-notation\": \"off\",\n \"no-implied-eval\": \"off\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-for-in-array\": \"error\",\n \"@typescript-eslint/no-implied-eval\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/promise-function-async\": \"error\",\n \"@typescript-eslint/unbound-method\": \"error\",\n \"no-restricted-imports\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginUnicorn } from \"../plugins\";\n\nexport function unicorn(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/unicorn/rules\",\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs[\"flat/recommended\"].rules,\n \"unicorn/no-array-reduce\": \"off\",\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-useless-switch-case\": \"off\",\n \"unicorn/prefer-global-this\": \"off\",\n \"unicorn/prevent-abbreviations\": [\n \"error\",\n {\n replacements: {\n env: false,\n envs: false,\n props: false,\n prop: false,\n ref: false,\n },\n },\n ],\n },\n },\n ];\n}\n"],"mappings":"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","names":["tseslint","default","default","default","globals","globals","default","default","nextjsConfig","tseslint","tseslint","tseslint","default","default","tseslint"]}
|
1
|
+
{"version":3,"sources":["../../node_modules/eslint-config-flat-gitignore/dist/index.mjs","../../node_modules/@eslint/compat/dist/esm/index.js","../../src/eslint/index.ts","../../src/eslint/configs/a11y.ts","../../src/eslint/plugins.ts","../../src/eslint/configs/comments.ts","../../src/eslint/configs/disables.ts","../../src/eslint/globs.ts","../../src/eslint/configs/formatters.ts","../../src/eslint/configs/ignores.ts","../../src/eslint/configs/imports.ts","../../src/eslint/configs/javascript.ts","../../src/eslint/configs/jsdoc.ts","../../src/eslint/configs/node.ts","../../src/eslint/configs/react.ts","../../src/eslint/configs/typescript-relaxed.ts","../../src/eslint/configs/typescript-strict.ts","../../src/eslint/configs/unicorn.ts"],"sourcesContent":["import fs from 'node:fs';\nimport process from 'node:process';\nimport path from 'node:path';\nimport { findUpSync } from 'find-up-simple';\nimport { convertIgnorePatternToMinimatch } from '@eslint/compat';\n\nconst GITIGNORE = \".gitignore\";\nfunction ignore(options = {}) {\n const ignores = [];\n const {\n root = false,\n files: _files = root ? GITIGNORE : findUpSync(GITIGNORE) || [],\n strict = true,\n cwd = process.cwd()\n } = options;\n const files = Array.isArray(_files) ? _files : [_files];\n for (const file of files) {\n let content = \"\";\n try {\n content = fs.readFileSync(file, \"utf8\");\n } catch (error) {\n if (strict)\n throw error;\n continue;\n }\n const relativePath = path.relative(cwd, path.dirname(file)).replaceAll(\"\\\\\", \"/\");\n const globs = content.split(/\\r?\\n/u).filter((line) => line && !line.startsWith(\"#\")).map((line) => convertIgnorePatternToMinimatch(line)).map((glob) => relativeMinimatch(glob, relativePath, cwd)).filter((glob) => glob !== null);\n ignores.push(...globs);\n }\n if (strict && files.length === 0)\n throw new Error(\"No .gitignore file found\");\n return {\n name: options.name || \"gitignore\",\n ignores\n };\n}\nfunction relativeMinimatch(pattern, relativePath, cwd) {\n if ([\"\", \".\", \"/\"].includes(relativePath))\n return pattern;\n const negated = pattern.startsWith(\"!\") ? \"!\" : \"\";\n let cleanPattern = negated ? pattern.slice(1) : pattern;\n if (!relativePath.endsWith(\"/\"))\n relativePath = `${relativePath}/`;\n const isParent = relativePath.startsWith(\"..\");\n if (!isParent)\n return `${negated}${relativePath}${cleanPattern}`;\n if (!relativePath.match(/^(\\.\\.\\/)+$/))\n throw new Error(\"The ignore file location should be either a parent or child directory\");\n if (cleanPattern.startsWith(\"**\"))\n return pattern;\n const parents = path.relative(path.resolve(cwd, relativePath), cwd).split(/[/\\\\]/);\n while (parents.length && cleanPattern.startsWith(`${parents[0]}/`)) {\n cleanPattern = cleanPattern.slice(parents[0].length + 1);\n parents.shift();\n }\n if (cleanPattern.startsWith(\"**\"))\n return `${negated}${cleanPattern}`;\n if (parents.length === 0)\n return `${negated}${cleanPattern}`;\n return null;\n}\n\nexport { ignore as default };\n","// @ts-self-types=\"./index.d.ts\"\nimport fs from 'node:fs';\nimport path from 'node:path';\n\n/**\n * @filedescription Functions to fix up rules to provide missing methods on the `context` object.\n * @author Nicholas C. Zakas\n */\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint\").ESLint.Plugin} FixupPluginDefinition */\n/** @typedef {import(\"eslint\").Rule.RuleModule} FixupRuleDefinition */\n/** @typedef {FixupRuleDefinition[\"create\"]} FixupLegacyRuleDefinition */\n/** @typedef {import(\"eslint\").Linter.Config} FixupConfig */\n/** @typedef {Array<FixupConfig>} FixupConfigArray */\n\n//-----------------------------------------------------------------------------\n// Data\n//-----------------------------------------------------------------------------\n\n/**\n * The removed methods from the `context` object that need to be added back.\n * The keys are the name of the method on the `context` object and the values\n * are the name of the method on the `sourceCode` object.\n * @type {Map<string, string>}\n */\nconst removedMethodNames = new Map([\n\t[\"getSource\", \"getText\"],\n\t[\"getSourceLines\", \"getLines\"],\n\t[\"getAllComments\", \"getAllComments\"],\n\t[\"getDeclaredVariables\", \"getDeclaredVariables\"],\n\t[\"getNodeByRangeIndex\", \"getNodeByRangeIndex\"],\n\t[\"getCommentsBefore\", \"getCommentsBefore\"],\n\t[\"getCommentsAfter\", \"getCommentsAfter\"],\n\t[\"getCommentsInside\", \"getCommentsInside\"],\n\t[\"getJSDocComment\", \"getJSDocComment\"],\n\t[\"getFirstToken\", \"getFirstToken\"],\n\t[\"getFirstTokens\", \"getFirstTokens\"],\n\t[\"getLastToken\", \"getLastToken\"],\n\t[\"getLastTokens\", \"getLastTokens\"],\n\t[\"getTokenAfter\", \"getTokenAfter\"],\n\t[\"getTokenBefore\", \"getTokenBefore\"],\n\t[\"getTokenByRangeStart\", \"getTokenByRangeStart\"],\n\t[\"getTokens\", \"getTokens\"],\n\t[\"getTokensAfter\", \"getTokensAfter\"],\n\t[\"getTokensBefore\", \"getTokensBefore\"],\n\t[\"getTokensBetween\", \"getTokensBetween\"],\n]);\n\n/**\n * Tracks the original rule definition and the fixed-up rule definition.\n * @type {WeakMap<FixupRuleDefinition|FixupLegacyRuleDefinition,FixupRuleDefinition>}\n */\nconst fixedUpRuleReplacements = new WeakMap();\n\n/**\n * Tracks all of the fixed up rule definitions so we don't duplicate effort.\n * @type {WeakSet<FixupRuleDefinition>}\n */\nconst fixedUpRules = new WeakSet();\n\n/**\n * Tracks the original plugin definition and the fixed-up plugin definition.\n * @type {WeakMap<FixupPluginDefinition,FixupPluginDefinition>}\n */\nconst fixedUpPluginReplacements = new WeakMap();\n\n/**\n * Tracks all of the fixed up plugin definitions so we don't duplicate effort.\n * @type {WeakSet<FixupPluginDefinition>}\n */\nconst fixedUpPlugins = new WeakSet();\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Takes the given rule and creates a new rule with the `create()` method wrapped\n * to provide the missing methods on the `context` object.\n * @param {FixupRuleDefinition|FixupLegacyRuleDefinition} ruleDefinition The rule to fix up.\n * @returns {FixupRuleDefinition} The fixed-up rule.\n */\nfunction fixupRule(ruleDefinition) {\n\t// first check if we've already fixed up this rule\n\tif (fixedUpRuleReplacements.has(ruleDefinition)) {\n\t\treturn fixedUpRuleReplacements.get(ruleDefinition);\n\t}\n\n\tconst isLegacyRule = typeof ruleDefinition === \"function\";\n\n\t// check to see if this rule definition has already been fixed up\n\tif (!isLegacyRule && fixedUpRules.has(ruleDefinition)) {\n\t\treturn ruleDefinition;\n\t}\n\n\tconst originalCreate = isLegacyRule\n\t\t? ruleDefinition\n\t\t: ruleDefinition.create.bind(ruleDefinition);\n\n\tfunction ruleCreate(context) {\n\t\t// if getScope is already there then no need to create old methods\n\t\tif (\"getScope\" in context) {\n\t\t\treturn originalCreate(context);\n\t\t}\n\n\t\tconst sourceCode = context.sourceCode;\n\t\tlet currentNode = sourceCode.ast;\n\n\t\tconst newContext = Object.assign(Object.create(context), {\n\t\t\tparserServices: sourceCode.parserServices,\n\n\t\t\t/*\n\t\t\t * The following methods rely on the current node in the traversal,\n\t\t\t * so we need to add them manually.\n\t\t\t */\n\t\t\tgetScope() {\n\t\t\t\treturn sourceCode.getScope(currentNode);\n\t\t\t},\n\n\t\t\tgetAncestors() {\n\t\t\t\treturn sourceCode.getAncestors(currentNode);\n\t\t\t},\n\n\t\t\tmarkVariableAsUsed(variable) {\n\t\t\t\tsourceCode.markVariableAsUsed(variable, currentNode);\n\t\t\t},\n\t\t});\n\n\t\t// add passthrough methods\n\t\tfor (const [\n\t\t\tcontextMethodName,\n\t\t\tsourceCodeMethodName,\n\t\t] of removedMethodNames) {\n\t\t\tnewContext[contextMethodName] =\n\t\t\t\tsourceCode[sourceCodeMethodName].bind(sourceCode);\n\t\t}\n\n\t\t// freeze just like the original context\n\t\tObject.freeze(newContext);\n\n\t\t/*\n\t\t * Create the visitor object using the original create() method.\n\t\t * This is necessary to ensure that the visitor object is created\n\t\t * with the correct context.\n\t\t */\n\t\tconst visitor = originalCreate(newContext);\n\n\t\t/*\n\t\t * Wrap each method in the visitor object to update the currentNode\n\t\t * before calling the original method. This is necessary because the\n\t\t * methods like `getScope()` need to know the current node.\n\t\t */\n\t\tfor (const [methodName, method] of Object.entries(visitor)) {\n\t\t\t/*\n\t\t\t * Node is the second argument to most code path methods,\n\t\t\t * and the third argument for onCodePathSegmentLoop.\n\t\t\t */\n\t\t\tif (methodName.startsWith(\"on\")) {\n\t\t\t\t// eslint-disable-next-line no-loop-func -- intentionally updating shared `currentNode` variable\n\t\t\t\tvisitor[methodName] = (...args) => {\n\t\t\t\t\tcurrentNode =\n\t\t\t\t\t\targs[methodName === \"onCodePathSegmentLoop\" ? 2 : 1];\n\n\t\t\t\t\treturn method.call(visitor, ...args);\n\t\t\t\t};\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-loop-func -- intentionally updating shared `currentNode` variable\n\t\t\tvisitor[methodName] = (...args) => {\n\t\t\t\tcurrentNode = args[0];\n\n\t\t\t\treturn method.call(visitor, ...args);\n\t\t\t};\n\t\t}\n\n\t\treturn visitor;\n\t}\n\n\tconst newRuleDefinition = {\n\t\t...(isLegacyRule ? undefined : ruleDefinition),\n\t\tcreate: ruleCreate,\n\t};\n\n\t// copy `schema` property of function-style rule or top-level `schema` property of object-style rule into `meta` object\n\t// @ts-ignore -- top-level `schema` property was not offically supported for object-style rules so it doesn't exist in types\n\tconst { schema } = ruleDefinition;\n\tif (schema) {\n\t\tif (!newRuleDefinition.meta) {\n\t\t\tnewRuleDefinition.meta = { schema };\n\t\t} else {\n\t\t\tnewRuleDefinition.meta = {\n\t\t\t\t...newRuleDefinition.meta,\n\t\t\t\t// top-level `schema` had precedence over `meta.schema` so it's okay to overwrite `meta.schema` if it exists\n\t\t\t\tschema,\n\t\t\t};\n\t\t}\n\t}\n\n\t// cache the fixed up rule\n\tfixedUpRuleReplacements.set(ruleDefinition, newRuleDefinition);\n\tfixedUpRules.add(newRuleDefinition);\n\n\treturn newRuleDefinition;\n}\n\n/**\n * Takes the given plugin and creates a new plugin with all of the rules wrapped\n * to provide the missing methods on the `context` object.\n * @param {FixupPluginDefinition} plugin The plugin to fix up.\n * @returns {FixupPluginDefinition} The fixed-up plugin.\n */\nfunction fixupPluginRules(plugin) {\n\t// first check if we've already fixed up this plugin\n\tif (fixedUpPluginReplacements.has(plugin)) {\n\t\treturn fixedUpPluginReplacements.get(plugin);\n\t}\n\n\t/*\n\t * If the plugin has already been fixed up, or if the plugin\n\t * doesn't have any rules, we can just return it.\n\t */\n\tif (fixedUpPlugins.has(plugin) || !plugin.rules) {\n\t\treturn plugin;\n\t}\n\n\tconst newPlugin = {\n\t\t...plugin,\n\t\trules: Object.fromEntries(\n\t\t\tObject.entries(plugin.rules).map(([ruleId, ruleDefinition]) => [\n\t\t\t\truleId,\n\t\t\t\tfixupRule(ruleDefinition),\n\t\t\t]),\n\t\t),\n\t};\n\n\t// cache the fixed up plugin\n\tfixedUpPluginReplacements.set(plugin, newPlugin);\n\tfixedUpPlugins.add(newPlugin);\n\n\treturn newPlugin;\n}\n\n/**\n * Takes the given configuration and creates a new configuration with all of the\n * rules wrapped to provide the missing methods on the `context` object.\n * @param {FixupConfigArray|FixupConfig} config The configuration to fix up.\n * @returns {FixupConfigArray} The fixed-up configuration.\n */\nfunction fixupConfigRules(config) {\n\tconst configs = Array.isArray(config) ? config : [config];\n\n\treturn configs.map(configItem => {\n\t\tif (!configItem.plugins) {\n\t\t\treturn configItem;\n\t\t}\n\n\t\tconst newPlugins = Object.fromEntries(\n\t\t\tObject.entries(configItem.plugins).map(([pluginName, plugin]) => [\n\t\t\t\tpluginName,\n\t\t\t\tfixupPluginRules(plugin),\n\t\t\t]),\n\t\t);\n\n\t\treturn {\n\t\t\t...configItem,\n\t\t\tplugins: newPlugins,\n\t\t};\n\t});\n}\n\n/**\n * @fileoverview Ignore file utilities for the compat package.\n * @author Nicholas C. Zakas\n */\n\n\n//-----------------------------------------------------------------------------\n// Types\n//-----------------------------------------------------------------------------\n\n/** @typedef {import(\"eslint\").Linter.Config} FlatConfig */\n\n//-----------------------------------------------------------------------------\n// Exports\n//-----------------------------------------------------------------------------\n\n/**\n * Converts an ESLint ignore pattern to a minimatch pattern.\n * @param {string} pattern The .eslintignore or .gitignore pattern to convert.\n * @returns {string} The converted pattern.\n */\nfunction convertIgnorePatternToMinimatch(pattern) {\n\tconst isNegated = pattern.startsWith(\"!\");\n\tconst negatedPrefix = isNegated ? \"!\" : \"\";\n\tconst patternToTest = (isNegated ? pattern.slice(1) : pattern).trimEnd();\n\n\t// special cases\n\tif ([\"\", \"**\", \"/**\", \"**/\"].includes(patternToTest)) {\n\t\treturn `${negatedPrefix}${patternToTest}`;\n\t}\n\n\tconst firstIndexOfSlash = patternToTest.indexOf(\"/\");\n\n\tconst matchEverywherePrefix =\n\t\tfirstIndexOfSlash < 0 || firstIndexOfSlash === patternToTest.length - 1\n\t\t\t? \"**/\"\n\t\t\t: \"\";\n\n\tconst patternWithoutLeadingSlash =\n\t\tfirstIndexOfSlash === 0 ? patternToTest.slice(1) : patternToTest;\n\n\t/*\n\t * Escape `{` and `(` because in gitignore patterns they are just\n\t * literal characters without any specific syntactic meaning,\n\t * while in minimatch patterns they can form brace expansion or extglob syntax.\n\t *\n\t * For example, gitignore pattern `src/{a,b}.js` ignores file `src/{a,b}.js`.\n\t * But, the same minimatch pattern `src/{a,b}.js` ignores files `src/a.js` and `src/b.js`.\n\t * Minimatch pattern `src/\\{a,b}.js` is equivalent to gitignore pattern `src/{a,b}.js`.\n\t */\n\tconst escapedPatternWithoutLeadingSlash =\n\t\tpatternWithoutLeadingSlash.replaceAll(\n\t\t\t/(?=((?:\\\\.|[^{(])*))\\1([{(])/guy,\n\t\t\t\"$1\\\\$2\",\n\t\t);\n\n\tconst matchInsideSuffix = patternToTest.endsWith(\"/**\") ? \"/*\" : \"\";\n\n\treturn `${negatedPrefix}${matchEverywherePrefix}${escapedPatternWithoutLeadingSlash}${matchInsideSuffix}`;\n}\n\n/**\n * Reads an ignore file and returns an object with the ignore patterns.\n * @param {string} ignoreFilePath The absolute path to the ignore file.\n * @returns {FlatConfig} An object with an `ignores` property that is an array of ignore patterns.\n * @throws {Error} If the ignore file path is not an absolute path.\n */\nfunction includeIgnoreFile(ignoreFilePath) {\n\tif (!path.isAbsolute(ignoreFilePath)) {\n\t\tthrow new Error(\"The ignore file location must be an absolute path.\");\n\t}\n\n\tconst ignoreFile = fs.readFileSync(ignoreFilePath, \"utf8\");\n\tconst lines = ignoreFile.split(/\\r?\\n/u);\n\n\treturn {\n\t\tname: \"Imported .gitignore patterns\",\n\t\tignores: lines\n\t\t\t.map(line => line.trim())\n\t\t\t.filter(line => line && !line.startsWith(\"#\"))\n\t\t\t.map(convertIgnorePatternToMinimatch),\n\t};\n}\n\nexport { convertIgnorePatternToMinimatch, fixupConfigRules, fixupPluginRules, fixupRule, includeIgnoreFile };\n","import gitignore from \"eslint-config-flat-gitignore\";\nimport { findUpSync } from \"find-up-simple\";\nimport { isPackageListed } from \"local-pkg\";\nimport path from \"node:path\";\nimport tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { configApp } from \"@adonisjs/eslint-config\";\n\nimport { a11y } from \"./configs/a11y\";\nimport { comments } from \"./configs/comments\";\nimport { disables } from \"./configs/disables\";\nimport { formatters } from \"./configs/formatters\";\nimport { ignores } from \"./configs/ignores\";\nimport { imports } from \"./configs/imports\";\nimport { javascript } from \"./configs/javascript\";\nimport { jsdoc } from \"./configs/jsdoc\";\nimport { node } from \"./configs/node\";\nimport { react } from \"./configs/react\";\nimport { typescriptRelaxed } from \"./configs/typescript-relaxed\";\nimport { typescriptStrict } from \"./configs/typescript-strict\";\nimport { unicorn } from \"./configs/unicorn\";\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\nconst builtinAdonisConfig: ConfigWithExtends[] = configApp();\n\nconst adonisConfig: ConfigWithExtends[] = [\n ...builtinAdonisConfig,\n ...node(),\n ...imports(),\n {\n rules: {\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: [\"enum\", \"enumMember\", \"class\", \"interface\", \"typeLike\"],\n format: [\"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: [\"classProperty\", \"classMethod\", \"method\", \"variableLike\"],\n format: [\"camelCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: \"variable\",\n format: [\"camelCase\", \"UPPER_CASE\", \"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n ],\n },\n },\n];\n\nconst nextjsConfig = async (): Promise<ConfigWithExtends[]> => [\n ...a11y(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n ...(await react()),\n];\n\nconst configs: ConfigWithExtends[] = [\n gitignore(),\n ...javascript(),\n ...jsdoc(),\n ...comments(),\n ...typescriptRelaxed(),\n];\n\nconst defaultOverrides = [...ignores(), ...formatters(), ...disables()];\n\nexport const solvro = async (...overrides: ConfigWithExtends[]) => {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isNext = await isPackageListed(\"next\");\n\n if (isNext && isAdonis) {\n throw new Error(\n \"You can't use both Adonis and Next.js in the same project\",\n );\n }\n\n const newConfig: ConfigWithExtends[] = [];\n\n if (isAdonis) {\n newConfig.push(...adonisConfig);\n }\n\n if (isNext) {\n newConfig.push(...(await nextjsConfig()));\n }\n\n const tsConfigPath = findUpSync(\"tsconfig.json\", {\n cwd: process.cwd(),\n });\n\n if (tsConfigPath == null) {\n throw new Error(\"No tsconfig.json found\");\n }\n\n const rootDirectory = path.dirname(tsConfigPath);\n\n configs.push({\n languageOptions: {\n parserOptions: {\n projectService: true,\n tsconfigRootDir: rootDirectory,\n },\n },\n });\n\n return tseslint.config(\n ...configs,\n ...newConfig,\n ...defaultOverrides,\n ...overrides,\n );\n};\n","import jsxA11y from \"eslint-plugin-jsx-a11y\";\nimport globals from \"globals\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function a11y(): ConfigWithExtends[] {\n return [\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...jsxA11y.flatConfigs.recommended,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n languageOptions: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...jsxA11y.flatConfigs.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser,\n },\n },\n settings: {\n \"jsx-a11y\": {\n components: {\n Input: \"input\",\n Button: \"button\",\n Link: \"a\",\n Label: \"label\",\n Select: \"select\",\n Textarea: \"textarea\",\n },\n attributes: {\n for: [\"htmlFor\", \"for\"],\n },\n },\n },\n },\n ];\n}\n","//@ts-expect-error not working\nexport { default as pluginComments } from \"@eslint-community/eslint-plugin-eslint-comments\";\nexport { default as pluginAntfu } from \"eslint-plugin-antfu\";\n//@ts-expect-error not working too\nexport { default as pluginImport } from \"eslint-plugin-import\";\nexport { default as pluginNode } from \"eslint-plugin-n\";\nexport { default as pluginUnicorn } from \"eslint-plugin-unicorn\";\nexport { default as pluginUnusedImports } from \"eslint-plugin-unused-imports\";\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginComments } from \"../plugins\";\n\nexport function comments(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/eslint-comments/rules\",\n plugins: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"eslint-comments\": pluginComments,\n },\n rules: {\n \"eslint-comments/no-aggregating-enable\": \"error\",\n \"eslint-comments/no-duplicate-disable\": \"error\",\n \"eslint-comments/no-unlimited-disable\": \"error\",\n \"eslint-comments/no-unused-enable\": \"error\",\n },\n },\n ];\n}\n","import tseslint, { type ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_SRC, GLOB_SRC_EXT } from \"../globs\";\n\nexport function disables(): ConfigWithExtends[] {\n return [\n {\n files: [`**/scripts/${GLOB_SRC}`],\n name: \"solvro/disables/scripts\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n \"@typescript-eslint/explicit-function-return-type\": \"off\",\n },\n },\n {\n rules: {\n \"prettier/prettier\": \"off\",\n },\n },\n {\n files: [`**/cli/${GLOB_SRC}`, `**/cli.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/cli\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n },\n },\n {\n files: [\"**/bin/**/*\", `**/bin.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/bin\",\n rules: {\n \"antfu/no-import-dist\": \"off\",\n \"antfu/no-import-node-modules-by-path\": \"off\",\n },\n },\n {\n files: [\"**/*.d.?([cm])ts\"],\n name: \"solvro/disables/dts\",\n rules: {\n \"eslint-comments/no-unlimited-disable\": \"off\",\n \"import-x/no-duplicates\": \"off\",\n \"no-restricted-syntax\": \"off\",\n \"unused-imports/no-unused-vars\": \"off\",\n },\n },\n {\n files: [\"**/*.js\", \"**/*.cjs\"],\n name: \"solvro/disables/cjs\",\n rules: {\n \"@typescript-eslint/no-require-imports\": \"off\",\n },\n },\n {\n files: [`**/*.config.${GLOB_SRC_EXT}`, `**/*.config.*.${GLOB_SRC_EXT}`],\n name: \"solvro/disables/config-files\",\n rules: {\n \"antfu/no-top-level-await\": \"off\",\n \"no-console\": \"off\",\n \"@typescript-eslint/explicit-function-return-type\": \"off\",\n },\n },\n {\n files: [\"**/*.js\"],\n extends: [tseslint.configs.disableTypeChecked],\n },\n ];\n}\n","export const GLOB_SRC_EXT = \"?([cm])[jt]s?(x)\";\nexport const GLOB_SRC = \"**/*.?([cm])[jt]s?(x)\";\n\nexport const GLOB_JS = \"**/*.?([cm])js\";\nexport const GLOB_JSX = \"**/*.?([cm])jsx\";\n\nexport const GLOB_TS = \"**/*.?([cm])ts\";\nexport const GLOB_TSX = \"**/*.?([cm])tsx\";\n\nexport const GLOB_EXCLUDE = [\n \"**/node_modules\",\n \"**/dist\",\n \"**/package-lock.json\",\n \"**/yarn.lock\",\n \"**/pnpm-lock.yaml\",\n \"**/bun.lockb\",\n \"**/build\",\n \"**/output\",\n \"**/coverage\",\n \"**/temp\",\n \"**/.temp\",\n \"**/tmp\",\n \"**/.tmp\",\n \"**/.history\",\n \"**/.vitepress/cache\",\n \"**/.nuxt\",\n \"**/.next\",\n \"**/.svelte-kit\",\n \"**/.vercel\",\n \"**/.changeset\",\n \"**/.idea\",\n \"**/.cache\",\n \"**/.output\",\n \"**/.vite-inspect\",\n \"**/.yarn\",\n \"**/vite.config.*.timestamp-*\",\n\n \"**/CHANGELOG*.md\",\n \"**/*.min.*\",\n \"**/LICENSE*\",\n \"**/__snapshots__\",\n \"**/auto-import?(s).d.ts\",\n \"**/components.d.ts\",\n];\n","import prettierConfig from \"eslint-config-prettier\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function formatters(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/prettier\",\n rules: {\n ...prettierConfig.rules,\n curly: \"error\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_EXCLUDE } from \"../globs\";\n\nexport function ignores(): ConfigWithExtends[] {\n return [\n {\n ignores: [...GLOB_EXCLUDE],\n name: \"solvro/ignores\",\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu, pluginImport } from \"../plugins\";\n\nexport function imports(\n options: { forbidDefaultExport: boolean } = { forbidDefaultExport: false },\n): ConfigWithExtends[] {\n const config = [\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n pluginImport.flatConfigs.typescript,\n {\n name: \"solvro/imports/rules\",\n plugins: {\n antfu: pluginAntfu,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n import: pluginImport,\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n rules: {\n \"antfu/import-dedupe\": \"error\",\n \"antfu/no-import-dist\": \"error\",\n \"antfu/no-import-node-modules-by-path\": \"error\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...pluginImport.flatConfigs.recommended.rules,\n \"import/no-dynamic-require\": \"warn\",\n \"import/no-unresolved\": \"off\",\n \"import/consistent-type-specifier-style\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: [\n {\n name: \"axios\",\n message: \"Please use fetch instead\",\n },\n ],\n },\n ],\n },\n },\n ];\n\n if (options.forbidDefaultExport) {\n config.push(\n {\n rules: { \"import/no-default-export\": \"error\" },\n },\n {\n files: [\n \"tsup.config.*\",\n \"eslint.config.*\",\n \".commitlintrc.*\",\n \"knip.*\",\n \"next.config.*\",\n \"commitlint.config.*\",\n \".releaserc.*\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return config;\n}\n","import eslint from \"@eslint/js\";\nimport globals from \"globals\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu, pluginUnusedImports } from \"../plugins\";\n\nexport function javascript(): ConfigWithExtends[] {\n return [\n {\n languageOptions: {\n ecmaVersion: 2022,\n globals: {\n ...globals.browser,\n ...globals.es2021,\n ...globals.node,\n document: \"readonly\",\n navigator: \"readonly\",\n window: \"readonly\",\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 2022,\n sourceType: \"module\",\n },\n sourceType: \"module\",\n },\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n name: \"solvro/javascript/setup\",\n },\n {\n name: \"solvro/javascript/rules\",\n plugins: {\n antfu: pluginAntfu,\n \"unused-imports\": pluginUnusedImports,\n },\n rules: {\n ...eslint.configs.recommended.rules,\n \"accessor-pairs\": [\n \"error\",\n { enforceForClassMembers: true, setWithoutGet: true },\n ],\n curly: \"error\",\n \"array-callback-return\": \"error\",\n \"block-scoped-var\": \"error\",\n \"constructor-super\": \"error\",\n \"default-case-last\": \"error\",\n \"dot-notation\": [\"error\", { allowKeywords: true }],\n eqeqeq: [\"error\", \"smart\"],\n \"new-cap\": [\n \"error\",\n { capIsNew: false, newIsCap: true, properties: true },\n ],\n \"no-alert\": \"error\",\n \"no-array-constructor\": \"error\",\n \"no-async-promise-executor\": \"error\",\n \"no-caller\": \"error\",\n \"no-case-declarations\": \"error\",\n \"no-class-assign\": \"error\",\n \"no-compare-neg-zero\": \"error\",\n \"no-cond-assign\": [\"error\", \"always\"],\n \"no-console\": [\"error\", { allow: [\"warn\", \"error\"] }],\n \"no-const-assign\": \"error\",\n \"no-control-regex\": \"error\",\n \"no-debugger\": \"error\",\n \"no-delete-var\": \"error\",\n \"no-dupe-args\": \"error\",\n \"no-dupe-class-members\": \"error\",\n \"no-dupe-keys\": \"error\",\n \"no-duplicate-case\": \"error\",\n \"no-empty\": [\"error\", { allowEmptyCatch: true }],\n \"no-empty-character-class\": \"error\",\n \"no-empty-pattern\": \"error\",\n \"no-eval\": \"error\",\n \"no-ex-assign\": \"error\",\n \"no-extend-native\": \"error\",\n \"no-extra-bind\": \"error\",\n \"no-extra-boolean-cast\": \"error\",\n \"no-fallthrough\": \"error\",\n \"no-func-assign\": \"error\",\n \"no-global-assign\": \"error\",\n \"no-implied-eval\": \"error\",\n \"no-import-assign\": \"error\",\n \"no-invalid-regexp\": \"error\",\n \"no-irregular-whitespace\": \"error\",\n \"no-iterator\": \"error\",\n \"no-labels\": [\"error\", { allowLoop: false, allowSwitch: false }],\n \"no-lone-blocks\": \"error\",\n \"no-loss-of-precision\": \"error\",\n \"no-misleading-character-class\": \"error\",\n \"no-multi-str\": \"error\",\n \"no-new\": \"error\",\n \"no-new-func\": \"error\",\n \"no-new-native-nonconstructor\": \"error\",\n \"no-new-wrappers\": \"error\",\n \"no-obj-calls\": \"error\",\n \"no-octal\": \"error\",\n \"no-octal-escape\": \"error\",\n \"no-proto\": \"error\",\n \"no-prototype-builtins\": \"error\",\n \"no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"no-regex-spaces\": \"error\",\n \"no-restricted-globals\": [\n \"error\",\n { message: \"Use `globalThis` instead.\", name: \"global\" },\n { message: \"Use `globalThis` instead.\", name: \"self\" },\n ],\n \"no-restricted-properties\": [\n \"error\",\n {\n message:\n \"Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.\",\n property: \"__proto__\",\n },\n {\n message: \"Use `Object.defineProperty` instead.\",\n property: \"__defineGetter__\",\n },\n {\n message: \"Use `Object.defineProperty` instead.\",\n property: \"__defineSetter__\",\n },\n {\n message: \"Use `Object.getOwnPropertyDescriptor` instead.\",\n property: \"__lookupGetter__\",\n },\n {\n message: \"Use `Object.getOwnPropertyDescriptor` instead.\",\n property: \"__lookupSetter__\",\n },\n ],\n \"no-restricted-syntax\": [\n \"error\",\n \"TSEnumDeclaration[const=true]\",\n \"TSExportAssignment\",\n ],\n \"no-self-assign\": [\"error\", { props: true }],\n \"no-self-compare\": \"error\",\n \"no-sequences\": \"error\",\n \"no-shadow-restricted-names\": \"error\",\n \"no-sparse-arrays\": \"error\",\n \"no-template-curly-in-string\": \"error\",\n \"no-this-before-super\": \"error\",\n \"no-throw-literal\": \"error\",\n \"no-undef-init\": \"error\",\n \"no-unexpected-multiline\": \"error\",\n \"no-unmodified-loop-condition\": \"error\",\n \"no-unneeded-ternary\": [\"error\", { defaultAssignment: false }],\n \"no-unreachable\": \"error\",\n \"no-unreachable-loop\": \"error\",\n \"no-unsafe-finally\": \"error\",\n \"no-unsafe-negation\": \"error\",\n \"no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n\n \"no-useless-backreference\": \"error\",\n \"no-useless-call\": \"error\",\n \"no-useless-catch\": \"error\",\n \"no-useless-computed-key\": \"error\",\n \"no-useless-constructor\": \"error\",\n \"no-useless-rename\": \"error\",\n \"no-useless-return\": \"error\",\n \"no-var\": \"error\",\n \"no-with\": \"error\",\n \"object-shorthand\": [\n \"error\",\n \"always\",\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n \"one-var\": [\"error\", { initialized: \"never\" }],\n \"prefer-arrow-callback\": [\n \"error\",\n {\n allowNamedFunctions: false,\n allowUnboundThis: true,\n },\n ],\n \"prefer-const\": [\n \"error\",\n {\n destructuring: \"all\",\n ignoreReadBeforeAssign: true,\n },\n ],\n \"prefer-exponentiation-operator\": \"error\",\n \"prefer-promise-reject-errors\": \"error\",\n \"prefer-regex-literals\": [\"error\", { disallowRedundantWrapping: true }],\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"prefer-template\": \"error\",\n \"symbol-description\": \"error\",\n \"unicode-bom\": [\"error\", \"never\"],\n \"unused-imports/no-unused-imports\": \"error\",\n \"unused-imports/no-unused-vars\": [\n \"error\",\n {\n args: \"after-used\",\n argsIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n vars: \"all\",\n varsIgnorePattern: \"^_\",\n },\n ],\n \"use-isnan\": [\n \"error\",\n { enforceForIndexOf: true, enforceForSwitchCase: true },\n ],\n \"valid-typeof\": [\"error\", { requireStringLiterals: true }],\n \"vars-on-top\": \"error\",\n yoda: [\"error\", \"never\"],\n },\n },\n ];\n}\n","import jsdocPlugin from \"eslint-plugin-jsdoc\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function jsdoc(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/jsdoc/rules\",\n plugins: {\n jsdoc: jsdocPlugin,\n },\n rules: {\n \"jsdoc/check-access\": \"warn\",\n \"jsdoc/check-param-names\": \"warn\",\n \"jsdoc/check-property-names\": \"warn\",\n \"jsdoc/check-types\": \"warn\",\n \"jsdoc/empty-tags\": \"warn\",\n \"jsdoc/implements-on-classes\": \"warn\",\n \"jsdoc/no-defaults\": \"warn\",\n \"jsdoc/no-multi-asterisks\": \"warn\",\n \"jsdoc/require-param-name\": \"warn\",\n \"jsdoc/require-property\": \"warn\",\n \"jsdoc/require-property-description\": \"warn\",\n \"jsdoc/require-property-name\": \"warn\",\n \"jsdoc/require-returns-check\": \"warn\",\n \"jsdoc/require-returns-description\": \"warn\",\n \"jsdoc/require-yields-check\": \"warn\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginNode } from \"../plugins\";\n\nexport function node(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/node/rules\",\n plugins: {\n node: pluginNode,\n },\n rules: {\n \"node/handle-callback-err\": [\"error\", \"^(err|error)$\"],\n \"node/no-deprecated-api\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-new-require\": \"error\",\n \"node/no-path-concat\": \"error\",\n \"node/prefer-global/buffer\": [\"error\"],\n \"node/prefer-global/process\": [\"error\"],\n \"node/process-exit-as-throw\": \"error\",\n },\n },\n ];\n}\n","import pluginReact from \"eslint-plugin-react\";\nimport pluginReactHooks from \"eslint-plugin-react-hooks\";\nimport { isPackageExists } from \"local-pkg\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nconst nextJsPackages = [\"next\"];\n\nconst forbiddenLibraries = [\n \"@headlessui/react\",\n \"@mui/material\",\n \"@chakra-ui/react\",\n \"@chakra-ui/core\",\n \"@nextui-org/react\",\n \"react-bootstrap\",\n \"antd\",\n];\n\nexport async function react(): Promise<ConfigWithExtends[]> {\n const isUsingNext = nextJsPackages.some((index) => isPackageExists(index));\n\n const nextjsConfig: ConfigWithExtends[] = [];\n\n if (isUsingNext) {\n // @ts-expect-error ???\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const nextPlugin = await import(\"@next/eslint-plugin-next\").then(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (d) => d.default,\n );\n\n nextjsConfig.push(\n {\n name: \"solvro/next/setup\",\n plugins: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"@next/next\": nextPlugin,\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n rules: nextPlugin.configs.recommended.rules,\n },\n {\n files: [\n \"**/app/**/{page,loading,layout}.{js,jsx,ts,tsx}\",\n \"**/pages/**/*.{js,jsx,ts,tsx}\",\n ],\n name: \"solvro/next/pages\",\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return [\n {\n name: \"solvro/react/setup\",\n plugins: {\n // @ts-expect-error ???\n react: pluginReact,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n \"react-hooks\": pluginReactHooks,\n },\n },\n ...nextjsConfig,\n {\n files: [\"**/*.{js,jsx,mjs,cjs,ts,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n },\n sourceType: \"module\",\n },\n settings: {\n react: {\n version: \"detect\",\n },\n },\n name: \"solvro/react/rules\",\n rules: {\n ...pluginReact.configs.flat?.recommended.rules,\n ...pluginReact.configs.flat?.[\"jsx-runtime\"].rules,\n \"react/no-danger\": \"warn\",\n \"react/jsx-no-leaked-render\": \"warn\",\n // recommended rules react-hooks\n \"react-hooks/exhaustive-deps\": \"warn\",\n \"react-hooks/rules-of-hooks\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n unnamedComponents: \"arrow-function\",\n namedComponents: \"function-declaration\",\n },\n ],\n \"react/hook-use-state\": [\n \"error\",\n {\n allowDestructuredState: true,\n },\n ],\n \"react/no-array-index-key\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: forbiddenLibraries.map((library) => ({\n name: library,\n message: `Please use ui.shadcn.com components instead.`,\n })),\n },\n ],\n },\n },\n {\n name: \"solvro/react/disables\",\n files: [\"**/components/ui/*.{jsx,tsx}\"],\n rules: {\n \"react/prop-types\": \"off\",\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": \"off\",\n \"@typescript-eslint/restrict-template-expressions\": \"off\",\n \"unicorn/no-document-cookie\": \"off\",\n \"@typescript-eslint/no-redeclare\": \"off\",\n \"@typescript-eslint/no-deprecated\": \"off\",\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nexport function typescriptRelaxed(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.recommendedTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-relaxed/rules\",\n rules: {\n \"@typescript-eslint/no-unsafe-return\": \"off\",\n \"@typescript-eslint/require-await\": \"off\",\n \"@typescript-eslint/no-misused-promises\": [\n \"error\",\n {\n checksVoidReturn: false,\n },\n ],\n \"unused-imports/no-unused-vars\": \"off\",\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n varsIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n },\n ],\n \"@typescript-eslint/no-empty-object-type\": \"off\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n \"@typescript-eslint/no-non-null-assertion\": \"error\",\n \"@typescript-eslint/no-unnecessary-template-expression\": \"error\",\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"error\",\n {\n allowNullableObject: false,\n },\n ],\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginAntfu } from \"../plugins\";\n\nexport function typescriptStrict(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.strictTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-strict/setup\",\n plugins: {\n antfu: pluginAntfu,\n },\n },\n {\n files: [\"**/*.{ts,tsx}\"],\n name: \"solvro/typescript-strict/rules\",\n rules: {\n \"@typescript-eslint/ban-ts-comment\": [\n \"error\",\n { \"ts-expect-error\": \"allow-with-description\" },\n ],\n \"@typescript-eslint/consistent-type-definitions\": [\n \"error\",\n \"interface\",\n ],\n \"@typescript-eslint/consistent-type-imports\": [\n \"error\",\n {\n disallowTypeAnnotations: false,\n prefer: \"type-imports\",\n },\n ],\n \"@typescript-eslint/method-signature-style\": [\"error\", \"property\"], // https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful\n \"@typescript-eslint/no-dupe-class-members\": \"error\",\n \"@typescript-eslint/no-empty-object-type\": [\n \"error\",\n { allowInterfaces: \"always\" },\n ],\n \"@typescript-eslint/no-import-type-side-effects\": \"error\",\n \"@typescript-eslint/no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"@typescript-eslint/no-require-imports\": \"error\",\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-use-before-define\": [\n \"error\",\n { classes: false, functions: false, variables: true },\n ],\n \"@typescript-eslint/no-wrapper-object-types\": \"error\",\n // prevent unnecessary use of void operator\n \"@typescript-eslint/no-meaningless-void-operator\": \"error\",\n // \"using non-null assertions cancels the benefits of the strict\n // null-checking mode.\"\n // warn when one of the types in union / intersection overrides others\n \"@typescript-eslint/no-redundant-type-constituents\": \"warn\",\n // prevent variables shadowing\n \"no-shadow\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n // prevent assignment of this, signals a wrong usage of it\n \"@typescript-eslint/no-this-alias\": \"error\",\n // prevent throwing non-error\n \"no-throw-literal\": \"off\",\n\n // prevent unnecessary explicitly adding a default type argument\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n // prevent unnecessary assertions that won't change the outcome\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n // prevent extending default types\n \"@typescript-eslint/no-unnecessary-type-constraint\": \"error\",\n // force typing out function arguments\n \"@typescript-eslint/no-unsafe-argument\": \"error\",\n // prevent usage of any via reassigning\n \"@typescript-eslint/no-unsafe-assignment\": \"error\",\n // prevent usage of any via calling it\n \"@typescript-eslint/no-unsafe-call\": \"error\",\n // prevent usage of any via using it's members\n \"@typescript-eslint/no-unsafe-member-access\": \"error\",\n // prevent reverting any from functions\n \"@typescript-eslint/no-unsafe-return\": \"error\",\n // prevent unused expressions\n \"no-unused-expressions\": \"off\",\n // var<'string'> = 'string' -> var = 'string' as const\n \"@typescript-eslint/prefer-as-const\": \"error\",\n // force initializing enums\n \"@typescript-eslint/prefer-enum-initializers\": \"error\",\n // prefer for x of obj to for let i = 0...\n \"@typescript-eslint/prefer-for-of\": \"error\",\n // prefer includes() to indexOf()\n \"@typescript-eslint/prefer-includes\": \"error\",\n // use literals for enum initialization\n \"@typescript-eslint/prefer-literal-enum-member\": \"error\",\n // prefer safe cascade of a value when dealing with undefined or null\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n // prefer optional chaining (a?.b)\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n // prefer using type parameter for Array.reduce\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n // prefer RegExp#exec when no /g flag in regex\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n // enforce `this` as a type when stating type for a method\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n // enforce startsWith to indexOf === 0\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n // prevents default behavior of .sort() - which is confusing\n \"@typescript-eslint/require-array-sort-compare\": \"error\",\n // no async functions without awaits in body\n \"require-await\": \"off\",\n \"@typescript-eslint/require-await\": \"error\",\n // prevent number + string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n // only allow string in templates\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n // prevent returning await\n \"no-return-await\": \"off\",\n \"@typescript-eslint/return-await\": \"error\",\n // only booleans in ifs and whiles\n \"@typescript-eslint/strict-boolean-expressions\": \"error\",\n // check if all paths are followed in code\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"dot-notation\": \"off\",\n \"no-implied-eval\": \"off\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-for-in-array\": \"error\",\n \"@typescript-eslint/no-implied-eval\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/promise-function-async\": \"error\",\n \"@typescript-eslint/unbound-method\": \"error\",\n \"no-restricted-imports\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { pluginUnicorn } from \"../plugins\";\n\nexport function unicorn(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/unicorn/rules\",\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs[\"flat/recommended\"].rules,\n \"unicorn/no-array-reduce\": \"off\",\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-useless-switch-case\": \"off\",\n \"unicorn/prefer-global-this\": \"off\",\n \"unicorn/prevent-abbreviations\": [\n \"error\",\n {\n replacements: {\n env: false,\n envs: false,\n props: false,\n prop: false,\n ref: false,\n },\n },\n ],\n },\n },\n ];\n}\n"],"mappings":"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","names":["process","ignores","process","findUpSync","path","tseslint","default","default","default","globals","globals","default","default","nextjsConfig","tseslint","tseslint","tseslint","default","default","findUpSync","path","tseslint"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@solvro/config",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.11.1",
|
4
4
|
"description": "Solvro's engineering style guide",
|
5
5
|
"keywords": [
|
6
6
|
"eslint",
|
@@ -95,6 +95,7 @@
|
|
95
95
|
"@types/react-dom": "^19.0.2",
|
96
96
|
"@types/semver": "^7.5.8",
|
97
97
|
"eslint": "^9.16.0",
|
98
|
+
"eslint-config-flat-gitignore": "^0.3.0",
|
98
99
|
"husky": "^9.1.7",
|
99
100
|
"jiti": "^2.4.1",
|
100
101
|
"knip": "^5.39.2",
|