@naturalcycles/dev-lib 20.31.2 → 20.33.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.
@@ -33,7 +33,7 @@ export default {
33
33
  },
34
34
  ],
35
35
  '@typescript-eslint/consistent-type-imports': 0, // ox
36
- '@typescript-eslint/consistent-type-exports': 2,
36
+ '@typescript-eslint/consistent-type-exports': 0, // ox
37
37
  '@typescript-eslint/consistent-type-assertions': 2,
38
38
  '@typescript-eslint/consistent-type-definitions': [0, 'interface'], // ox
39
39
  '@typescript-eslint/consistent-generic-constructors': [0, 'constructor'], // ox
@@ -8,7 +8,6 @@ import eslint from '@eslint/js'
8
8
  import eslintPluginOxlint from 'eslint-plugin-oxlint'
9
9
  import globals from 'globals'
10
10
  import tseslint from 'typescript-eslint'
11
- import eslintBiomeRules from './eslint-biome-rules.js'
12
11
  import eslintPrettierRules from './eslint-prettier-rules.js'
13
12
  import eslintRules from './eslint-rules.js'
14
13
 
@@ -122,7 +121,7 @@ function getConfig(_tsconfigPath) {
122
121
  ...eslintRules.rules,
123
122
  // ...eslintVueRules.rules,
124
123
  ...eslintPrettierRules.rules, // disable eslint rules already covered by prettier
125
- ...eslintBiomeRules.rules, // disable eslint rules already covered by biome
124
+ // ...eslintBiomeRules.rules, // disable eslint rules already covered by biome
126
125
  ...eslintPluginOxlint.configs['flat/all'][0].rules, // disable eslint rules already covered by oxlint
127
126
  // rules that are disabled, but shouldn't yet be disabled
128
127
  '@typescript-eslint/return-await': [2, 'always'],
@@ -70,13 +70,10 @@ const stylelintExists =
70
70
  fs.existsSync('node_modules/stylelint-config-standard-scss')
71
71
  const stylelintCmd = stylelintExists ? `stylelint --fix --config ${stylelintConfigPath}` : undefined
72
72
 
73
- const biomeConfigPath = ['biome.jsonc'].find(p => fs.existsSync(p))
74
- const biomeCmd = biomeConfigPath && `biome lint --write --unsafe --no-errors-on-unmatched`
75
-
76
73
  const linters = {
77
- // biome, oxlint, eslint, stylelint, oxfmt
74
+ // oxlint, eslint, stylelint, oxfmt
78
75
  [`./{src,scripts,e2e}/**/*.{${prettierExtensionsAll}}`]: match =>
79
- runBiomeEslintStylelintOxfmt(match),
76
+ runOxlintEslintStylelintOxfmt(match),
80
77
 
81
78
  // Files in root dir: oxfmt
82
79
  [`./*.{${prettierExtensionsAll}}`]: runOxfmt,
@@ -87,21 +84,15 @@ const linters = {
87
84
  './.github/**/*.{yml,yaml}': runActionlintOxfmt,
88
85
  }
89
86
 
90
- export function runBiomeEslintStylelintOxfmt(match) {
87
+ export function runOxlintEslintStylelintOxfmt(match) {
91
88
  const filesList = getFilesList(match)
92
89
  if (!filesList) return []
93
90
 
94
- return [biomeCmd, oxlintCmd, eslintCmd, stylelintCmd, oxfmtCmd]
91
+ return [oxlintCmd, eslintCmd, stylelintCmd, oxfmtCmd]
95
92
  .filter(Boolean)
96
93
  .map(s => `${s} ${filesList}`)
97
94
  }
98
95
 
99
- export function runBiomeOxlintOxfmt(match) {
100
- const filesList = getFilesList(match)
101
- if (!filesList) return []
102
- return [biomeCmd, oxlintCmd, oxfmtCmd].filter(Boolean).map(s => `${s} ${filesList}`)
103
- }
104
-
105
96
  export function runOxlintOxfmt(match) {
106
97
  const filesList = getFilesList(match)
107
98
  if (!filesList) return []
@@ -13,6 +13,14 @@
13
13
  ],
14
14
  "jsPlugins": ["./oxlint-plugin-stylistic.mjs"],
15
15
  "rules": {
16
+ "no-unused-vars": [
17
+ "error",
18
+ {
19
+ "varsIgnorePattern": "^(_$|__)",
20
+ "argsIgnorePattern": "^_",
21
+ "destructuredArrayIgnorePattern": "^_"
22
+ }
23
+ ],
16
24
  "@stylistic/padding-line-between-statements": [
17
25
  2,
18
26
  { "blankLine": "always", "prev": "function", "next": "*" },
@@ -3,7 +3,7 @@ import { _by } from '@naturalcycles/js-lib/array/array.util.js';
3
3
  import { _assert } from '@naturalcycles/js-lib/error/assert.js';
4
4
  import { fs2 } from '@naturalcycles/nodejs-lib/fs2';
5
5
  import { runScript } from '@naturalcycles/nodejs-lib/runScript';
6
- import { buildCopy, buildProd, eslintAll, lintStagedCommand, requireOxlintConfig, runBiome, runCheck, runOxfmt, runOxlint, runTest, stylelintAll, typecheckWithTS, typecheckWithTSC, typecheckWithTSGO, } from '../check.util.js';
6
+ import { buildCopy, buildProd, eslintAll, lintStagedCommand, runCheck, runOxfmt, runOxlint, runTest, stylelintAll, typecheckWithTS, typecheckWithTSC, typecheckWithTSGO, } from '../check.util.js';
7
7
  import { runCommitlint } from '../commitlint.js';
8
8
  const commands = [
9
9
  { name: 'check', fn: runCheck, desc: '"Run all possible checks": lint, typecheck, then test.' },
@@ -59,11 +59,11 @@ const commands = [
59
59
  fn: () => runTest({ manual: true }),
60
60
  desc: 'Run vitest for *.manual.test.ts files.',
61
61
  },
62
- {
63
- name: 'test-leaks',
64
- fn: () => runTest({ leaks: true }),
65
- desc: 'Run vitest --detectLeaks for *.test.ts files.',
66
- },
62
+ // {
63
+ // name: 'test-leaks',
64
+ // fn: () => runTest({ leaks: true }),
65
+ // desc: 'Run vitest --detectLeaks for *.test.ts files.',
66
+ // },
67
67
  {
68
68
  name: 'lint',
69
69
  fn: () => runCheck({
@@ -93,18 +93,6 @@ const commands = [
93
93
  desc: 'Run oxlint on all files with "auto-fix" disabled. Useful for debugging.',
94
94
  interactiveOnly: true,
95
95
  },
96
- {
97
- name: 'biome',
98
- fn: () => runBiome(),
99
- desc: 'Run biome linter on all files.',
100
- },
101
- { name: 'biome-no-fix', cliOnly: true, fn: () => runBiome(false) },
102
- {
103
- name: 'biome --no-fix',
104
- fn: () => runBiome(false),
105
- desc: 'Run biome linter on all files with "auto-fix" disabled. Useful for debugging.',
106
- interactiveOnly: true,
107
- },
108
96
  { name: 'oxfmt', fn: runOxfmt, desc: 'Run oxfmt on all files.' },
109
97
  { name: 'stylelint', fn: stylelintAll, desc: 'Run stylelint on all files.' },
110
98
  {
@@ -175,11 +163,11 @@ async function bt() {
175
163
  await typecheckWithTS();
176
164
  runTest();
177
165
  }
178
- async function _typecheckWithOxlint() {
179
- requireOxlintConfig();
180
- const fix = !CI;
181
- runOxlint(fix);
182
- }
166
+ // async function _typecheckWithOxlint(): Promise<void> {
167
+ // requireOxlintConfig()
168
+ // const fix = !CI
169
+ // runOxlint(fix)
170
+ // }
183
171
  async function cleanBuild() {
184
172
  cleanDist();
185
173
  buildProd();
@@ -52,10 +52,6 @@ export declare function stylelintAll(fix?: boolean): boolean;
52
52
  export declare function lintStagedCommand(): Promise<void>;
53
53
  export declare function requireActionlintVersion(): void;
54
54
  export declare function getActionLintVersion(): SemVerString | undefined;
55
- /**
56
- * Returns true if it ran.
57
- */
58
- export declare function runBiome(fix?: boolean): boolean;
59
55
  export declare function buildProd(): void;
60
56
  /**
61
57
  * Uses tsgo if it's installed, otherwise tsc
@@ -49,10 +49,9 @@ export async function runCheck(opt = {}) {
49
49
  const fix = !CI;
50
50
  if (fastLinters) {
51
51
  // Fast linters (that run in <1 second) go first
52
- runActionLint();
53
52
  s = Date.now();
54
- if (runBiome(fix)) {
55
- timings['biome'] = Date.now() - s;
53
+ if (runActionLint()) {
54
+ timings['actionlint'] = Date.now() - s;
56
55
  }
57
56
  s = Date.now();
58
57
  if (runOxlint(fix)) {
@@ -322,24 +321,6 @@ export function getActionLintVersion() {
322
321
  return;
323
322
  return exec2.exec('actionlint --version').split('\n')[0];
324
323
  }
325
- /**
326
- * Returns true if it ran.
327
- */
328
- export function runBiome(fix = true) {
329
- const configPath = `biome.jsonc`;
330
- if (!existsSync(configPath)) {
331
- console.log(`biome is skipped, because ./biome.jsonc is not present`);
332
- return false;
333
- }
334
- const biomePath = findPackageBinPath('@biomejs/biome', 'biome');
335
- const dirs = [`src`, `scripts`, `e2e`].filter(d => existsSync(d));
336
- exec2.spawn(biomePath, {
337
- name: fix ? 'biome' : 'biome --no-fix',
338
- args: [`lint`, fix && '--write', fix && '--unsafe', '--no-errors-on-unmatched', ...dirs].filter(_isTruthy),
339
- shell: false,
340
- });
341
- return true;
342
- }
343
324
  export function buildProd() {
344
325
  // fs2.emptyDir('./dist') // it doesn't delete the dir itself, to prevent IDE jumping
345
326
  buildCopy();
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@naturalcycles/dev-lib",
3
3
  "type": "module",
4
- "version": "20.31.2",
4
+ "version": "20.33.0",
5
5
  "dependencies": {
6
- "@biomejs/biome": "^2",
7
6
  "prompts": "^2",
8
7
  "@naturalcycles/js-lib": "^15",
9
8
  "@naturalcycles/nodejs-lib": "^15",
@@ -57,7 +56,6 @@
57
56
  },
58
57
  "exports": {
59
58
  "./cfg/": "./cfg/",
60
- "./cfg/biome.jsonc": "./cfg/biome.jsonc",
61
59
  "./cfg/eslint.config.js": "./cfg/eslint.config.js",
62
60
  "./cfg/oxlint.config.json": "./cfg/oxlint.config.json",
63
61
  "./cfg/stylelint.config.js": "./cfg/stylelint.config.js",
@@ -115,7 +113,6 @@
115
113
  "lint": "tsx scripts/eslintPrintConfig.script.ts && tsx scripts/oxlintPrintConfig.script.ts && tsx ./src/bin/dev-lib.ts lint",
116
114
  "eslint": "tsx ./src/bin/dev-lib.ts eslint",
117
115
  "eslint-no-fix": "tsx ./src/bin/dev-lib.ts eslint-no-fix",
118
- "biome-no-fix": "tsx ./src/bin/dev-lib.ts biome-no-fix",
119
116
  "oxlint": "tsx ./src/bin/dev-lib.ts oxlint",
120
117
  "oxlint-no-fix": "tsx ./src/bin/dev-lib.ts oxlint-no-fix",
121
118
  "lint-staged-debug": "tsx ./src/bin/dev-lib.ts lint-staged"
package/cfg/biome.jsonc DELETED
@@ -1,138 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
3
- "root": false,
4
- "files": {
5
- "includes": [
6
- "**/*.ts",
7
- "**/*.tsx",
8
- "**/*.js",
9
- "**/*.jsx",
10
- "!**/__exclude",
11
- "!tmp",
12
- "!coverage",
13
- "!deploy",
14
- "!dist",
15
- "!**/try.ts",
16
- ],
17
- },
18
- "formatter": {
19
- "enabled": true,
20
- "formatWithErrors": false,
21
- "indentStyle": "space",
22
- "indentWidth": 2,
23
- "lineEnding": "lf",
24
- "lineWidth": 100,
25
- "attributePosition": "auto",
26
- },
27
- "assist": { "actions": { "source": { "organizeImports": "off" } } },
28
- "linter": {
29
- "enabled": true,
30
- "rules": {
31
- "recommended": true,
32
- "performance": {
33
- "noAccumulatingSpread": "off", // oxlint
34
- // "useTopLevelRegex": "error" // consider
35
- "noDelete": "off", // oxlint
36
- },
37
- "correctness": {
38
- "useImportExtensions": "off", // oxlint
39
- "useParseIntRadix": "off",
40
- "noUnusedFunctionParameters": "off", // oxlint
41
- "noConstantCondition": "off", // ox
42
- "noUnusedPrivateClassMembers": "off", // buggy in 2.3.6
43
- // noUnusedImports + noUnusedVariables can replace eslint-plugin-unused-vars!
44
- "noUnusedImports": "error", // oxlint ignoreVars ^_ pattern also applies to imports named with _ prefix. Support for no-unused-imports tracked here https://github.com/oxc-project/oxc/issues/1117
45
- "noUnusedVariables": {
46
- "fix": "none",
47
- "level": "off", // oxlint
48
- "options": {},
49
- },
50
- },
51
- "style": {
52
- // "useDefaultSwitchClause": "error", // consider`
53
- "useThrowNewError": "error",
54
- "useThrowOnlyError": "error",
55
- "useConsistentBuiltinInstantiation": "off", // disallows Array()
56
- "noDoneCallback": "error",
57
- "useShorthandFunctionType": "error",
58
- "useShorthandAssign": "error",
59
- "useForOf": "off", // oxlint
60
- "useConsistentArrayType": "error",
61
- "noDefaultExport": "off", // oxlint
62
- "noNonNullAssertion": "off",
63
- "useImportType": "error",
64
- "noParameterAssign": "off",
65
- "useTemplate": "off",
66
- "useNumberNamespace": "off",
67
- "noUnusedTemplateLiteral": "off",
68
- "useAsConstAssertion": "error",
69
- "useDefaultParameterLast": "error",
70
- "useEnumInitializers": "error",
71
- "useSelfClosingElements": "error",
72
- "useSingleVarDeclarator": "error",
73
- "noInferrableTypes": "error",
74
- "noUselessElse": "error",
75
- "useArrayLiterals": "error",
76
- // "noCommonJs": "error" // oxlint
77
- },
78
- "suspicious": {
79
- "useNumberToFixedDigitsArgument": "error",
80
- "useIterableCallbackReturn": "off",
81
- "useErrorMessage": "off", // ox
82
- "noControlCharactersInRegex": "off", // ox
83
- "noExtraNonNullAssertion": "off", // ox
84
- "noEvolvingTypes": "error",
85
- "noExplicitAny": "off",
86
- "noAssignInExpressions": "off",
87
- "noPrototypeBuiltins": "off",
88
- "noGlobalIsNan": "off", // todo,
89
- "noThenProperty": "off",
90
- "noImportAssign": "off",
91
- "noDoubleEquals": "off", // oxlint
92
- "noDocumentCookie": "off", // ox
93
- "noEmptyInterface": "off",
94
- },
95
- "complexity": {
96
- "useDateNow": "error",
97
- "useArrowFunction": "off", // ox
98
- "noUselessUndefinedInitialization": "error",
99
- "noUselessEscapeInRegex": "off", // ox
100
- "noUselessStringConcat": "error",
101
- "noForEach": "off",
102
- "noUselessThisAlias": "off",
103
- "useLiteralKeys": "off",
104
- "noBannedTypes": "off",
105
- "noCommaOperator": "off", // ox
106
- "noArguments": "error",
107
- },
108
- "nursery": {},
109
- },
110
- },
111
- "javascript": {
112
- "formatter": {
113
- "jsxQuoteStyle": "double",
114
- "quoteProperties": "asNeeded",
115
- "trailingCommas": "all",
116
- "semicolons": "asNeeded",
117
- "arrowParentheses": "asNeeded",
118
- "bracketSpacing": true,
119
- "bracketSameLine": false,
120
- "quoteStyle": "single",
121
- "attributePosition": "auto",
122
- },
123
- },
124
- "overrides": [
125
- {
126
- "includes": ["**/*.vue"],
127
- "linter": {
128
- "rules": {
129
- "correctness": {
130
- // doesn't work well with *.vue files
131
- "noUnusedImports": "off",
132
- "noUnusedVariables": "off",
133
- },
134
- },
135
- },
136
- },
137
- ],
138
- }
@@ -1,179 +0,0 @@
1
- // Copy-pasted from https://github.com/SrBrahma/eslint-config-biome/blob/main/index.js
2
- export default {
3
- rules: {
4
- 'constructor-super': 0,
5
- 'default-case-last': 0,
6
- 'default-param-last': 0,
7
- 'dot-notation': 0,
8
- eqeqeq: 0,
9
- 'for-direction': 0,
10
- 'getter-return': 0,
11
- 'no-async-promise-executor': 0,
12
- 'no-case-declarations': 0,
13
- 'no-class-assign': 0,
14
- 'no-compare-neg-zero': 0,
15
- 'no-cond-assign': 0,
16
- 'no-const-assign': 0,
17
- 'no-constant-condition': 0,
18
- 'no-constructor-return': 0,
19
- 'no-control-regex': 0,
20
- 'no-debugger': 0,
21
- 'no-delete-var': 0,
22
- 'no-dupe-args': 0,
23
- 'no-dupe-class-members': 0,
24
- 'no-dupe-keys': 0,
25
- 'no-duplicate-case': 0,
26
- 'no-else-return': 0,
27
- 'no-empty': 0,
28
- 'no-empty-character-class': 0,
29
- 'no-empty-pattern': 0,
30
- 'no-eval': 0,
31
- 'no-ex-assign': 0,
32
- 'no-extra-boolean-cast': 0,
33
- 'no-extra-label': 0,
34
- 'no-fallthrough': 0,
35
- 'no-func-assign': 0,
36
- 'no-global-assign': 0,
37
- 'no-import-assign': 0,
38
- 'no-inner-declarations': 0,
39
- 'no-label-var': 0,
40
- 'no-labels': 0,
41
- 'no-lone-blocks': 0,
42
- 'no-loss-of-precision': 0,
43
- 'no-misleading-character-class': 0,
44
- 'no-new-native-nonconstructor': 0,
45
- 'no-new-symbol': 0,
46
- 'no-nonoctal-decimal-escape': 0,
47
- 'no-obj-calls': 0,
48
- 'no-param-reassign': 0,
49
- 'no-prototype-builtins': 0,
50
- 'no-redeclare': 0,
51
- 'no-regex-spaces': 0,
52
- 'no-return-assign': 0,
53
- 'no-self-assign': 0,
54
- 'no-self-compare': 0,
55
- 'no-sequences': 0,
56
- 'no-setter-return': 0,
57
- 'no-shadow-restricted-names': 0,
58
- 'no-sparse-array': 0,
59
- 'no-this-before-super': 0,
60
- 'no-undef-init': 0,
61
- 'no-unneeded-ternary': 0,
62
- 'no-unreachable': 0,
63
- 'no-unsafe-finally': 0,
64
- 'no-unsafe-negation': 0,
65
- 'no-unsafe-optional-chaining': 0,
66
- 'no-unused-labels': 0,
67
- 'no-use-before-define': 0,
68
- 'no-useless-catch': 0,
69
- 'no-useless-computed-key': 0,
70
- 'no-useless-constructor': 0,
71
- 'no-useless-rename': 0,
72
- 'no-var': 0,
73
- 'no-with': 0,
74
- 'one-var': 0,
75
- 'prefer-arrow-callback': 0,
76
- 'prefer-const': 0,
77
- 'prefer-exponentiation-operator': 0,
78
- 'prefer-numeric-literals': 0,
79
- 'prefer-regex-literals': 0,
80
- 'prefer-rest-params': 0,
81
- 'prefer-template': 0,
82
- 'require-yield': 0,
83
- 'use-isnan': 0,
84
- 'valid-typeof': 0,
85
- // "@mysticatea/eslint-plugin/no-this-in-static": 0,
86
- '@typescript-eslint/ban-types': 0,
87
- '@typescript-eslint/consistent-type-exports': 0,
88
- // '@typescript-eslint/consistent-type-imports': 0, // `useImportType` is currently disabled
89
- '@typescript-eslint/default-param-last': 0,
90
- '@typescript-eslint/dot-notation': 0,
91
- '@typescript-eslint/no-dupe-class-members': 0,
92
- '@typescript-eslint/no-empty-interface': 0,
93
- '@typescript-eslint/no-explicit-any': 0,
94
- '@typescript-eslint/no-extra-non-null-assertion': 0,
95
- '@typescript-eslint/no-extraneous-class': 0,
96
- '@typescript-eslint/no-import-type-side-effects': 0,
97
- '@typescript-eslint/no-inferrable-types': 0,
98
- '@typescript-eslint/no-invalid-void-type': 0,
99
- '@typescript-eslint/no-loss-of-precision': 0,
100
- '@typescript-eslint/no-misused-new': 0,
101
- '@typescript-eslint/no-non-null-assertion': 0,
102
- '@typescript-eslint/no-redeclare': 0,
103
- '@typescript-eslint/no-this-alias': 0,
104
- '@typescript-eslint/no-unnecessary-type-arguments': 0,
105
- '@typescript-eslint/no-unnecessary-type-constraint': 0,
106
- '@typescript-eslint/no-unsafe-declaration-merging': 0,
107
- '@typescript-eslint/no-use-before-define': 0,
108
- '@typescript-eslint/no-useless-constructor': 0,
109
- '@typescript-eslint/no-useless-empty-export': 0,
110
- '@typescript-eslint/no-useless-template-literals': 0,
111
- '@typescript-eslint/prefer-as-const': 0,
112
- '@typescript-eslint/prefer-enum-initializers': 0,
113
- '@typescript-eslint/prefer-function-type': 0,
114
- '@typescript-eslint/prefer-literal-enum-member': 0,
115
- '@typescript-eslint/prefer-namespace-keyword': 0,
116
- '@typescript-eslint/prefer-optional-chain': 0,
117
- 'jest/max-nested-describe': 0,
118
- 'jest/no-duplicate-hooks': 0,
119
- 'jest/no-export': 0,
120
- 'jest/no-focused-tests': 0,
121
- 'jsx-a11y/alt-text': 0,
122
- 'jsx-a11y/anchor-has-content': 0,
123
- 'jsx-a11y/anchor-is-valid': 0,
124
- 'jsx-a11y/aria-activedescendant-has-tabindex': 0,
125
- 'jsx-a11y/aria-props': 0,
126
- 'jsx-a11y/aria-proptypes': 0,
127
- 'jsx-a11y/aria-role': 0,
128
- 'jsx-a11y/aria-unsupported-elements': 0,
129
- 'jsx-a11y/click-events-have-key-events': 0,
130
- 'jsx-a11y/heading-has-content': 0,
131
- 'jsx-a11y/html-has-lang': 0,
132
- 'jsx-a11y/iframe-has-title': 0,
133
- 'jsx-a11y/img-redundant-alt': 0,
134
- 'jsx-a11y/interactive-supports-focus': 0,
135
- 'jsx-a11y/label-has-associated-control': 0,
136
- 'jsx-a11y/lang': 0,
137
- 'jsx-a11y/media-has-caption': 0,
138
- 'jsx-a11y/mouse-events-have-key-events': 0,
139
- 'jsx-a11y/no-access-key': 0,
140
- 'jsx-a11y/no-aria-hidden-on-focusable': 0,
141
- 'jsx-a11y/no-autofocus': 0,
142
- 'jsx-a11y/no-distracting-elements': 0,
143
- 'jsx-a11y/no-interactive-element-to-noninteractive-role': 0,
144
- 'jsx-a11y/no-noninteractive-element-to-interactive-role': 0,
145
- 'jsx-a11y/no-noninteractive-tabindex': 0,
146
- 'jsx-a11y/no-redundant-roles': 0,
147
- 'jsx-a11y/role-has-required-aria-props': 0,
148
- 'jsx-a11y/scope': 0,
149
- 'jsx-a11y/tabindex-no-positive': 0,
150
- 'react/button-has-type': 0,
151
- 'react/jsx-key': 0,
152
- 'react/jsx-no-comment-textnodes': 0,
153
- 'react/jsx-no-duplicate-props': 0,
154
- 'react/jsx-no-target-blank': 0,
155
- 'react/jsx-no-useless-fragment': 0,
156
- 'react/no-array-index-key': 0,
157
- 'react/no-children-prop': 0,
158
- 'react/no-danger': 0,
159
- 'react/no-danger-with-children': 0,
160
- 'react/void-dom-elements-no-children': 0,
161
- 'react-hooks/exhaustive-deps': 0,
162
- // "simple-import-sort/imports": 0, // we need it
163
- 'stylistic/jsx-self-closing-comp': 0,
164
- 'unicorn/error-message': 0,
165
- 'unicorn/new-for-builtins': 0,
166
- 'unicorn/no-array-for-each': 0,
167
- 'unicorn/no-instanceof-array': 0,
168
- 'unicorn/no-static-only-class': 0,
169
- 'unicorn/no-thenable': 0,
170
- 'unicorn/no-typeof-undefined': 0,
171
- 'unicorn/no-useless-switch-case': 0,
172
- 'unicorn/prefer-array-flat-map': 0,
173
- 'unicorn/prefer-date-now': 0,
174
- 'unicorn/prefer-node-protocol': 0,
175
- 'unicorn/prefer-number-properties': 0,
176
- 'unicorn/require-number-to-fixed-digits-argument': 0,
177
- 'unicorn/throw-new-error': 0,
178
- },
179
- }