@ls-stack/eslint-cfg 0.4.0 → 0.5.0

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/main.d.ts CHANGED
@@ -19,9 +19,9 @@ declare const cfgFlags: {
19
19
  * CI: if true, will be more strict.
20
20
  * EXPIRING_TODOS: if true, will not allow expiring todos.
21
21
  */
22
- declare function lsStackEslintCfg({ extends: extendsConfig, rules, tsconfigRootDir, ignore, allowDefaultExport, }: {
23
- extends?: ConfigWithExtends['extends'];
24
- rules?: ConfigWithExtends['rules'];
22
+ declare function lsStackEslintCfg({ extraRuleGroups: extendsConfig, globalRules: rules, tsconfigRootDir, ignore, allowDefaultExport, }: {
23
+ extraRuleGroups?: ConfigWithExtends['extends'];
24
+ globalRules?: ConfigWithExtends['rules'];
25
25
  tsconfigRootDir: string;
26
26
  ignore?: string[];
27
27
  allowDefaultExport?: string[];
package/dist/main.js CHANGED
@@ -21,8 +21,8 @@ var cfgFlags = {
21
21
  IS_CI: isCI
22
22
  };
23
23
  function lsStackEslintCfg({
24
- extends: extendsConfig = [],
25
- rules,
24
+ extraRuleGroups: extendsConfig = [],
25
+ globalRules: rules,
26
26
  tsconfigRootDir,
27
27
  ignore = [],
28
28
  allowDefaultExport = []
@@ -87,7 +87,10 @@ function lsStackEslintCfg({
87
87
  { disallowTemplateShorthand: true, allow: ["!!"] }
88
88
  ],
89
89
  /* typescript */
90
- "@typescript-eslint/no-unnecessary-condition": ERROR_IN_CI,
90
+ "@typescript-eslint/no-unnecessary-condition": [
91
+ ERROR_IN_CI,
92
+ { allowConstantLoopConditions: true, checkTypePredicates: true }
93
+ ],
91
94
  "@typescript-eslint/no-non-null-assertion": ERROR_IN_CI,
92
95
  "@typescript-eslint/consistent-type-assertions": [
93
96
  ERROR,
@@ -184,7 +187,7 @@ function lsStackEslintCfg({
184
187
  }
185
188
  },
186
189
  {
187
- files: ["*.test.ts", "*.spec.ts"],
190
+ files: ["*.test.{ts,tsx}", "*.spec.{ts,tsx}"],
188
191
  ...vitest.configs.recommended
189
192
  },
190
193
  {
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.ts"],"sourcesContent":["import eslint from '@eslint/js';\nimport { extendedLintPlugin } from '@ls-stack/extended-lint';\nimport { TSESLint } from '@typescript-eslint/utils';\nimport eslintUnicornPlugin from 'eslint-plugin-unicorn';\nimport vitest from 'eslint-plugin-vitest';\nimport tseslint, { ConfigWithExtends } from 'typescript-eslint';\n\nconst isCI = process.env.CI === 'true';\n\nconst OFF = 0;\nconst WARN = 1;\nconst ERROR = 2;\nconst ERROR_IN_CI = isCI ? ERROR : WARN;\nconst ERROR_IN_CI_ONLY = isCI ? ERROR : 0;\nconst errorOnExpiringTodos = process.env.EXPIRING_TODOS === 'true' || !isCI;\n\nconst getNoTypeGuardsMessage = (secondaryInstruction: string) =>\n `Check if the type guard can be inferred by typescript, in most cases it can, e.g. \".find((nullable) => nullable !== null)\". ${secondaryInstruction} . As last resort move the type guard to *.typeGuards.(ts|tsx) or *.type-guards.(ts|tsx) files.`;\n\nexport const cfgFlags: {\n OFF: 0;\n WARN: 1;\n ERROR: 2;\n ERROR_IN_CI: 0 | 1 | 2;\n ERROR_IN_CI_ONLY: 0 | 1 | 2;\n IS_CI: boolean;\n} = {\n OFF,\n WARN,\n ERROR,\n ERROR_IN_CI,\n ERROR_IN_CI_ONLY,\n IS_CI: isCI,\n};\n\n/**\n * Plugins:\n *\n * Use @ls-stack/{rule} to change ls-stack rules.\n * Use unicorn/{rule} to change unicorn rules.\n *\n * Env vars:\n * CI: if true, will be more strict.\n * EXPIRING_TODOS: if true, will not allow expiring todos.\n */\nexport function lsStackEslintCfg({\n extends: extendsConfig = [],\n rules,\n tsconfigRootDir,\n ignore = [],\n allowDefaultExport = [],\n}: {\n extends?: ConfigWithExtends['extends'];\n rules?: ConfigWithExtends['rules'];\n tsconfigRootDir: string;\n ignore?: string[];\n allowDefaultExport?: string[];\n}): TSESLint.FlatConfig.ConfigArray {\n return tseslint.config(\n eslint.configs.recommended,\n ...tseslint.configs.recommendedTypeChecked,\n {\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n languageOptions: {\n parserOptions: {\n project: './tsconfig.json',\n tsconfigRootDir,\n },\n globals: { process: true },\n },\n },\n {\n plugins: {\n '@ls-stack': extendedLintPlugin,\n unicorn: eslintUnicornPlugin,\n vitest,\n },\n\n rules: {\n 'no-warning-comments': [ERROR_IN_CI, { terms: ['FIX:'] }],\n 'no-constant-binary-expression': ERROR_IN_CI,\n 'object-shorthand': ERROR_IN_CI,\n 'no-useless-rename': ERROR_IN_CI,\n 'no-param-reassign': ERROR_IN_CI,\n 'prefer-template': ERROR_IN_CI,\n 'prefer-const': [ERROR_IN_CI, { destructuring: 'all' }],\n\n 'no-prototype-builtins': OFF,\n 'no-inner-declarations': OFF,\n 'no-undef': OFF,\n 'no-console': [ERROR_IN_CI, { allow: ['warn', 'error', 'info'] }],\n 'no-restricted-imports': [\n ERROR_IN_CI,\n {\n patterns: [\n {\n group: ['*.test'],\n message: 'Do not import test files',\n },\n ],\n },\n ],\n 'no-restricted-syntax': [\n ERROR_IN_CI_ONLY,\n {\n selector: 'CallExpression[callee.property.name=\"only\"]',\n message: 'No test.only',\n },\n {\n selector: 'CallExpression[callee.property.name=\"todo\"]',\n message: 'No test.todo',\n },\n ],\n 'no-implicit-coercion': [\n ERROR_IN_CI,\n { disallowTemplateShorthand: true, allow: ['!!'] },\n ],\n\n /* typescript */\n '@typescript-eslint/no-unnecessary-condition': ERROR_IN_CI,\n '@typescript-eslint/no-non-null-assertion': ERROR_IN_CI,\n '@typescript-eslint/consistent-type-assertions': [\n ERROR,\n {\n assertionStyle: 'never',\n },\n ],\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'typeLike',\n format: ['PascalCase'],\n },\n ],\n '@typescript-eslint/only-throw-error': ERROR_IN_CI,\n '@typescript-eslint/no-unused-expressions': ERROR_IN_CI,\n '@typescript-eslint/no-unused-vars': [\n ERROR_IN_CI,\n {\n argsIgnorePattern: '_$',\n ignoreRestSiblings: true,\n varsIgnorePattern: '_$',\n },\n ],\n '@typescript-eslint/no-shadow': [\n ERROR_IN_CI,\n { ignoreOnInitialization: true, allow: ['expect'] },\n ],\n '@typescript-eslint/no-unsafe-assignment': OFF,\n\n 'unicorn/expiring-todo-comments': [\n ERROR_IN_CI,\n {\n terms: [\n 'FIX',\n // 'TODO',\n 'palinter-ignore-unused-next-line',\n 'palinter-ignore-not-have-direct-circular-deps',\n 'palinter-ignore-not-have-circular-deps',\n 'palinter-ignore-not-have-unused-exports',\n ],\n ignore: [/^ HACK:/],\n allowWarningComments: false,\n ...(!errorOnExpiringTodos && { date: '2000-01-01' }),\n },\n ],\n 'unicorn/require-array-join-separator': ERROR_IN_CI,\n 'unicorn/no-empty-file': ERROR_IN_CI,\n 'unicorn/no-array-reduce': [\n ERROR_IN_CI,\n { allowSimpleOperations: true },\n ],\n 'unicorn/no-array-for-each': ERROR_IN_CI,\n\n /* extended-lint */\n '@ls-stack/no-unused-type-props-in-args': ERROR,\n '@ls-stack/improved-no-unnecessary-condition': ERROR,\n '@ls-stack/no-optional-root-props': ERROR_IN_CI,\n '@ls-stack/prefer-single-line-if': [\n WARN,\n { maxLineLength: 80, maxNonSimpleConditionLength: 40 },\n ],\n '@ls-stack/prefer-named-functions': [WARN, { ignoreRegex: 'Fn$' }],\n '@ls-stack/require-description': [ERROR, { ignore: ['eslint'] }],\n '@ls-stack/no-default-export': ERROR,\n '@ls-stack/no-unnecessary-casting': [\n ERROR_IN_CI,\n {\n additionalCastFunctions: [\n { name: 'castToString', expectedType: 'string' },\n { name: 'castToNumber', expectedType: 'number' },\n ],\n },\n ],\n '@ls-stack/use-top-level-regex': ERROR,\n '@ls-stack/use-types-directly-above-usage': [ERROR],\n '@ls-stack/template-indent': [ERROR_IN_CI, { tags: ['dedent'] }],\n '@ls-stack/no-reexport': ERROR,\n '@ls-stack/no-type-guards': [\n ERROR_IN_CI,\n {\n alternativeMsgs: {\n inArrayFind: getNoTypeGuardsMessage(\n 'If not, use findAndMap from @ls-stack/utils/arrayUtils.',\n ),\n inArrayFilter: getNoTypeGuardsMessage(\n 'If not, use filterAndMap from @ls-stack/utils/arrayUtils.',\n ),\n },\n },\n ],\n\n /* vitest */\n 'vitest/expect-expect': ERROR_IN_CI,\n 'vitest/no-identical-title': ERROR_IN_CI,\n\n ...rules,\n },\n },\n {\n files: ['*.test.ts', '*.spec.ts'],\n ...vitest.configs.recommended,\n },\n {\n files: [\n 'eslint.config.{js,cjs,mjs,ts}',\n 'tsup.config.ts',\n 'vitest.config.ts',\n ...allowDefaultExport,\n ],\n rules: {\n '@ls-stack/no-default-export': OFF,\n },\n },\n ...extendsConfig,\n {\n ignores: ignore,\n },\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/main.ts"],"sourcesContent":["import eslint from '@eslint/js';\nimport { extendedLintPlugin } from '@ls-stack/extended-lint';\nimport { TSESLint } from '@typescript-eslint/utils';\nimport eslintUnicornPlugin from 'eslint-plugin-unicorn';\nimport vitest from 'eslint-plugin-vitest';\nimport tseslint, { ConfigWithExtends } from 'typescript-eslint';\n\nconst isCI = process.env.CI === 'true';\n\nconst OFF = 0;\nconst WARN = 1;\nconst ERROR = 2;\nconst ERROR_IN_CI = isCI ? ERROR : WARN;\nconst ERROR_IN_CI_ONLY = isCI ? ERROR : 0;\nconst errorOnExpiringTodos = process.env.EXPIRING_TODOS === 'true' || !isCI;\n\nconst getNoTypeGuardsMessage = (secondaryInstruction: string) =>\n `Check if the type guard can be inferred by typescript, in most cases it can, e.g. \".find((nullable) => nullable !== null)\". ${secondaryInstruction} . As last resort move the type guard to *.typeGuards.(ts|tsx) or *.type-guards.(ts|tsx) files.`;\n\nexport const cfgFlags: {\n OFF: 0;\n WARN: 1;\n ERROR: 2;\n ERROR_IN_CI: 0 | 1 | 2;\n ERROR_IN_CI_ONLY: 0 | 1 | 2;\n IS_CI: boolean;\n} = {\n OFF,\n WARN,\n ERROR,\n ERROR_IN_CI,\n ERROR_IN_CI_ONLY,\n IS_CI: isCI,\n};\n\n/**\n * Plugins:\n *\n * Use @ls-stack/{rule} to change ls-stack rules.\n * Use unicorn/{rule} to change unicorn rules.\n *\n * Env vars:\n * CI: if true, will be more strict.\n * EXPIRING_TODOS: if true, will not allow expiring todos.\n */\nexport function lsStackEslintCfg({\n extraRuleGroups: extendsConfig = [],\n globalRules: rules,\n tsconfigRootDir,\n ignore = [],\n allowDefaultExport = [],\n}: {\n extraRuleGroups?: ConfigWithExtends['extends'];\n globalRules?: ConfigWithExtends['rules'];\n tsconfigRootDir: string;\n ignore?: string[];\n allowDefaultExport?: string[];\n}): TSESLint.FlatConfig.ConfigArray {\n return tseslint.config(\n eslint.configs.recommended,\n ...tseslint.configs.recommendedTypeChecked,\n {\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n languageOptions: {\n parserOptions: {\n project: './tsconfig.json',\n tsconfigRootDir,\n },\n globals: { process: true },\n },\n },\n {\n plugins: {\n '@ls-stack': extendedLintPlugin,\n unicorn: eslintUnicornPlugin,\n vitest,\n },\n\n rules: {\n 'no-warning-comments': [ERROR_IN_CI, { terms: ['FIX:'] }],\n 'no-constant-binary-expression': ERROR_IN_CI,\n 'object-shorthand': ERROR_IN_CI,\n 'no-useless-rename': ERROR_IN_CI,\n 'no-param-reassign': ERROR_IN_CI,\n 'prefer-template': ERROR_IN_CI,\n 'prefer-const': [ERROR_IN_CI, { destructuring: 'all' }],\n\n 'no-prototype-builtins': OFF,\n 'no-inner-declarations': OFF,\n 'no-undef': OFF,\n 'no-console': [ERROR_IN_CI, { allow: ['warn', 'error', 'info'] }],\n 'no-restricted-imports': [\n ERROR_IN_CI,\n {\n patterns: [\n {\n group: ['*.test'],\n message: 'Do not import test files',\n },\n ],\n },\n ],\n 'no-restricted-syntax': [\n ERROR_IN_CI_ONLY,\n {\n selector: 'CallExpression[callee.property.name=\"only\"]',\n message: 'No test.only',\n },\n {\n selector: 'CallExpression[callee.property.name=\"todo\"]',\n message: 'No test.todo',\n },\n ],\n 'no-implicit-coercion': [\n ERROR_IN_CI,\n { disallowTemplateShorthand: true, allow: ['!!'] },\n ],\n\n /* typescript */\n '@typescript-eslint/no-unnecessary-condition': [\n ERROR_IN_CI,\n { allowConstantLoopConditions: true, checkTypePredicates: true },\n ],\n '@typescript-eslint/no-non-null-assertion': ERROR_IN_CI,\n '@typescript-eslint/consistent-type-assertions': [\n ERROR,\n {\n assertionStyle: 'never',\n },\n ],\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'typeLike',\n format: ['PascalCase'],\n },\n ],\n '@typescript-eslint/only-throw-error': ERROR_IN_CI,\n '@typescript-eslint/no-unused-expressions': ERROR_IN_CI,\n '@typescript-eslint/no-unused-vars': [\n ERROR_IN_CI,\n {\n argsIgnorePattern: '_$',\n ignoreRestSiblings: true,\n varsIgnorePattern: '_$',\n },\n ],\n '@typescript-eslint/no-shadow': [\n ERROR_IN_CI,\n { ignoreOnInitialization: true, allow: ['expect'] },\n ],\n '@typescript-eslint/no-unsafe-assignment': OFF,\n\n 'unicorn/expiring-todo-comments': [\n ERROR_IN_CI,\n {\n terms: [\n 'FIX',\n // 'TODO',\n 'palinter-ignore-unused-next-line',\n 'palinter-ignore-not-have-direct-circular-deps',\n 'palinter-ignore-not-have-circular-deps',\n 'palinter-ignore-not-have-unused-exports',\n ],\n ignore: [/^ HACK:/],\n allowWarningComments: false,\n ...(!errorOnExpiringTodos && { date: '2000-01-01' }),\n },\n ],\n 'unicorn/require-array-join-separator': ERROR_IN_CI,\n 'unicorn/no-empty-file': ERROR_IN_CI,\n 'unicorn/no-array-reduce': [\n ERROR_IN_CI,\n { allowSimpleOperations: true },\n ],\n 'unicorn/no-array-for-each': ERROR_IN_CI,\n\n /* extended-lint */\n '@ls-stack/no-unused-type-props-in-args': ERROR,\n '@ls-stack/improved-no-unnecessary-condition': ERROR,\n '@ls-stack/no-optional-root-props': ERROR_IN_CI,\n '@ls-stack/prefer-single-line-if': [\n WARN,\n { maxLineLength: 80, maxNonSimpleConditionLength: 40 },\n ],\n '@ls-stack/prefer-named-functions': [WARN, { ignoreRegex: 'Fn$' }],\n '@ls-stack/require-description': [ERROR, { ignore: ['eslint'] }],\n '@ls-stack/no-default-export': ERROR,\n '@ls-stack/no-unnecessary-casting': [\n ERROR_IN_CI,\n {\n additionalCastFunctions: [\n { name: 'castToString', expectedType: 'string' },\n { name: 'castToNumber', expectedType: 'number' },\n ],\n },\n ],\n '@ls-stack/use-top-level-regex': ERROR,\n '@ls-stack/use-types-directly-above-usage': [ERROR],\n '@ls-stack/template-indent': [ERROR_IN_CI, { tags: ['dedent'] }],\n '@ls-stack/no-reexport': ERROR,\n '@ls-stack/no-type-guards': [\n ERROR_IN_CI,\n {\n alternativeMsgs: {\n inArrayFind: getNoTypeGuardsMessage(\n 'If not, use findAndMap from @ls-stack/utils/arrayUtils.',\n ),\n inArrayFilter: getNoTypeGuardsMessage(\n 'If not, use filterAndMap from @ls-stack/utils/arrayUtils.',\n ),\n },\n },\n ],\n\n /* vitest */\n 'vitest/expect-expect': ERROR_IN_CI,\n 'vitest/no-identical-title': ERROR_IN_CI,\n\n ...rules,\n },\n },\n {\n files: ['*.test.{ts,tsx}', '*.spec.{ts,tsx}'],\n ...vitest.configs.recommended,\n },\n {\n files: [\n 'eslint.config.{js,cjs,mjs,ts}',\n 'tsup.config.ts',\n 'vitest.config.ts',\n ...allowDefaultExport,\n ],\n rules: {\n '@ls-stack/no-default-export': OFF,\n },\n },\n ...extendsConfig,\n {\n ignores: ignore,\n },\n );\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ls-stack/eslint-cfg",
3
3
  "description": "Eslint cfg preset of @ls-stack packages",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist"