@gooddata/eslint-config 11.19.0-alpha.9 → 11.20.0-alpha.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.
Files changed (57) hide show
  1. package/PACKAGES_V8.md +1 -2
  2. package/PACKAGES_V9.md +1 -1
  3. package/PACKAGES_V9_OXLINT.md +21 -0
  4. package/README.md +22 -0
  5. package/dist/base.js +792 -283
  6. package/dist/base.json +1049 -213
  7. package/dist/browser-esm.js +794 -285
  8. package/dist/browser-esm.json +1051 -215
  9. package/dist/browser.js +792 -283
  10. package/dist/browser.json +1049 -213
  11. package/dist/esm-react-cypress.js +715 -187
  12. package/dist/esm-react-cypress.json +1051 -204
  13. package/dist/esm-react-vitest-storybook.js +825 -297
  14. package/dist/esm-react-vitest-storybook.json +1076 -204
  15. package/dist/esm-react-vitest.js +825 -297
  16. package/dist/esm-react-vitest.json +1060 -204
  17. package/dist/esm-react.js +798 -289
  18. package/dist/esm-react.json +1051 -216
  19. package/dist/esm-vitest.js +821 -293
  20. package/dist/esm-vitest.json +1060 -203
  21. package/dist/esm.js +794 -285
  22. package/dist/esm.json +1051 -215
  23. package/dist/oxlint-base.d.ts +12 -0
  24. package/dist/oxlint-base.js +1368 -0
  25. package/dist/oxlint-browser-esm.d.ts +12 -0
  26. package/dist/oxlint-browser-esm.js +1379 -0
  27. package/dist/oxlint-browser.d.ts +12 -0
  28. package/dist/oxlint-browser.js +1373 -0
  29. package/dist/oxlint-esm-react-cypress.d.ts +12 -0
  30. package/dist/oxlint-esm-react-cypress.js +1425 -0
  31. package/dist/oxlint-esm-react-vitest-storybook.d.ts +12 -0
  32. package/dist/oxlint-esm-react-vitest-storybook.js +1484 -0
  33. package/dist/oxlint-esm-react-vitest.d.ts +12 -0
  34. package/dist/oxlint-esm-react-vitest.js +1450 -0
  35. package/dist/oxlint-esm-react.d.ts +12 -0
  36. package/dist/oxlint-esm-react.js +1425 -0
  37. package/dist/oxlint-esm-vitest.d.ts +12 -0
  38. package/dist/oxlint-esm-vitest.js +1399 -0
  39. package/dist/oxlint-esm.d.ts +12 -0
  40. package/dist/oxlint-esm.js +1374 -0
  41. package/dist/oxlint-react-cypress.d.ts +12 -0
  42. package/dist/oxlint-react-cypress.js +1425 -0
  43. package/dist/oxlint-react-vitest.d.ts +12 -0
  44. package/dist/oxlint-react-vitest.js +1450 -0
  45. package/dist/oxlint-react.d.ts +12 -0
  46. package/dist/oxlint-react.js +1425 -0
  47. package/dist/oxlint-vitest.d.ts +12 -0
  48. package/dist/oxlint-vitest.js +1393 -0
  49. package/dist/react-cypress.js +713 -185
  50. package/dist/react-cypress.json +1050 -203
  51. package/dist/react-vitest.js +823 -295
  52. package/dist/react-vitest.json +1059 -203
  53. package/dist/react.js +796 -287
  54. package/dist/react.json +1049 -214
  55. package/dist/vitest.js +819 -291
  56. package/dist/vitest.json +1059 -202
  57. package/package.json +40 -6
@@ -7,12 +7,12 @@ import plugin0003 from "@typescript-eslint/parser";
7
7
  import plugin0004 from "eslint-plugin-no-barrel-files";
8
8
  import plugin0005 from "eslint-plugin-import-x";
9
9
  import plugin0006 from "eslint-plugin-jsdoc";
10
- import plugin0007 from "eslint-plugin-no-only-tests";
11
- import plugin0008 from "eslint-plugin-sonarjs";
12
- import plugin0009 from "eslint-plugin-react";
13
- import plugin0010 from "eslint-plugin-react-hooks";
14
- import plugin0011 from "eslint-plugin-import-esm";
15
- import plugin0012 from "@vitest/eslint-plugin";
10
+ import plugin0007 from "eslint-plugin-sonarjs";
11
+ import plugin0008 from "eslint-plugin-react";
12
+ import plugin0009 from "eslint-plugin-react-hooks";
13
+ import plugin0010 from "eslint-plugin-import-esm";
14
+ import plugin0011 from "@vitest/eslint-plugin";
15
+ import plugin0012 from "eslint-plugin-no-only-tests";
16
16
 
17
17
  export default [
18
18
  {
@@ -46,7 +46,6 @@ export default [
46
46
  "no-empty-pattern": "error",
47
47
  "no-empty-static-block": "error",
48
48
  "no-ex-assign": "error",
49
- "no-extra-boolean-cast": "error",
50
49
  "no-fallthrough": "error",
51
50
  "no-func-assign": "error",
52
51
  "no-global-assign": "error",
@@ -68,7 +67,6 @@ export default [
68
67
  "no-sparse-arrays": "error",
69
68
  "no-this-before-super": "error",
70
69
  "no-undef": "error",
71
- "no-unexpected-multiline": "off",
72
70
  "no-unreachable": "error",
73
71
  "no-unsafe-finally": "error",
74
72
  "no-unsafe-negation": "error",
@@ -78,38 +76,10 @@ export default [
78
76
  "no-unused-vars": "error",
79
77
  "no-useless-backreference": "error",
80
78
  "no-useless-catch": "error",
81
- "no-useless-escape": "off",
82
79
  "no-with": "error",
83
80
  "require-yield": "error",
84
81
  "use-isnan": "error",
85
82
  "valid-typeof": "error",
86
- "no-console": [
87
- 2,
88
- {
89
- allow: [
90
- "warn",
91
- "error",
92
- ],
93
- },
94
- ],
95
- "no-restricted-exports": [
96
- 2,
97
- {
98
- restrictDefaultExports: {
99
- direct: true,
100
- named: true,
101
- defaultFrom: true,
102
- namedFrom: true,
103
- namespaceFrom: true,
104
- },
105
- },
106
- ],
107
- "no-duplicate-imports": [
108
- "error",
109
- {
110
- includeExports: true,
111
- },
112
- ],
113
83
  "no-restricted-imports": [
114
84
  "error",
115
85
  {
@@ -630,17 +600,6 @@ export default [
630
600
  ],
631
601
  },
632
602
  ],
633
- "no-restricted-syntax": [
634
- "error",
635
- {
636
- selector: "MemberExpression[object.name='React']",
637
- message: "Do not use `React.*`. Use named imports instead.",
638
- },
639
- {
640
- selector: "MemberExpression[object.name='ReactDOM']",
641
- message: "Do not use `ReactDOM.*`. Use named imports instead.",
642
- },
643
- ],
644
603
  "sort-imports": [
645
604
  "error",
646
605
  {
@@ -649,13 +608,55 @@ export default [
649
608
  ignoreMemberSort: false,
650
609
  },
651
610
  ],
652
- "no-negated-condition": "error",
611
+ "no-useless-escape": "off",
653
612
  "no-unneeded-ternary": [
654
613
  "error",
655
614
  {
656
615
  defaultAssignment: false,
657
616
  },
658
617
  ],
618
+ "no-extra-boolean-cast": "error",
619
+ "no-unexpected-multiline": "off",
620
+ "no-duplicate-imports": [
621
+ "error",
622
+ {
623
+ includeExports: true,
624
+ },
625
+ ],
626
+ "prefer-const": "off",
627
+ "no-console": [
628
+ 2,
629
+ {
630
+ allow: [
631
+ "warn",
632
+ "error",
633
+ ],
634
+ },
635
+ ],
636
+ "no-restricted-exports": [
637
+ 2,
638
+ {
639
+ restrictDefaultExports: {
640
+ direct: true,
641
+ named: true,
642
+ defaultFrom: true,
643
+ namedFrom: true,
644
+ namespaceFrom: true,
645
+ },
646
+ },
647
+ ],
648
+ "no-restricted-syntax": [
649
+ "error",
650
+ {
651
+ selector: "MemberExpression[object.name='React']",
652
+ message: "Do not use `React.*`. Use named imports instead.",
653
+ },
654
+ {
655
+ selector: "MemberExpression[object.name='ReactDOM']",
656
+ message: "Do not use `ReactDOM.*`. Use named imports instead.",
657
+ },
658
+ ],
659
+ "no-negated-condition": "error",
659
660
  },
660
661
  },
661
662
  {
@@ -663,18 +664,6 @@ export default [
663
664
  "**/*.ts",
664
665
  "**/*.tsx",
665
666
  ],
666
- ignores: [
667
- "**/vitest.config.ts",
668
- "**/vitest.*.config.ts",
669
- "**/vitest.setup.ts",
670
- "**/vitest.setup.tsx",
671
- "**/*.test.ts",
672
- "**/*.test.tsx",
673
- "**/*.test.utils.ts",
674
- "**/*.test.utils.tsx",
675
- "**/*.test.helpers.ts",
676
- "**/*.test.helpers.tsx",
677
- ],
678
667
  rules: {
679
668
  "no-restricted-imports": [
680
669
  "error",
@@ -1206,144 +1195,666 @@ export default [
1206
1195
  },
1207
1196
  {
1208
1197
  files: [
1209
- "**/eslint.config.ts",
1210
- "**/eslint.config.js",
1198
+ "**/vitest.config.ts",
1199
+ "**/vitest.*.config.ts",
1200
+ "**/vitest.setup.ts",
1201
+ "**/vitest.setup.tsx",
1202
+ "**/*.test.ts",
1203
+ "**/*.test.tsx",
1204
+ "**/*.test.utils.ts",
1205
+ "**/*.test.utils.tsx",
1206
+ "**/*.test.helpers.ts",
1207
+ "**/*.test.helpers.tsx",
1211
1208
  ],
1212
1209
  rules: {
1213
- "no-restricted-exports": "off",
1214
- },
1215
- },
1216
- {
1217
- plugins: {
1218
- headers: plugin0001,
1219
- },
1220
- rules: {
1221
- "headers/header-format": [
1210
+ "no-restricted-imports": [
1222
1211
  "error",
1223
1212
  {
1224
- source: "string",
1225
- style: "line",
1226
- content: "(C) (years) GoodData Corporation",
1227
- patterns: {
1228
- years: {
1229
- pattern: "\\d{4}(-\\d{4})?",
1230
- defaultValue: "2026",
1213
+ paths: [
1214
+ {
1215
+ name: "react",
1216
+ importNames: [
1217
+ "default",
1218
+ ],
1219
+ message: "Default import from React is not allowed. Use named imports instead.",
1231
1220
  },
1232
- },
1233
- },
1234
- ],
1235
- },
1236
- },
1237
- {
1238
- languageOptions: {
1239
- parser: plugin0003,
1240
- sourceType: "module",
1241
- },
1242
- plugins: {
1243
- "@typescript-eslint": plugin0002,
1244
- },
1245
- },
1246
- {
1247
- files: [
1248
- "**/*.ts",
1249
- "**/*.tsx",
1250
- "**/*.mts",
1251
- "**/*.cts",
1252
- ],
1253
- languageOptions: {
1254
- parserOptions: {
1255
- projectService: true,
1256
- },
1257
- },
1258
- rules: {
1259
- "constructor-super": "off",
1260
- "getter-return": "off",
1261
- "no-class-assign": "off",
1262
- "no-const-assign": "off",
1263
- "no-dupe-args": "off",
1264
- "no-dupe-class-members": "off",
1265
- "no-dupe-keys": "off",
1266
- "no-func-assign": "off",
1267
- "no-import-assign": "off",
1268
- "no-new-native-nonconstructor": "off",
1269
- "no-new-symbol": "off",
1270
- "no-obj-calls": "off",
1271
- "no-redeclare": "off",
1272
- "no-setter-return": "off",
1273
- "no-this-before-super": "off",
1274
- "no-undef": "off",
1275
- "no-unreachable": "off",
1276
- "no-unsafe-negation": "off",
1277
- "no-var": "error",
1278
- "no-with": "off",
1279
- "prefer-const": "error",
1280
- "prefer-rest-params": "error",
1281
- "prefer-spread": "error",
1282
- "@typescript-eslint/ban-ts-comment": [
1283
- "error",
1284
- {
1285
- "ts-expect-error": "allow-with-description",
1286
- },
1287
- ],
1288
- "no-array-constructor": "off",
1289
- "@typescript-eslint/no-array-constructor": "error",
1290
- "@typescript-eslint/no-duplicate-enum-values": "error",
1291
- "@typescript-eslint/no-empty-object-type": "error",
1292
- "@typescript-eslint/no-explicit-any": "error",
1293
- "@typescript-eslint/no-extra-non-null-assertion": "error",
1294
- "@typescript-eslint/no-misused-new": "error",
1295
- "@typescript-eslint/no-namespace": "error",
1296
- "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
1297
- "@typescript-eslint/no-require-imports": "error",
1298
- "@typescript-eslint/no-this-alias": "error",
1299
- "@typescript-eslint/no-unnecessary-type-constraint": "error",
1300
- "@typescript-eslint/no-unsafe-declaration-merging": "error",
1301
- "@typescript-eslint/no-unsafe-function-type": "error",
1302
- "no-unused-expressions": "off",
1303
- "@typescript-eslint/no-unused-expressions": "error",
1304
- "no-unused-vars": "off",
1305
- "@typescript-eslint/no-unused-vars": [
1306
- 2,
1307
- {
1308
- varsIgnorePattern: "^_.*$",
1309
- argsIgnorePattern: "^_.*$",
1310
- },
1311
- ],
1312
- "@typescript-eslint/no-wrapper-object-types": "error",
1313
- "@typescript-eslint/prefer-as-const": "error",
1314
- "@typescript-eslint/prefer-namespace-keyword": "error",
1315
- "@typescript-eslint/triple-slash-reference": "error",
1316
- "@typescript-eslint/explicit-function-return-type": 0,
1317
- "@typescript-eslint/no-use-before-define": 0,
1318
- "@typescript-eslint/no-empty-function": 0,
1319
- "@typescript-eslint/naming-convention": [
1320
- "error",
1321
- {
1322
- selector: "interface",
1323
- format: [
1324
- "PascalCase",
1325
- ],
1326
- custom: {
1327
- regex: "^I[A-Z]",
1328
- match: true,
1329
- },
1330
- },
1331
- ],
1332
- "@typescript-eslint/array-type": "off",
1333
- "@typescript-eslint/no-restricted-types": [
1334
- "error",
1335
- {
1336
- types: {
1337
- String: {
1338
- message: "Use 'string' instead",
1339
- fixWith: "string",
1221
+ {
1222
+ name: "react-dom",
1223
+ importNames: [
1224
+ "default",
1225
+ ],
1226
+ message: "Default import from React DOM is not allowed. Use named imports instead.",
1340
1227
  },
1341
- Number: {
1342
- message: "Use 'number' instead",
1343
- fixWith: "number",
1228
+ {
1229
+ name: "@gooddata/sdk-ui-kit",
1230
+ importNames: [
1231
+ "Icon",
1232
+ ],
1233
+ message: "The Icon export cannot be tree-shaken, use {IconName}Icon imports instead.",
1344
1234
  },
1345
- Boolean: {
1346
- message: "Use 'boolean' instead",
1235
+ {
1236
+ name: "vitest",
1237
+ importNames: [
1238
+ "test",
1239
+ ],
1240
+ message: "Use 'it' instead of 'test' for consistency.",
1241
+ },
1242
+ ],
1243
+ patterns: [
1244
+ {
1245
+ group: [
1246
+ "lodash-es",
1247
+ ],
1248
+ importNames: [
1249
+ "get",
1250
+ "getOr",
1251
+ ],
1252
+ message: "Please use the ?. and ?? operators instead.",
1253
+ },
1254
+ {
1255
+ group: [
1256
+ "lodash-es",
1257
+ ],
1258
+ importNames: [
1259
+ "keys",
1260
+ ],
1261
+ message: "Please use Object.keys() instead.",
1262
+ },
1263
+ {
1264
+ group: [
1265
+ "lodash-es",
1266
+ ],
1267
+ importNames: [
1268
+ "values",
1269
+ ],
1270
+ message: "Please use Object.values() instead.",
1271
+ },
1272
+ {
1273
+ group: [
1274
+ "lodash-es",
1275
+ ],
1276
+ importNames: [
1277
+ "entries",
1278
+ "toPairs",
1279
+ ],
1280
+ message: "Please use Object.entries() instead.",
1281
+ },
1282
+ {
1283
+ group: [
1284
+ "lodash-es",
1285
+ ],
1286
+ importNames: [
1287
+ "map",
1288
+ ],
1289
+ message: "Please use Array.prototype.map() instead.",
1290
+ },
1291
+ {
1292
+ group: [
1293
+ "lodash-es",
1294
+ ],
1295
+ importNames: [
1296
+ "flatMap",
1297
+ ],
1298
+ message: "Please use Array.prototype.flatMap() instead.",
1299
+ },
1300
+ {
1301
+ group: [
1302
+ "lodash-es",
1303
+ ],
1304
+ importNames: [
1305
+ "filter",
1306
+ ],
1307
+ message: "Please use Array.prototype.filter() instead.",
1308
+ },
1309
+ {
1310
+ group: [
1311
+ "lodash-es",
1312
+ ],
1313
+ importNames: [
1314
+ "find",
1315
+ ],
1316
+ message: "Please use Array.prototype.find() instead.",
1317
+ },
1318
+ {
1319
+ group: [
1320
+ "lodash-es",
1321
+ ],
1322
+ importNames: [
1323
+ "findIndex",
1324
+ ],
1325
+ message: "Please use Array.prototype.findIndex() instead.",
1326
+ },
1327
+ {
1328
+ group: [
1329
+ "lodash-es",
1330
+ ],
1331
+ importNames: [
1332
+ "includes",
1333
+ ],
1334
+ message: "Please use Array.prototype.includes() instead.",
1335
+ },
1336
+ {
1337
+ group: [
1338
+ "lodash-es",
1339
+ ],
1340
+ importNames: [
1341
+ "some",
1342
+ ],
1343
+ message: "Please use Array.prototype.some() instead.",
1344
+ },
1345
+ {
1346
+ group: [
1347
+ "lodash-es",
1348
+ ],
1349
+ importNames: [
1350
+ "every",
1351
+ ],
1352
+ message: "Please use Array.prototype.every() instead.",
1353
+ },
1354
+ {
1355
+ group: [
1356
+ "lodash-es",
1357
+ ],
1358
+ importNames: [
1359
+ "concat",
1360
+ ],
1361
+ message: "Please use Array.prototype.concat() or spread [...arr1, ...arr2] instead.",
1362
+ },
1363
+ {
1364
+ group: [
1365
+ "lodash-es",
1366
+ ],
1367
+ importNames: [
1368
+ "reverse",
1369
+ ],
1370
+ message: "Please use Array.prototype.reverse() instead.",
1371
+ },
1372
+ {
1373
+ group: [
1374
+ "lodash-es",
1375
+ ],
1376
+ importNames: [
1377
+ "slice",
1378
+ ],
1379
+ message: "Please use Array.prototype.slice() instead.",
1380
+ },
1381
+ {
1382
+ group: [
1383
+ "lodash-es",
1384
+ ],
1385
+ importNames: [
1386
+ "indexOf",
1387
+ ],
1388
+ message: "Please use Array.prototype.indexOf() instead.",
1389
+ },
1390
+ {
1391
+ group: [
1392
+ "lodash-es",
1393
+ ],
1394
+ importNames: [
1395
+ "lastIndexOf",
1396
+ ],
1397
+ message: "Please use Array.prototype.lastIndexOf() instead.",
1398
+ },
1399
+ {
1400
+ group: [
1401
+ "lodash-es",
1402
+ ],
1403
+ importNames: [
1404
+ "fill",
1405
+ ],
1406
+ message: "Please use Array.prototype.fill() instead.",
1407
+ },
1408
+ {
1409
+ group: [
1410
+ "lodash-es",
1411
+ ],
1412
+ importNames: [
1413
+ "startsWith",
1414
+ ],
1415
+ message: "Please use String.prototype.startsWith() instead.",
1416
+ },
1417
+ {
1418
+ group: [
1419
+ "lodash-es",
1420
+ ],
1421
+ importNames: [
1422
+ "endsWith",
1423
+ ],
1424
+ message: "Please use String.prototype.endsWith() instead.",
1425
+ },
1426
+ {
1427
+ group: [
1428
+ "lodash-es",
1429
+ ],
1430
+ importNames: [
1431
+ "repeat",
1432
+ ],
1433
+ message: "Please use String.prototype.repeat() instead.",
1434
+ },
1435
+ {
1436
+ group: [
1437
+ "lodash-es",
1438
+ ],
1439
+ importNames: [
1440
+ "padStart",
1441
+ ],
1442
+ message: "Please use String.prototype.padStart() instead.",
1443
+ },
1444
+ {
1445
+ group: [
1446
+ "lodash-es",
1447
+ ],
1448
+ importNames: [
1449
+ "padEnd",
1450
+ ],
1451
+ message: "Please use String.prototype.padEnd() instead.",
1452
+ },
1453
+ {
1454
+ group: [
1455
+ "lodash-es",
1456
+ ],
1457
+ importNames: [
1458
+ "trim",
1459
+ ],
1460
+ message: "Please use String.prototype.trim() instead.",
1461
+ },
1462
+ {
1463
+ group: [
1464
+ "lodash-es",
1465
+ ],
1466
+ importNames: [
1467
+ "trimStart",
1468
+ "trimLeft",
1469
+ ],
1470
+ message: "Please use String.prototype.trimStart() instead.",
1471
+ },
1472
+ {
1473
+ group: [
1474
+ "lodash-es",
1475
+ ],
1476
+ importNames: [
1477
+ "trimEnd",
1478
+ "trimRight",
1479
+ ],
1480
+ message: "Please use String.prototype.trimEnd() instead.",
1481
+ },
1482
+ {
1483
+ group: [
1484
+ "lodash-es",
1485
+ ],
1486
+ importNames: [
1487
+ "toUpper",
1488
+ ],
1489
+ message: "Please use String.prototype.toUpperCase() instead.",
1490
+ },
1491
+ {
1492
+ group: [
1493
+ "lodash-es",
1494
+ ],
1495
+ importNames: [
1496
+ "toLower",
1497
+ ],
1498
+ message: "Please use String.prototype.toLowerCase() instead.",
1499
+ },
1500
+ {
1501
+ group: [
1502
+ "lodash-es",
1503
+ ],
1504
+ importNames: [
1505
+ "isArray",
1506
+ ],
1507
+ message: "Please use Array.isArray() instead.",
1508
+ },
1509
+ {
1510
+ group: [
1511
+ "lodash-es",
1512
+ ],
1513
+ importNames: [
1514
+ "isNaN",
1515
+ ],
1516
+ message: "Please use Number.isNaN() instead.",
1517
+ },
1518
+ {
1519
+ group: [
1520
+ "lodash-es",
1521
+ ],
1522
+ importNames: [
1523
+ "isFinite",
1524
+ ],
1525
+ message: "Please use Number.isFinite() instead.",
1526
+ },
1527
+ {
1528
+ group: [
1529
+ "lodash-es",
1530
+ ],
1531
+ importNames: [
1532
+ "isInteger",
1533
+ ],
1534
+ message: "Please use Number.isInteger() instead.",
1535
+ },
1536
+ {
1537
+ group: [
1538
+ "lodash-es",
1539
+ ],
1540
+ importNames: [
1541
+ "isNull",
1542
+ ],
1543
+ message: "Please use value === null instead.",
1544
+ },
1545
+ {
1546
+ group: [
1547
+ "lodash-es",
1548
+ ],
1549
+ importNames: [
1550
+ "isUndefined",
1551
+ ],
1552
+ message: "Please use value === undefined instead.",
1553
+ },
1554
+ {
1555
+ group: [
1556
+ "lodash-es",
1557
+ ],
1558
+ importNames: [
1559
+ "defaultTo",
1560
+ ],
1561
+ message: "Please use value ?? defaultValue instead.",
1562
+ },
1563
+ {
1564
+ group: [
1565
+ "lodash-es",
1566
+ ],
1567
+ importNames: [
1568
+ "assign",
1569
+ ],
1570
+ message: "Please use Object.assign() or spread syntax {...obj} instead.",
1571
+ },
1572
+ {
1573
+ group: [
1574
+ "lodash-es",
1575
+ ],
1576
+ importNames: [
1577
+ "flatten",
1578
+ ],
1579
+ message: "Please use Array.prototype.flat() instead.",
1580
+ },
1581
+ {
1582
+ group: [
1583
+ "lodash-es",
1584
+ ],
1585
+ importNames: [
1586
+ "flattenDeep",
1587
+ ],
1588
+ message: "Please use Array.prototype.flat(Infinity) instead.",
1589
+ },
1590
+ {
1591
+ group: [
1592
+ "lodash-es",
1593
+ ],
1594
+ importNames: [
1595
+ "isNil",
1596
+ ],
1597
+ message: "Please use value === null || value === undefined instead.",
1598
+ },
1599
+ {
1600
+ group: [
1601
+ "lodash-es",
1602
+ ],
1603
+ importNames: [
1604
+ "noop",
1605
+ ],
1606
+ message: "Please use () => {} instead.",
1607
+ },
1608
+ {
1609
+ group: [
1610
+ "lodash-es",
1611
+ ],
1612
+ importNames: [
1613
+ "identity",
1614
+ ],
1615
+ message: "Please use x => x instead.",
1616
+ },
1617
+ {
1618
+ group: [
1619
+ "lodash-es",
1620
+ ],
1621
+ importNames: [
1622
+ "first",
1623
+ "head",
1624
+ ],
1625
+ message: "Please use Array.prototype.at(0) instead.",
1626
+ },
1627
+ {
1628
+ group: [
1629
+ "lodash-es",
1630
+ ],
1631
+ importNames: [
1632
+ "last",
1633
+ ],
1634
+ message: "Please use Array.prototype.at(-1) instead.",
1635
+ },
1636
+ {
1637
+ group: [
1638
+ "lodash-es",
1639
+ ],
1640
+ importNames: [
1641
+ "forEach",
1642
+ ],
1643
+ message: "Please use Array.prototype.forEach() instead.",
1644
+ },
1645
+ {
1646
+ group: [
1647
+ "lodash-es",
1648
+ ],
1649
+ importNames: [
1650
+ "fromPairs",
1651
+ ],
1652
+ message: "Please use Object.fromEntries() instead.",
1653
+ },
1654
+ {
1655
+ group: [
1656
+ "lodash-es",
1657
+ ],
1658
+ importNames: [
1659
+ "join",
1660
+ ],
1661
+ message: "Please use Array.prototype.join() instead.",
1662
+ },
1663
+ {
1664
+ group: [
1665
+ "lodash-es",
1666
+ ],
1667
+ importNames: [
1668
+ "isDate",
1669
+ ],
1670
+ message: "Please use val instanceof Date instead.",
1671
+ },
1672
+ {
1673
+ group: [
1674
+ "lodash-es",
1675
+ ],
1676
+ importNames: [
1677
+ "isFunction",
1678
+ ],
1679
+ message: "Please use typeof val === 'function' instead.",
1680
+ },
1681
+ {
1682
+ group: [
1683
+ "lodash-es",
1684
+ ],
1685
+ importNames: [
1686
+ "isNumber",
1687
+ ],
1688
+ message: "Please use typeof val === 'number' instead.",
1689
+ },
1690
+ {
1691
+ group: [
1692
+ "lodash-es",
1693
+ ],
1694
+ importNames: [
1695
+ "isObject",
1696
+ ],
1697
+ message: "Please use val !== null && typeof val === 'object' instead.",
1698
+ },
1699
+ {
1700
+ group: [
1701
+ "lodash-es",
1702
+ ],
1703
+ importNames: [
1704
+ "isString",
1705
+ ],
1706
+ message: "Please use typeof val === 'string' instead.",
1707
+ },
1708
+ {
1709
+ group: [
1710
+ "lodash-es",
1711
+ ],
1712
+ importNames: [
1713
+ "toString",
1714
+ ],
1715
+ message: "Please use String(val) instead.",
1716
+ },
1717
+ {
1718
+ group: [
1719
+ "lodash-es",
1720
+ ],
1721
+ importNames: [
1722
+ "flow",
1723
+ "flowRight",
1724
+ ],
1725
+ message: "Please use refactoring your code instead.",
1726
+ },
1727
+ ],
1728
+ },
1729
+ ],
1730
+ },
1731
+ },
1732
+ {
1733
+ files: [
1734
+ "**/eslint.config.ts",
1735
+ "**/eslint.config.js",
1736
+ ],
1737
+ rules: {
1738
+ "no-restricted-exports": "off",
1739
+ },
1740
+ },
1741
+ {
1742
+ plugins: {
1743
+ headers: plugin0001,
1744
+ },
1745
+ rules: {
1746
+ "headers/header-format": [
1747
+ "error",
1748
+ {
1749
+ source: "string",
1750
+ style: "line",
1751
+ content: "(C) (years) GoodData Corporation",
1752
+ patterns: {
1753
+ years: {
1754
+ pattern: "\\d{4}(-\\d{4})?",
1755
+ defaultValue: "2026",
1756
+ },
1757
+ },
1758
+ },
1759
+ ],
1760
+ },
1761
+ },
1762
+ {
1763
+ languageOptions: {
1764
+ parser: plugin0003,
1765
+ sourceType: "module",
1766
+ },
1767
+ plugins: {
1768
+ "@typescript-eslint": plugin0002,
1769
+ },
1770
+ },
1771
+ {
1772
+ files: [
1773
+ "**/*.ts",
1774
+ "**/*.tsx",
1775
+ "**/*.mts",
1776
+ "**/*.cts",
1777
+ ],
1778
+ languageOptions: {
1779
+ parserOptions: {
1780
+ projectService: true,
1781
+ },
1782
+ },
1783
+ rules: {
1784
+ "constructor-super": "off",
1785
+ "getter-return": "off",
1786
+ "no-class-assign": "off",
1787
+ "no-const-assign": "off",
1788
+ "no-dupe-args": "off",
1789
+ "no-dupe-class-members": "off",
1790
+ "no-dupe-keys": "off",
1791
+ "no-func-assign": "off",
1792
+ "no-import-assign": "off",
1793
+ "no-new-native-nonconstructor": "off",
1794
+ "no-new-symbol": "off",
1795
+ "no-obj-calls": "off",
1796
+ "no-redeclare": "off",
1797
+ "no-setter-return": "off",
1798
+ "no-this-before-super": "off",
1799
+ "no-undef": "off",
1800
+ "no-unreachable": "off",
1801
+ "no-unsafe-negation": "off",
1802
+ "no-var": "error",
1803
+ "no-with": "off",
1804
+ "prefer-const": "error",
1805
+ "prefer-rest-params": "error",
1806
+ "prefer-spread": "error",
1807
+ "no-array-constructor": "off",
1808
+ "no-unused-expressions": "off",
1809
+ "no-unused-vars": "off",
1810
+ "@typescript-eslint/no-array-constructor": "error",
1811
+ "@typescript-eslint/no-duplicate-enum-values": "error",
1812
+ "@typescript-eslint/no-empty-object-type": "error",
1813
+ "@typescript-eslint/no-extra-non-null-assertion": "error",
1814
+ "@typescript-eslint/no-misused-new": "error",
1815
+ "@typescript-eslint/no-namespace": "error",
1816
+ "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
1817
+ "@typescript-eslint/no-require-imports": "error",
1818
+ "@typescript-eslint/no-this-alias": "error",
1819
+ "@typescript-eslint/no-unnecessary-type-constraint": "error",
1820
+ "@typescript-eslint/no-unsafe-declaration-merging": "error",
1821
+ "@typescript-eslint/prefer-as-const": "error",
1822
+ "@typescript-eslint/prefer-namespace-keyword": "error",
1823
+ "@typescript-eslint/triple-slash-reference": "error",
1824
+ "@typescript-eslint/explicit-function-return-type": 0,
1825
+ "@typescript-eslint/no-use-before-define": 0,
1826
+ "@typescript-eslint/no-empty-function": 0,
1827
+ "@typescript-eslint/no-unused-vars": [
1828
+ 2,
1829
+ {
1830
+ varsIgnorePattern: "^_.*$",
1831
+ argsIgnorePattern: "^_.*$",
1832
+ },
1833
+ ],
1834
+ "@typescript-eslint/no-explicit-any": "error",
1835
+ "@typescript-eslint/array-type": "off",
1836
+ "@typescript-eslint/ban-ts-comment": [
1837
+ "error",
1838
+ {
1839
+ "ts-expect-error": "allow-with-description",
1840
+ },
1841
+ ],
1842
+ "@typescript-eslint/no-wrapper-object-types": "error",
1843
+ "@typescript-eslint/no-unsafe-function-type": "error",
1844
+ "@typescript-eslint/no-restricted-types": [
1845
+ "error",
1846
+ {
1847
+ types: {
1848
+ String: {
1849
+ message: "Use 'string' instead",
1850
+ fixWith: "string",
1851
+ },
1852
+ Number: {
1853
+ message: "Use 'number' instead",
1854
+ fixWith: "number",
1855
+ },
1856
+ Boolean: {
1857
+ message: "Use 'boolean' instead",
1347
1858
  fixWith: "boolean",
1348
1859
  },
1349
1860
  Symbol: {
@@ -1353,18 +1864,11 @@ export default [
1353
1864
  },
1354
1865
  },
1355
1866
  ],
1356
- "@typescript-eslint/consistent-type-exports": [
1357
- "error",
1358
- {
1359
- fixMixedExportsWithInlineTypeSpecifier: false,
1360
- },
1361
- ],
1362
1867
  "@typescript-eslint/explicit-member-accessibility": "off",
1363
1868
  "@typescript-eslint/interface-name-prefix": "off",
1364
1869
  "@typescript-eslint/member-ordering": "off",
1365
1870
  "@typescript-eslint/no-inferrable-types": "off",
1366
1871
  "@typescript-eslint/no-non-null-assertion": "off",
1367
- "@typescript-eslint/prefer-optional-chain": "error",
1368
1872
  "no-restricted-syntax": [
1369
1873
  "error",
1370
1874
  {
@@ -1395,6 +1899,26 @@ export default [
1395
1899
  fixStyle: "inline-type-imports",
1396
1900
  },
1397
1901
  ],
1902
+ "@typescript-eslint/prefer-optional-chain": "error",
1903
+ "@typescript-eslint/consistent-type-exports": [
1904
+ "error",
1905
+ {
1906
+ fixMixedExportsWithInlineTypeSpecifier: false,
1907
+ },
1908
+ ],
1909
+ "@typescript-eslint/naming-convention": [
1910
+ "error",
1911
+ {
1912
+ selector: "interface",
1913
+ format: [
1914
+ "PascalCase",
1915
+ ],
1916
+ custom: {
1917
+ regex: "^I[A-Z]",
1918
+ match: true,
1919
+ },
1920
+ },
1921
+ ],
1398
1922
  },
1399
1923
  },
1400
1924
  {
@@ -1405,6 +1929,14 @@ export default [
1405
1929
  "no-barrel-files/no-barrel-files": "error",
1406
1930
  },
1407
1931
  },
1932
+ {
1933
+ files: [
1934
+ "**/eslint.config.ts",
1935
+ ],
1936
+ rules: {
1937
+ "no-barrel-files/no-barrel-files": "off",
1938
+ },
1939
+ },
1408
1940
  {
1409
1941
  plugins: {
1410
1942
  "import-x": plugin0005,
@@ -1418,7 +1950,6 @@ export default [
1418
1950
  ],
1419
1951
  },
1420
1952
  rules: {
1421
- "import-x/no-unresolved": "error",
1422
1953
  "import-x/named": "error",
1423
1954
  "import-x/namespace": "error",
1424
1955
  "import-x/default": "error",
@@ -1426,6 +1957,7 @@ export default [
1426
1957
  "import-x/no-named-as-default": "warn",
1427
1958
  "import-x/no-named-as-default-member": "warn",
1428
1959
  "import-x/no-duplicates": "warn",
1960
+ "import-x/no-unassigned-import": "error",
1429
1961
  "import-x/order": [
1430
1962
  "error",
1431
1963
  {
@@ -1461,7 +1993,6 @@ export default [
1461
1993
  "newlines-between": "always",
1462
1994
  },
1463
1995
  ],
1464
- "import-x/no-unassigned-import": "error",
1465
1996
  },
1466
1997
  },
1467
1998
  {
@@ -1500,9 +2031,6 @@ export default [
1500
2031
  },
1501
2032
  },
1502
2033
  },
1503
- rules: {
1504
- "import-x/named": "off",
1505
- },
1506
2034
  },
1507
2035
  {
1508
2036
  files: [
@@ -1522,34 +2050,14 @@ export default [
1522
2050
  },
1523
2051
  {
1524
2052
  plugins: {
1525
- "no-only-tests": plugin0007,
1526
- },
1527
- rules: {
1528
- "no-only-tests/no-only-tests": [
1529
- "error",
1530
- {
1531
- block: [
1532
- "fixture",
1533
- ],
1534
- focus: [
1535
- "only",
1536
- ],
1537
- },
1538
- ],
1539
- },
1540
- },
1541
- {
1542
- plugins: {
1543
- sonarjs: plugin0008,
2053
+ sonarjs: plugin0007,
1544
2054
  },
1545
2055
  rules: {
1546
2056
  "sonarjs/function-name": "off",
1547
- "sonarjs/class-name": "off",
1548
2057
  "sonarjs/max-lines": "off",
1549
2058
  "sonarjs/no-tab": "off",
1550
2059
  "sonarjs/variable-name": "off",
1551
2060
  "sonarjs/comment-regex": "off",
1552
- "sonarjs/no-commented-code": "off",
1553
2061
  "sonarjs/elseif-without-else": "off",
1554
2062
  "sonarjs/no-fallthrough": "error",
1555
2063
  "sonarjs/nested-control-flow": "off",
@@ -1562,15 +2070,11 @@ export default [
1562
2070
  "sonarjs/expression-complexity": "off",
1563
2071
  "sonarjs/no-redundant-parentheses": "off",
1564
2072
  "sonarjs/no-labels": "error",
1565
- "sonarjs/no-nested-assignment": "off",
1566
2073
  "sonarjs/no-redundant-boolean": "error",
1567
2074
  "sonarjs/prefer-single-boolean-return": "error",
1568
2075
  "sonarjs/unused-import": "error",
1569
- "sonarjs/fixme-tag": "off",
1570
- "sonarjs/todo-tag": "warn",
1571
2076
  "sonarjs/useless-string-operation": "off",
1572
2077
  "sonarjs/no-unused-function-argument": "off",
1573
- "sonarjs/no-duplicate-string": "off",
1574
2078
  "sonarjs/no-case-label-in-switch": "error",
1575
2079
  "sonarjs/no-parameter-reassignment": "error",
1576
2080
  "sonarjs/prefer-while": "error",
@@ -1578,14 +2082,11 @@ export default [
1578
2082
  "sonarjs/no-small-switch": "error",
1579
2083
  "sonarjs/no-hardcoded-ip": "error",
1580
2084
  "sonarjs/label-position": "error",
1581
- "sonarjs/public-static-readonly": "off",
1582
2085
  "sonarjs/file-header": "off",
1583
2086
  "sonarjs/call-argument-line": "error",
1584
2087
  "sonarjs/max-switch-cases": "error",
1585
- "sonarjs/no-unused-vars": "off",
1586
2088
  "sonarjs/prefer-immediate-return": "off",
1587
2089
  "sonarjs/function-inside-loop": "error",
1588
- "sonarjs/code-eval": "off",
1589
2090
  "sonarjs/no-variable-usage-before-declaration": "off",
1590
2091
  "sonarjs/future-reserved-words": "error",
1591
2092
  "sonarjs/array-constructor": "off",
@@ -1594,52 +2095,34 @@ export default [
1594
2095
  "sonarjs/no-primitive-wrappers": "error",
1595
2096
  "sonarjs/for-in": "off",
1596
2097
  "sonarjs/cyclomatic-complexity": "off",
1597
- "sonarjs/no-skipped-tests": "off",
1598
2098
  "sonarjs/no-identical-expressions": "error",
1599
2099
  "sonarjs/no-nested-switch": "off",
1600
- "sonarjs/constructor-for-side-effects": "off",
1601
- "sonarjs/no-dead-store": "off",
1602
2100
  "sonarjs/no-identical-conditions": "error",
1603
2101
  "sonarjs/no-duplicated-branches": "error",
1604
- "sonarjs/deprecation": "off",
1605
- "sonarjs/no-inverted-boolean-check": "off",
1606
2102
  "sonarjs/misplaced-loop-counter": "error",
1607
- "sonarjs/no-nested-functions": "off",
1608
- "sonarjs/no-hardcoded-passwords": "off",
1609
2103
  "sonarjs/sql-queries": "error",
1610
2104
  "sonarjs/insecure-cookie": "error",
1611
2105
  "sonarjs/no-useless-increment": "error",
1612
- "sonarjs/no-globals-shadowing": "off",
1613
2106
  "sonarjs/no-undefined-assignment": "off",
1614
- "sonarjs/no-empty-test-file": "off",
1615
- "sonarjs/no-ignored-return": "off",
1616
2107
  "sonarjs/no-wildcard-import": "off",
1617
- "sonarjs/arguments-order": "off",
1618
- "sonarjs/pseudo-random": "off",
1619
2108
  "sonarjs/for-loop-increment-sign": "error",
1620
2109
  "sonarjs/cookies": "off",
1621
2110
  "sonarjs/null-dereference": "error",
1622
- "sonarjs/no-selector-parameter": "off",
1623
2111
  "sonarjs/updated-loop-counter": "error",
1624
2112
  "sonarjs/block-scoped-var": "error",
1625
2113
  "sonarjs/no-built-in-override": "off",
1626
2114
  "sonarjs/prefer-object-literal": "off",
1627
- "sonarjs/no-ignored-exceptions": "off",
1628
2115
  "sonarjs/no-gratuitous-expressions": "error",
1629
2116
  "sonarjs/file-uploads": "error",
1630
2117
  "sonarjs/file-permissions": "error",
1631
2118
  "sonarjs/no-empty-character-class": "error",
1632
2119
  "sonarjs/no-unenclosed-multiline-block": "error",
1633
2120
  "sonarjs/index-of-compare-to-positive-number": "error",
1634
- "sonarjs/assertions-in-tests": "off",
1635
- "sonarjs/no-implicit-global": "off",
1636
2121
  "sonarjs/no-useless-catch": "error",
1637
2122
  "sonarjs/xml-parser-xxe": "error",
1638
2123
  "sonarjs/non-existent-operator": "error",
1639
2124
  "sonarjs/web-sql-database": "off",
1640
- "sonarjs/post-message": "off",
1641
2125
  "sonarjs/no-array-delete": "error",
1642
- "sonarjs/no-alphabetical-sort": "off",
1643
2126
  "sonarjs/no-incomplete-assertions": "error",
1644
2127
  "sonarjs/no-global-this": "error",
1645
2128
  "sonarjs/new-operator-misuse": "error",
@@ -1647,18 +2130,14 @@ export default [
1647
2130
  "sonarjs/strings-comparison": "off",
1648
2131
  "sonarjs/file-name-differ-from-class": "off",
1649
2132
  "sonarjs/cookie-no-httponly": "error",
1650
- "sonarjs/no-nested-conditional": "off",
1651
2133
  "sonarjs/no-incorrect-string-concat": "off",
1652
- "sonarjs/different-types-comparison": "off",
1653
2134
  "sonarjs/inverted-assertion-arguments": "error",
1654
2135
  "sonarjs/shorthand-property-grouping": "off",
1655
2136
  "sonarjs/updated-const-var": "error",
1656
2137
  "sonarjs/arguments-usage": "off",
1657
2138
  "sonarjs/destructuring-assignment-syntax": "off",
1658
- "sonarjs/no-invariant-returns": "off",
1659
2139
  "sonarjs/arrow-function-convention": "off",
1660
2140
  "sonarjs/class-prototype": "off",
1661
- "sonarjs/generator-without-yield": "off",
1662
2141
  "sonarjs/no-require-or-define": "off",
1663
2142
  "sonarjs/no-associative-arrays": "error",
1664
2143
  "sonarjs/comma-or-logical-or-case": "error",
@@ -1666,16 +2145,11 @@ export default [
1666
2145
  "sonarjs/inconsistent-function-call": "error",
1667
2146
  "sonarjs/no-use-of-empty-return-value": "error",
1668
2147
  "sonarjs/enforce-trailing-comma": "off",
1669
- "sonarjs/void-use": "off",
1670
2148
  "sonarjs/operation-returning-nan": "off",
1671
2149
  "sonarjs/values-not-convertible-to-numbers": "off",
1672
2150
  "sonarjs/non-number-in-arithmetic-expression": "off",
1673
- "sonarjs/cognitive-complexity": "warn",
1674
- "sonarjs/argument-type": "off",
1675
2151
  "sonarjs/in-operator-type-error": "error",
1676
- "sonarjs/array-callback-without-return": "off",
1677
2152
  "sonarjs/declarations-in-global-scope": "off",
1678
- "sonarjs/function-return-type": "off",
1679
2153
  "sonarjs/no-inconsistent-returns": "off",
1680
2154
  "sonarjs/no-reference-error": "off",
1681
2155
  "sonarjs/super-invocation": "error",
@@ -1685,50 +2159,36 @@ export default [
1685
2159
  "sonarjs/no-collection-size-mischeck": "error",
1686
2160
  "sonarjs/no-unthrown-error": "error",
1687
2161
  "sonarjs/no-unused-collection": "error",
1688
- "sonarjs/no-os-command-from-path": "off",
1689
- "sonarjs/no-misleading-array-reverse": "off",
1690
2162
  "sonarjs/no-for-in-iterable": "off",
1691
2163
  "sonarjs/no-element-overwrite": "error",
1692
2164
  "sonarjs/no-identical-functions": "error",
1693
2165
  "sonarjs/no-empty-collection": "error",
1694
2166
  "sonarjs/no-redundant-assignments": "error",
1695
2167
  "sonarjs/prefer-type-guard": "error",
1696
- "sonarjs/use-type-alias": "off",
1697
2168
  "sonarjs/no-return-type-any": "off",
1698
2169
  "sonarjs/no-implicit-dependencies": "off",
1699
- "sonarjs/no-useless-intersection": "off",
1700
2170
  "sonarjs/weak-ssl": "error",
1701
2171
  "sonarjs/no-weak-keys": "error",
1702
2172
  "sonarjs/csrf": "error",
1703
2173
  "sonarjs/production-debug": "error",
1704
- "sonarjs/prefer-default-last": "off",
1705
2174
  "sonarjs/no-in-misuse": "error",
1706
2175
  "sonarjs/no-duplicate-in-composite": "error",
1707
2176
  "sonarjs/max-union-size": "off",
1708
- "sonarjs/no-undefined-argument": "off",
1709
2177
  "sonarjs/no-nested-template-literals": "error",
1710
- "sonarjs/prefer-promise-shorthand": "off",
1711
- "sonarjs/os-command": "off",
1712
- "sonarjs/no-redundant-optional": "off",
1713
2178
  "sonarjs/regular-expr": "off",
1714
2179
  "sonarjs/encryption": "off",
1715
2180
  "sonarjs/hashing": "error",
1716
2181
  "sonarjs/bool-param-default": "off",
1717
2182
  "sonarjs/xpath": "off",
1718
2183
  "sonarjs/sockets": "off",
1719
- "sonarjs/no-try-promise": "off",
1720
2184
  "sonarjs/process-argv": "off",
1721
2185
  "sonarjs/standard-input": "off",
1722
2186
  "sonarjs/unverified-certificate": "error",
1723
- "sonarjs/no-unsafe-unzip": "off",
1724
2187
  "sonarjs/cors": "error",
1725
- "sonarjs/link-with-target-blank": "off",
1726
2188
  "sonarjs/disabled-auto-escaping": "error",
1727
- "sonarjs/table-header": "off",
1728
2189
  "sonarjs/no-table-as-layout": "error",
1729
2190
  "sonarjs/table-header-reference": "error",
1730
2191
  "sonarjs/object-alt-content": "error",
1731
- "sonarjs/no-clear-text-protocols": "off",
1732
2192
  "sonarjs/publicly-writable-directories": "error",
1733
2193
  "sonarjs/unverified-hostname": "error",
1734
2194
  "sonarjs/encryption-secure-mode": "error",
@@ -1749,21 +2209,15 @@ export default [
1749
2209
  "sonarjs/dns-prefetching": "off",
1750
2210
  "sonarjs/confidential-information-logging": "error",
1751
2211
  "sonarjs/no-ip-forward": "error",
1752
- "sonarjs/empty-string-repetition": "off",
1753
- "sonarjs/regex-complexity": "off",
1754
- "sonarjs/anchor-precedence": "off",
1755
- "sonarjs/slow-regex": "off",
1756
2212
  "sonarjs/no-invalid-regexp": "error",
1757
2213
  "sonarjs/unused-named-groups": "error",
1758
2214
  "sonarjs/no-same-argument-assert": "error",
1759
2215
  "sonarjs/unicode-aware-regex": "off",
1760
2216
  "sonarjs/no-misleading-character-class": "error",
1761
- "sonarjs/duplicates-in-character-class": "off",
1762
2217
  "sonarjs/session-regeneration": "error",
1763
2218
  "sonarjs/test-check-exception": "error",
1764
2219
  "sonarjs/stable-tests": "error",
1765
2220
  "sonarjs/no-empty-after-reluctant": "error",
1766
- "sonarjs/single-character-alternation": "off",
1767
2221
  "sonarjs/no-code-after-done": "error",
1768
2222
  "sonarjs/disabled-timeout": "error",
1769
2223
  "sonarjs/chai-determinate-assertion": "error",
@@ -1784,7 +2238,6 @@ export default [
1784
2238
  "sonarjs/aws-sagemaker-unencrypted-notebook": "error",
1785
2239
  "sonarjs/aws-restricted-ip-admin-access": "error",
1786
2240
  "sonarjs/no-empty-alternatives": "error",
1787
- "sonarjs/no-control-regex": "off",
1788
2241
  "sonarjs/no-regex-spaces": "error",
1789
2242
  "sonarjs/aws-sns-unencrypted-topics": "error",
1790
2243
  "sonarjs/existing-groups": "error",
@@ -1794,24 +2247,81 @@ export default [
1794
2247
  "sonarjs/aws-efs-unencrypted": "error",
1795
2248
  "sonarjs/aws-apigateway-public-api": "error",
1796
2249
  "sonarjs/stateful-regex": "error",
1797
- "sonarjs/concise-regex": "off",
1798
2250
  "sonarjs/single-char-in-character-classes": "error",
1799
- "sonarjs/no-hardcoded-secrets": "off",
1800
2251
  "sonarjs/no-exclusive-tests": "error",
1801
2252
  "sonarjs/hardcoded-secret-signatures": "error",
1802
2253
  "sonarjs/jsx-no-leaked-render": "error",
1803
2254
  "sonarjs/no-hook-setter-in-body": "error",
1804
- "sonarjs/no-useless-react-setstate": "off",
1805
2255
  "sonarjs/no-uniq-key": "error",
1806
- "sonarjs/redundant-type-aliases": "off",
1807
- "sonarjs/prefer-regexp-exec": "off",
1808
2256
  "sonarjs/no-internal-api-use": "error",
1809
- "sonarjs/prefer-read-only-props": "off",
1810
2257
  "sonarjs/no-literal-call": "error",
1811
- "sonarjs/reduce-initial-value": "off",
1812
- "sonarjs/no-async-constructor": "off",
1813
2258
  "sonarjs/review-blockchain-mnemonic": "error",
1814
2259
  "sonarjs/dynamically-constructed-templates": "error",
2260
+ "sonarjs/no-duplicate-string": "off",
2261
+ "sonarjs/cognitive-complexity": "warn",
2262
+ "sonarjs/todo-tag": "warn",
2263
+ "sonarjs/no-hardcoded-passwords": "off",
2264
+ "sonarjs/no-alphabetical-sort": "off",
2265
+ "sonarjs/no-os-command-from-path": "off",
2266
+ "sonarjs/os-command": "off",
2267
+ "sonarjs/prefer-regexp-exec": "off",
2268
+ "sonarjs/no-clear-text-protocols": "off",
2269
+ "sonarjs/deprecation": "off",
2270
+ "sonarjs/no-nested-conditional": "off",
2271
+ "sonarjs/no-ignored-exceptions": "off",
2272
+ "sonarjs/slow-regex": "off",
2273
+ "sonarjs/prefer-read-only-props": "off",
2274
+ "sonarjs/no-skipped-tests": "off",
2275
+ "sonarjs/no-commented-code": "off",
2276
+ "sonarjs/no-ignored-return": "off",
2277
+ "sonarjs/array-callback-without-return": "off",
2278
+ "sonarjs/pseudo-random": "off",
2279
+ "sonarjs/no-nested-functions": "off",
2280
+ "sonarjs/no-async-constructor": "off",
2281
+ "sonarjs/assertions-in-tests": "off",
2282
+ "sonarjs/function-return-type": "off",
2283
+ "sonarjs/no-unused-vars": "off",
2284
+ "sonarjs/no-invariant-returns": "off",
2285
+ "sonarjs/different-types-comparison": "off",
2286
+ "sonarjs/no-selector-parameter": "off",
2287
+ "sonarjs/anchor-precedence": "off",
2288
+ "sonarjs/redundant-type-aliases": "off",
2289
+ "sonarjs/no-redundant-optional": "off",
2290
+ "sonarjs/reduce-initial-value": "off",
2291
+ "sonarjs/no-globals-shadowing": "off",
2292
+ "sonarjs/use-type-alias": "off",
2293
+ "sonarjs/void-use": "off",
2294
+ "sonarjs/no-undefined-argument": "off",
2295
+ "sonarjs/no-useless-react-setstate": "off",
2296
+ "sonarjs/no-inverted-boolean-check": "off",
2297
+ "sonarjs/concise-regex": "off",
2298
+ "sonarjs/no-dead-store": "off",
2299
+ "sonarjs/public-static-readonly": "off",
2300
+ "sonarjs/code-eval": "off",
2301
+ "sonarjs/no-misleading-array-reverse": "off",
2302
+ "sonarjs/fixme-tag": "off",
2303
+ "sonarjs/argument-type": "off",
2304
+ "sonarjs/constructor-for-side-effects": "off",
2305
+ "sonarjs/no-useless-intersection": "off",
2306
+ "sonarjs/no-empty-test-file": "off",
2307
+ "sonarjs/prefer-default-last": "off",
2308
+ "sonarjs/prefer-promise-shorthand": "off",
2309
+ "sonarjs/no-unsafe-unzip": "off",
2310
+ "sonarjs/no-nested-assignment": "off",
2311
+ "sonarjs/generator-without-yield": "off",
2312
+ "sonarjs/no-try-promise": "off",
2313
+ "sonarjs/single-character-alternation": "off",
2314
+ "sonarjs/class-name": "off",
2315
+ "sonarjs/no-hardcoded-secrets": "off",
2316
+ "sonarjs/regex-complexity": "off",
2317
+ "sonarjs/post-message": "off",
2318
+ "sonarjs/link-with-target-blank": "off",
2319
+ "sonarjs/duplicates-in-character-class": "off",
2320
+ "sonarjs/arguments-order": "off",
2321
+ "sonarjs/empty-string-repetition": "off",
2322
+ "sonarjs/table-header": "off",
2323
+ "sonarjs/no-implicit-global": "off",
2324
+ "sonarjs/no-control-regex": "off",
1815
2325
  },
1816
2326
  },
1817
2327
  {
@@ -1902,7 +2412,7 @@ export default [
1902
2412
  },
1903
2413
  {
1904
2414
  plugins: {
1905
- react: plugin0009,
2415
+ react: plugin0008,
1906
2416
  },
1907
2417
  settings: {
1908
2418
  react: {
@@ -1937,7 +2447,7 @@ export default [
1937
2447
  },
1938
2448
  {
1939
2449
  plugins: {
1940
- "react-hooks": plugin0010,
2450
+ "react-hooks": plugin0009,
1941
2451
  },
1942
2452
  rules: {
1943
2453
  "react-hooks/rules-of-hooks": "error",
@@ -1946,7 +2456,7 @@ export default [
1946
2456
  },
1947
2457
  {
1948
2458
  plugins: {
1949
- "import-esm": plugin0011,
2459
+ "import-esm": plugin0010,
1950
2460
  },
1951
2461
  rules: {
1952
2462
  "import-esm/explicit-extension": "error",
@@ -1954,15 +2464,10 @@ export default [
1954
2464
  },
1955
2465
  {
1956
2466
  plugins: {
1957
- vitest: plugin0012,
2467
+ vitest: plugin0011,
1958
2468
  },
1959
2469
  rules: {
1960
- "vitest/expect-expect": "off",
1961
2470
  "vitest/no-conditional-expect": "error",
1962
- "vitest/no-disabled-tests": "warn",
1963
- "vitest/no-focused-tests": "warn",
1964
- "vitest/no-commented-out-tests": "warn",
1965
- "vitest/no-identical-title": "warn",
1966
2471
  "vitest/no-import-node-test": "error",
1967
2472
  "vitest/no-interpolation-in-snapshots": "error",
1968
2473
  "vitest/no-mocks-import": "error",
@@ -1971,9 +2476,32 @@ export default [
1971
2476
  "vitest/prefer-called-exactly-once-with": "error",
1972
2477
  "vitest/require-local-test-context-for-concurrent-snapshots": "error",
1973
2478
  "vitest/valid-describe-callback": "error",
1974
- "vitest/valid-expect": "warn",
1975
2479
  "vitest/valid-expect-in-promise": "error",
2480
+ "vitest/expect-expect": "off",
2481
+ "vitest/no-commented-out-tests": "warn",
1976
2482
  "vitest/valid-title": "error",
2483
+ "vitest/no-disabled-tests": "warn",
2484
+ "vitest/no-focused-tests": "warn",
2485
+ "vitest/no-identical-title": "warn",
2486
+ "vitest/valid-expect": "warn",
2487
+ },
2488
+ },
2489
+ {
2490
+ plugins: {
2491
+ "no-only-tests": plugin0012,
2492
+ },
2493
+ rules: {
2494
+ "no-only-tests/no-only-tests": [
2495
+ "error",
2496
+ {
2497
+ block: [
2498
+ "fixture",
2499
+ ],
2500
+ focus: [
2501
+ "only",
2502
+ ],
2503
+ },
2504
+ ],
1977
2505
  },
1978
2506
  },
1979
2507
  ];