@solvro/config 2.0.0-beta.3 → 2.0.0-beta.5
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/README.md +63 -0
- package/dist/adonis-HMBH6E55.js +56 -0
- package/dist/adonis-HMBH6E55.js.map +1 -0
- package/dist/chunk-AQ5RXFKK.js +34 -0
- package/dist/chunk-AQ5RXFKK.js.map +1 -0
- package/dist/chunk-DHQ2VVRM.js +86 -0
- package/dist/chunk-DHQ2VVRM.js.map +1 -0
- package/dist/chunk-HM3MY7J3.js +22 -0
- package/dist/chunk-HM3MY7J3.js.map +1 -0
- package/dist/chunk-J5OUMHDO.js +44 -0
- package/dist/chunk-J5OUMHDO.js.map +1 -0
- package/dist/chunk-OEFF22F3.js +189 -0
- package/dist/chunk-OEFF22F3.js.map +1 -0
- package/dist/cli/index.js +416 -145
- package/dist/cli/index.js.map +1 -1
- package/dist/commitlint/index.js +5 -0
- package/dist/commitlint/index.js.map +1 -1
- package/dist/eslint/index.js +62 -509
- package/dist/eslint/index.js.map +1 -1
- package/dist/nestjs-TNZP34RP.js +74 -0
- package/dist/nestjs-TNZP34RP.js.map +1 -0
- package/dist/node-S7MI3CIK.js +27 -0
- package/dist/node-S7MI3CIK.js.map +1 -0
- package/dist/prettier/index.js +5 -0
- package/dist/prettier/index.js.map +1 -1
- package/dist/react-4BBIFFXI.js +2133 -0
- package/dist/react-4BBIFFXI.js.map +1 -0
- package/package.json +54 -47
package/dist/eslint/index.js.map
CHANGED
@@ -1 +1 @@
|
|
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 path, { join, resolve, relative, dirname } from 'node:path';\nimport process from 'node:process';\nimport { convertIgnorePatternToMinimatch } from '@eslint/compat';\nimport 'node:fs/promises';\nimport { fileURLToPath } from 'node:url';\n\nfunction toArray(array) {\n array = array ?? [];\n return Array.isArray(array) ? array : [array];\n}\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nfunction findUpSync(name, {\n\tcwd = process.cwd(),\n\ttype = 'file',\n\tstopAt,\n} = {}) {\n\tlet directory = path.resolve(toPath(cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tstopAt = path.resolve(directory, toPath(stopAt) ?? root);\n\n\twhile (directory && directory !== stopAt && directory !== root) {\n\t\tconst filePath = path.isAbsolute(name) ? name : path.join(directory, name);\n\n\t\ttry {\n\t\t\tconst stats = fs.statSync(filePath, {throwIfNoEntry: false});\n\t\t\tif ((type === 'file' && stats?.isFile()) || (type === 'directory' && stats?.isDirectory())) {\n\t\t\t\treturn filePath;\n\t\t\t}\n\t\t} catch {}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n}\n\nconst GITIGNORE = \".gitignore\";\nconst GITMODULES = \".gitmodules\";\nfunction ignore(options = {}) {\n const ignores = [];\n const {\n cwd = process.cwd(),\n root = false,\n files: _files = root ? GITIGNORE : findUpSync(GITIGNORE, { cwd }) || [],\n filesGitModules: _filesGitModules = root ? fs.existsSync(join(cwd, GITMODULES)) ? GITMODULES : [] : findUpSync(GITMODULES, { cwd }) || [],\n strict = true\n } = options;\n const files = toArray(_files).map((file) => resolve(cwd, file));\n const filesGitModules = toArray(_filesGitModules).map((file) => resolve(cwd, file));\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 = relative(cwd, 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 for (const file of filesGitModules) {\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 dirs = parseGitSubmodules(content);\n ignores.push(...dirs.map((dir) => `${dir}/**`));\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 = relative(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}\nfunction parseGitSubmodules(content) {\n return content.split(/\\r?\\n/u).map((line) => line.match(/path\\s*=\\s*(.+)/u)).filter((match) => match !== null).map((match) => match[1].trim());\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 nestjsConfig: ConfigWithExtends[] = [\n ...node(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n {\n rules: {\n \"no-implicit-coercion\": [\n \"error\",\n {\n allow: [\"+\"],\n },\n ],\n \"unicorn/prefer-top-level-await\": \"off\",\n },\n },\n {\n rules: {\n \"@typescript-eslint/no-extraneous-class\": [\n \"error\",\n {\n allowEmpty: true,\n },\n ],\n },\n files: [\"**/*.module.ts\"],\n },\n {\n rules: {\n \"@typescript-eslint/no-floating-promises\": \"off\",\n },\n files: [\"./src/main.ts\"],\n },\n];\n\nconst reactConfig = 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 isReact = await isPackageListed(\"react\");\n const isNestJs = await isPackageListed(\"@nestjs/core\");\n if (isReact && isAdonis) {\n throw new Error(\"You can't use both Adonis and React in the same project\");\n }\n\n const newConfig: ConfigWithExtends[] = [];\n\n if (isAdonis) {\n newConfig.push(...adonisConfig);\n }\n\n if (isNestJs) {\n newConfig.push(...nestjsConfig);\n }\n\n if (isReact) {\n newConfig.push(...(await reactConfig()));\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 ...jsxA11y.flatConfigs.recommended,\n languageOptions: {\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\";\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 from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_JS, 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: [GLOB_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\nconst forbiddenUiLibraries = [\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 function imports({\n forbidDefaultExport = true,\n} = {}): ConfigWithExtends[] {\n const config = [\n pluginImport.flatConfigs.typescript,\n {\n name: \"solvro/imports/rules\",\n plugins: {\n antfu: pluginAntfu,\n },\n\n rules: {\n \"antfu/import-dedupe\": \"error\",\n \"antfu/no-import-dist\": \"error\",\n \"antfu/no-import-node-modules-by-path\": \"error\",\n\n ...(pluginImport.flatConfigs.recommended\n .rules as ConfigWithExtends[\"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 ...forbiddenUiLibraries.map((library) => ({\n name: library,\n message: `Please use ui.shadcn.com components instead.`,\n })),\n ],\n },\n ],\n },\n },\n ] satisfies ConfigWithExtends[];\n\n if (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 \"vitest.config.*\",\n \"playwright.config.*\",\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-implicit-coercion\": \"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 pluginQuery from \"@tanstack/eslint-plugin-query\";\nimport 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\nexport async function react(): Promise<ConfigWithExtends[]> {\n const isUsingNext = nextJsPackages.some((index) => isPackageExists(index));\n\n const nextjsConfig: ConfigWithExtends[] = [];\n\n if (isUsingNext) {\n const nextPlugin = await import(\"@next/eslint-plugin-next\").then(\n (d) => d.default,\n );\n\n nextjsConfig.push(\n {\n name: \"solvro/next/setup\",\n plugins: {\n \"@next/next\": nextPlugin,\n },\n\n rules: nextPlugin.configs.recommended.rules,\n },\n {\n files: [\n \"**/app/**/{page,loading,layout,template,error,not-found,unauthorized,forbidden,default,robots,sitemap}.{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 react: pluginReact,\n\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 },\n },\n ...pluginQuery.configs[\"flat/recommended\"],\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 \"no-useless-constructor\": \"off\",\n \"@typescript-eslint/no-useless-constructor\": \"error\",\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 allowList: {\n e2e: true,\n },\n ignore: [String.raw`e2e`],\n },\n ],\n },\n },\n ];\n}\n"],"mappings":"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","names":["fs","path","process","process","path","fs","ignores","findUpSync","path","tseslint","default","default","default","globals","globals","default","default","tseslint","tseslint","tseslint","default","default","findUpSync","path","tseslint"]}
|
1
|
+
{"version":3,"sources":["../../src/eslint/index.ts","../../src/eslint/presets/base.ts","../../node_modules/eslint-config-flat-gitignore/dist/index.mjs","../../node_modules/@eslint/compat/dist/esm/index.js","../../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/javascript.ts","../../src/eslint/configs/jsdoc.ts","../../src/eslint/configs/typescript-relaxed.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 { basePreset, defaultOverridesPreset } from \"./presets/base\";\n\nexport const solvro = async (...overrides: ConfigWithExtends[]) => {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isReact = await isPackageListed(\"react\");\n const isNestJs = await isPackageListed(\"@nestjs/core\");\n\n if (isReact && isAdonis) {\n throw new Error(\"You can't use both Adonis and React in the same project\");\n }\n\n const configs = basePreset();\n const projectConfigs: ConfigWithExtends[] = [];\n\n if (isAdonis) {\n const { adonisPreset } = await import(\"./presets/adonis.js\");\n projectConfigs.push(...adonisPreset());\n } else if (isNestJs) {\n const { nestjsPreset } = await import(\"./presets/nestjs.js\");\n projectConfigs.push(...(await nestjsPreset()));\n } else if (isReact) {\n const { reactPreset } = await import(\"./presets/react.js\");\n projectConfigs.push(...(await reactPreset()));\n } else {\n const { nodePreset } = await import(\"./presets/node.js\");\n projectConfigs.push(...nodePreset());\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 const tsConfig: ConfigWithExtends = {\n languageOptions: {\n parserOptions: {\n projectService: true,\n tsconfigRootDir: rootDirectory,\n },\n },\n };\n\n const defaultOverrides = defaultOverridesPreset();\n\n return tseslint.config(\n ...configs,\n tsConfig,\n ...projectConfigs,\n ...defaultOverrides,\n ...overrides,\n );\n};\n","import gitignore from \"eslint-config-flat-gitignore\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { comments } from \"../configs/comments\";\nimport { disables } from \"../configs/disables\";\nimport { formatters } from \"../configs/formatters\";\nimport { ignores } from \"../configs/ignores\";\nimport { javascript } from \"../configs/javascript\";\nimport { jsdoc } from \"../configs/jsdoc\";\nimport { typescriptRelaxed } from \"../configs/typescript-relaxed\";\n\nexport const basePreset = (): ConfigWithExtends[] => [\n gitignore(),\n ...javascript(),\n ...jsdoc(),\n ...comments(),\n ...typescriptRelaxed(),\n];\n\nexport const defaultOverridesPreset = (): ConfigWithExtends[] => [\n ...ignores(),\n ...formatters(),\n ...disables(),\n];\n","import fs from 'node:fs';\nimport path, { join, resolve, relative, dirname } from 'node:path';\nimport process from 'node:process';\nimport { convertIgnorePatternToMinimatch } from '@eslint/compat';\nimport 'node:fs/promises';\nimport { fileURLToPath } from 'node:url';\n\nfunction toArray(array) {\n array = array ?? [];\n return Array.isArray(array) ? array : [array];\n}\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nfunction findUpSync(name, {\n\tcwd = process.cwd(),\n\ttype = 'file',\n\tstopAt,\n} = {}) {\n\tlet directory = path.resolve(toPath(cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tstopAt = path.resolve(directory, toPath(stopAt) ?? root);\n\n\twhile (directory && directory !== stopAt && directory !== root) {\n\t\tconst filePath = path.isAbsolute(name) ? name : path.join(directory, name);\n\n\t\ttry {\n\t\t\tconst stats = fs.statSync(filePath, {throwIfNoEntry: false});\n\t\t\tif ((type === 'file' && stats?.isFile()) || (type === 'directory' && stats?.isDirectory())) {\n\t\t\t\treturn filePath;\n\t\t\t}\n\t\t} catch {}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n}\n\nconst GITIGNORE = \".gitignore\";\nconst GITMODULES = \".gitmodules\";\nfunction ignore(options = {}) {\n const ignores = [];\n const {\n cwd = process.cwd(),\n root = false,\n files: _files = root ? GITIGNORE : findUpSync(GITIGNORE, { cwd }) || [],\n filesGitModules: _filesGitModules = root ? fs.existsSync(join(cwd, GITMODULES)) ? GITMODULES : [] : findUpSync(GITMODULES, { cwd }) || [],\n strict = true\n } = options;\n const files = toArray(_files).map((file) => resolve(cwd, file));\n const filesGitModules = toArray(_filesGitModules).map((file) => resolve(cwd, file));\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 = relative(cwd, 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 for (const file of filesGitModules) {\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 dirs = parseGitSubmodules(content);\n ignores.push(...dirs.map((dir) => `${dir}/**`));\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 = relative(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}\nfunction parseGitSubmodules(content) {\n return content.split(/\\r?\\n/u).map((line) => line.match(/path\\s*=\\s*(.+)/u)).filter((match) => match !== null).map((match) => match[1].trim());\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 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 from \"typescript-eslint\";\nimport type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { GLOB_JS, 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: [GLOB_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\";\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 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-implicit-coercion\": \"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 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 \"no-useless-constructor\": \"off\",\n \"@typescript-eslint/no-useless-constructor\": \"error\",\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"],"mappings":"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","names":["findUpSync","path","tseslint","fs","path","process","process","path","fs","ignores","default","default","tseslint","findUpSync","path","tseslint"]}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import {
|
2
|
+
node
|
3
|
+
} from "./chunk-AQ5RXFKK.js";
|
4
|
+
import {
|
5
|
+
typescriptStrict,
|
6
|
+
unicorn
|
7
|
+
} from "./chunk-OEFF22F3.js";
|
8
|
+
import {
|
9
|
+
imports
|
10
|
+
} from "./chunk-DHQ2VVRM.js";
|
11
|
+
import "./chunk-HM3MY7J3.js";
|
12
|
+
import {
|
13
|
+
init_esm_shims
|
14
|
+
} from "./chunk-J5OUMHDO.js";
|
15
|
+
|
16
|
+
// src/eslint/presets/nestjs.ts
|
17
|
+
init_esm_shims();
|
18
|
+
import eslintNestJs from "@darraghor/eslint-plugin-nestjs-typed";
|
19
|
+
import { isPackageListed } from "local-pkg";
|
20
|
+
var nestjsPreset = async () => {
|
21
|
+
const hasSwagger = await isPackageListed("@nestjs/swagger");
|
22
|
+
const nestjsConfig = hasSwagger ? [
|
23
|
+
...eslintNestJs.configs.flatRecommended,
|
24
|
+
{
|
25
|
+
rules: {
|
26
|
+
"@darraghor/nestjs-typed/api-property-matches-property-optionality": "warn",
|
27
|
+
"@darraghor/nestjs-typed/controllers-should-supply-api-tags": "warn",
|
28
|
+
"@darraghor/nestjs-typed/api-method-should-specify-api-response": "warn",
|
29
|
+
"@darraghor/nestjs-typed/api-method-should-specify-api-operation": "warn",
|
30
|
+
"@darraghor/nestjs-typed/api-enum-property-best-practices": "warn",
|
31
|
+
"@darraghor/nestjs-typed/api-property-returning-array-should-set-array": "warn"
|
32
|
+
}
|
33
|
+
}
|
34
|
+
] : eslintNestJs.configs.flatNoSwagger;
|
35
|
+
return [
|
36
|
+
...node(),
|
37
|
+
...unicorn(),
|
38
|
+
...typescriptStrict(),
|
39
|
+
...imports({ forbidDefaultExport: true }),
|
40
|
+
...nestjsConfig,
|
41
|
+
{
|
42
|
+
rules: {
|
43
|
+
"no-implicit-coercion": [
|
44
|
+
"error",
|
45
|
+
{
|
46
|
+
allow: ["+"]
|
47
|
+
}
|
48
|
+
],
|
49
|
+
"unicorn/prefer-top-level-await": "off"
|
50
|
+
}
|
51
|
+
},
|
52
|
+
{
|
53
|
+
rules: {
|
54
|
+
"@typescript-eslint/no-extraneous-class": [
|
55
|
+
"error",
|
56
|
+
{
|
57
|
+
allowEmpty: true
|
58
|
+
}
|
59
|
+
]
|
60
|
+
},
|
61
|
+
files: ["**/*.module.ts"]
|
62
|
+
},
|
63
|
+
{
|
64
|
+
rules: {
|
65
|
+
"@typescript-eslint/no-floating-promises": "off"
|
66
|
+
},
|
67
|
+
files: ["./src/main.ts"]
|
68
|
+
}
|
69
|
+
];
|
70
|
+
};
|
71
|
+
export {
|
72
|
+
nestjsPreset
|
73
|
+
};
|
74
|
+
//# sourceMappingURL=nestjs-TNZP34RP.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/presets/nestjs.ts"],"sourcesContent":["import eslintNestJs from \"@darraghor/eslint-plugin-nestjs-typed\";\nimport { isPackageListed } from \"local-pkg\";\nimport type { ConfigArray, ConfigWithExtends } from \"typescript-eslint\";\n\nimport { imports } from \"../configs/imports\";\nimport { node } from \"../configs/node\";\nimport { typescriptStrict } from \"../configs/typescript-strict\";\nimport { unicorn } from \"../configs/unicorn\";\n\nexport const nestjsPreset = async (): Promise<ConfigWithExtends[]> => {\n const hasSwagger = await isPackageListed(\"@nestjs/swagger\");\n\n const nestjsConfig = hasSwagger\n ? ([\n ...eslintNestJs.configs.flatRecommended,\n {\n rules: {\n \"@darraghor/nestjs-typed/api-property-matches-property-optionality\":\n \"warn\",\n \"@darraghor/nestjs-typed/controllers-should-supply-api-tags\":\n \"warn\",\n \"@darraghor/nestjs-typed/api-method-should-specify-api-response\":\n \"warn\",\n \"@darraghor/nestjs-typed/api-method-should-specify-api-operation\":\n \"warn\",\n \"@darraghor/nestjs-typed/api-enum-property-best-practices\": \"warn\",\n \"@darraghor/nestjs-typed/api-property-returning-array-should-set-array\":\n \"warn\",\n },\n },\n ] satisfies ConfigArray)\n : eslintNestJs.configs.flatNoSwagger;\n\n return [\n ...node(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n ...nestjsConfig,\n {\n rules: {\n \"no-implicit-coercion\": [\n \"error\",\n {\n allow: [\"+\"],\n },\n ],\n \"unicorn/prefer-top-level-await\": \"off\",\n },\n },\n {\n rules: {\n \"@typescript-eslint/no-extraneous-class\": [\n \"error\",\n {\n allowEmpty: true,\n },\n ],\n },\n files: [\"**/*.module.ts\"],\n },\n {\n rules: {\n \"@typescript-eslint/no-floating-promises\": \"off\",\n },\n files: [\"./src/main.ts\"],\n },\n ];\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA,OAAO,kBAAkB;AACzB,SAAS,uBAAuB;AAQzB,IAAM,eAAe,YAA0C;AACpE,QAAM,aAAa,MAAM,gBAAgB,iBAAiB;AAE1D,QAAM,eAAe,aAChB;AAAA,IACC,GAAG,aAAa,QAAQ;AAAA,IACxB;AAAA,MACE,OAAO;AAAA,QACL,qEACE;AAAA,QACF,8DACE;AAAA,QACF,kEACE;AAAA,QACF,mEACE;AAAA,QACF,4DAA4D;AAAA,QAC5D,yEACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF,IACA,aAAa,QAAQ;AAEzB,SAAO;AAAA,IACL,GAAG,KAAK;AAAA,IACR,GAAG,QAAQ;AAAA,IACX,GAAG,iBAAiB;AAAA,IACpB,GAAG,QAAQ,EAAE,qBAAqB,KAAK,CAAC;AAAA,IACxC,GAAG;AAAA,IACH;AAAA,MACE,OAAO;AAAA,QACL,wBAAwB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,OAAO,CAAC,GAAG;AAAA,UACb;AAAA,QACF;AAAA,QACA,kCAAkC;AAAA,MACpC;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,QACL,0CAA0C;AAAA,UACxC;AAAA,UACA;AAAA,YACE,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,CAAC,gBAAgB;AAAA,IAC1B;AAAA,IACA;AAAA,MACE,OAAO;AAAA,QACL,2CAA2C;AAAA,MAC7C;AAAA,MACA,OAAO,CAAC,eAAe;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import {
|
2
|
+
node
|
3
|
+
} from "./chunk-AQ5RXFKK.js";
|
4
|
+
import {
|
5
|
+
typescriptStrict,
|
6
|
+
unicorn
|
7
|
+
} from "./chunk-OEFF22F3.js";
|
8
|
+
import {
|
9
|
+
imports
|
10
|
+
} from "./chunk-DHQ2VVRM.js";
|
11
|
+
import "./chunk-HM3MY7J3.js";
|
12
|
+
import {
|
13
|
+
init_esm_shims
|
14
|
+
} from "./chunk-J5OUMHDO.js";
|
15
|
+
|
16
|
+
// src/eslint/presets/node.ts
|
17
|
+
init_esm_shims();
|
18
|
+
var nodePreset = () => [
|
19
|
+
...node(),
|
20
|
+
...unicorn(),
|
21
|
+
...typescriptStrict(),
|
22
|
+
...imports({ forbidDefaultExport: true })
|
23
|
+
];
|
24
|
+
export {
|
25
|
+
nodePreset
|
26
|
+
};
|
27
|
+
//# sourceMappingURL=node-S7MI3CIK.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/eslint/presets/node.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"typescript-eslint\";\n\nimport { imports } from \"../configs/imports\";\nimport { node } from \"../configs/node\";\nimport { typescriptStrict } from \"../configs/typescript-strict\";\nimport { unicorn } from \"../configs/unicorn\";\n\nexport const nodePreset = (): ConfigWithExtends[] => [\n ...node(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n];\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAOO,IAAM,aAAa,MAA2B;AAAA,EACnD,GAAG,KAAK;AAAA,EACR,GAAG,QAAQ;AAAA,EACX,GAAG,iBAAiB;AAAA,EACpB,GAAG,QAAQ,EAAE,qBAAqB,KAAK,CAAC;AAC1C;","names":[]}
|
package/dist/prettier/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/prettier/index.ts"],"sourcesContent":["import type { Options } from \"prettier\";\n\n/**\n * Some of Prettier's defaults can be overridden by an EditorConfig file. We\n * define those here to ensure that doesn't happen.\n *\n * See: https://github.com/prettier/prettier/blob/main/docs/configuration.md#editorconfig\n */\n\nconst overridableDefaults = {\n arrowParens: \"always\",\n endOfLine: \"lf\",\n printWidth: 80,\n quoteProps: \"as-needed\",\n semi: true,\n tabWidth: 2,\n trailingComma: \"all\",\n useTabs: false,\n} as const;\n\nexport default {\n ...overridableDefaults,\n importOrder: [\n \"^@assets/(.*)$\",\n \"<THIRD_PARTY_MODULES>\",\n \"^@japa/(.*)$\",\n \"^@adonisjs/(.*)$\",\n \"^@nestjs/(.*)$\",\n \"^@/(.*)$\",\n \"^#(.*)$\",\n \"^[./]\",\n ],\n importOrderSeparation: true,\n importOrderSortSpecifiers: true,\n importOrderParserPlugins: [\"typescript\", \"jsx\", \"decorators-legacy\"],\n plugins: [\n \"prettier-plugin-packagejson\",\n \"@trivago/prettier-plugin-sort-imports\",\n \"prettier-plugin-tailwindcss\",\n ],\n singleQuote: false,\n} as const satisfies Options;\n"],"mappings":";AASA,IAAM,sBAAsB;AAAA,EAC1B,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AACX;
|
1
|
+
{"version":3,"sources":["../../src/prettier/index.ts"],"sourcesContent":["import type { Options } from \"prettier\";\n\n/**\n * Some of Prettier's defaults can be overridden by an EditorConfig file. We\n * define those here to ensure that doesn't happen.\n *\n * See: https://github.com/prettier/prettier/blob/main/docs/configuration.md#editorconfig\n */\n\nconst overridableDefaults = {\n arrowParens: \"always\",\n endOfLine: \"lf\",\n printWidth: 80,\n quoteProps: \"as-needed\",\n semi: true,\n tabWidth: 2,\n trailingComma: \"all\",\n useTabs: false,\n} as const;\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n ...overridableDefaults,\n importOrder: [\n \"^@assets/(.*)$\",\n \"<THIRD_PARTY_MODULES>\",\n \"^@japa/(.*)$\",\n \"^@adonisjs/(.*)$\",\n \"^@nestjs/(.*)$\",\n \"^@/(.*)$\",\n \"^#(.*)$\",\n \"^[./]\",\n ],\n importOrderSeparation: true,\n importOrderSortSpecifiers: true,\n importOrderParserPlugins: [\"typescript\", \"jsx\", \"decorators-legacy\"],\n plugins: [\n \"prettier-plugin-packagejson\",\n \"@trivago/prettier-plugin-sort-imports\",\n \"prettier-plugin-tailwindcss\",\n ],\n singleQuote: false,\n} as const satisfies Options;\n"],"mappings":";;;;;AAAA;AASA,IAAM,sBAAsB;AAAA,EAC1B,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AACX;AAGA,IAAO,mBAAQ;AAAA,EACb,GAAG;AAAA,EACH,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,0BAA0B,CAAC,cAAc,OAAO,mBAAmB;AAAA,EACnE,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AACf;","names":[]}
|