@adbayb/stack 0.0.0-next-023d8d0 → 0.0.0-next-c59d48f

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.
@@ -46,11 +46,19 @@ export default tseslint.config(
46
46
  importPlugin.flatConfigs.typescript,
47
47
  {
48
48
  files: ["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],
49
+ languageOptions: {
50
+ parser: tseslint.parser,
51
+ parserOptions: {
52
+ project: "./tsconfig.json",
53
+ tsconfigRootDir: CWD,
54
+ },
55
+ },
49
56
  plugins: {
50
57
  import: importPlugin,
51
58
  jsdoc: jsdocPlugin,
52
59
  sonarjs: sonarjsPlugin,
53
60
  "sort-keys-custom-order": sortKeysCustomOrderPlugin,
61
+ "@typescript-eslint": tseslint.plugin,
54
62
  },
55
63
  settings: {
56
64
  "import/resolver": {
@@ -76,7 +84,6 @@ export default tseslint.config(
76
84
  "no-debugger": "error",
77
85
  "no-delete-var": "error",
78
86
  "no-dupe-args": "error",
79
- "no-dupe-class-members": "error",
80
87
  "no-dupe-else-if": "error",
81
88
  "no-dupe-keys": "error",
82
89
  "no-duplicate-case": "error",
@@ -92,7 +99,6 @@ export default tseslint.config(
92
99
  "no-import-assign": "error",
93
100
  "no-invalid-regexp": "error",
94
101
  "no-irregular-whitespace": "error",
95
- "no-loss-of-precision": "error",
96
102
  "no-misleading-character-class": "error",
97
103
  "no-new-native-nonconstructor": "error",
98
104
  "no-nonoctal-decimal-escape": "error",
@@ -101,7 +107,6 @@ export default tseslint.config(
101
107
  "no-prototype-builtins": "error",
102
108
  "no-redeclare": "error",
103
109
  "no-regex-spaces": "error",
104
- "no-return-await": "error",
105
110
  "no-self-assign": "error",
106
111
  "no-setter-return": "error",
107
112
  "no-shadow-restricted-names": "error",
@@ -115,7 +120,6 @@ export default tseslint.config(
115
120
  "no-unsafe-optional-chaining": "error",
116
121
  "no-unused-labels": "error",
117
122
  "no-unused-private-class-members": "error",
118
- "no-unused-vars": "error",
119
123
  "no-useless-backreference": "error",
120
124
  "no-useless-catch": "error",
121
125
  "no-useless-escape": "error",
@@ -298,34 +302,18 @@ export default tseslint.config(
298
302
  "sonarjs/anchor-has-content": "error",
299
303
  "sonarjs/anchor-is-valid": "error",
300
304
  "sonarjs/anchor-precedence": "error",
301
- "sonarjs/argument-type": "error",
302
305
  "sonarjs/arguments-order": "error",
303
- "sonarjs/array-callback-without-return": "error",
306
+ "sonarjs/arguments-usage": "error",
307
+ "sonarjs/array-constructor": "error",
304
308
  "sonarjs/assertions-in-tests": "error",
305
- "sonarjs/aws-apigateway-public-api": "error",
306
- "sonarjs/aws-ec2-rds-dms-public": "error",
307
- "sonarjs/aws-ec2-unencrypted-ebs-volume": "error",
308
- "sonarjs/aws-efs-unencrypted": "error",
309
- "sonarjs/aws-iam-all-privileges": "error",
310
- "sonarjs/aws-iam-privilege-escalation": "error",
311
- "sonarjs/aws-iam-public-access": "error",
312
- "sonarjs/aws-opensearchservice-domain": "error",
313
- "sonarjs/aws-rds-unencrypted-databases": "error",
314
- "sonarjs/aws-restricted-ip-admin-access": "error",
315
- "sonarjs/aws-s3-bucket-granted-access": "error",
316
- "sonarjs/aws-s3-bucket-insecure-http": "error",
317
- "sonarjs/aws-s3-bucket-public-access": "error",
318
- "sonarjs/aws-s3-bucket-versioning": "error",
319
- "sonarjs/aws-sagemaker-unencrypted-notebook": "error",
320
- "sonarjs/aws-sns-unencrypted-topics": "error",
321
- "sonarjs/aws-sqs-unencrypted-queue": "error",
322
309
  "sonarjs/bitwise-operators": "error",
310
+ "sonarjs/bool-param-default": "error",
323
311
  "sonarjs/call-argument-line": "error",
324
312
  "sonarjs/certificate-transparency": "error",
325
- "sonarjs/chai-determinate-assertion": "error",
326
313
  "sonarjs/class-name": "error",
314
+ "sonarjs/class-prototype": "error",
327
315
  "sonarjs/code-eval": "error",
328
- "sonarjs/cognitive-complexity": ["error", 15],
316
+ "sonarjs/cognitive-complexity": ["error", 15], // Measure code readability (the more the code is nested, the more it's difficult to understand)
329
317
  "sonarjs/comma-or-logical-or-case": "error",
330
318
  "sonarjs/concise-regex": "error",
331
319
  "sonarjs/confidential-information-logging": "error",
@@ -335,28 +323,28 @@ export default tseslint.config(
335
323
  "sonarjs/cookie-no-httponly": "error",
336
324
  "sonarjs/cors": "error",
337
325
  "sonarjs/csrf": "error",
338
- "sonarjs/default-param-last": "error",
339
- "sonarjs/deprecation": "error",
326
+ "sonarjs/cyclomatic-complexity": ["error", { threshold: 10 }], // Measure code testability (the more paths are, the more test cases need to be implemented)
340
327
  "sonarjs/different-types-comparison": "error",
341
328
  "sonarjs/disabled-auto-escaping": "error",
342
329
  "sonarjs/disabled-resource-integrity": "error",
343
- "sonarjs/disabled-timeout": "error",
344
330
  "sonarjs/duplicates-in-character-class": "error",
331
+ "sonarjs/elseif-without-else": "error",
345
332
  "sonarjs/empty-string-repetition": "error",
346
333
  "sonarjs/encryption-secure-mode": "error",
347
334
  "sonarjs/existing-groups": "error",
335
+ "sonarjs/expression-complexity": ["error", { max: 3 }],
336
+ "sonarjs/file-name-differ-from-class": "error",
348
337
  "sonarjs/file-permissions": "error",
349
338
  "sonarjs/file-uploads": "error",
350
339
  "sonarjs/fixme-tag": "error",
340
+ "sonarjs/for-in": "error",
351
341
  "sonarjs/for-loop-increment-sign": "error",
352
342
  "sonarjs/frame-ancestors": "error",
353
343
  "sonarjs/function-inside-loop": "error",
354
- "sonarjs/function-return-type": "error",
355
- "sonarjs/future-reserved-words": "error",
344
+ "sonarjs/function-name": "error",
356
345
  "sonarjs/generator-without-yield": "error",
357
346
  "sonarjs/hashing": "error",
358
347
  "sonarjs/hidden-files": "error",
359
- "sonarjs/hook-use-state": "error",
360
348
  "sonarjs/html-has-lang": "error",
361
349
  "sonarjs/in-operator-type-error": "error",
362
350
  "sonarjs/inconsistent-function-call": "error",
@@ -364,9 +352,6 @@ export default tseslint.config(
364
352
  "sonarjs/insecure-cookie": "error",
365
353
  "sonarjs/insecure-jwt-token": "error",
366
354
  "sonarjs/inverted-assertion-arguments": "error",
367
- "sonarjs/jsx-key": "error",
368
- "sonarjs/jsx-no-constructed-context-values": "error",
369
- "sonarjs/jsx-no-useless-fragment": "error",
370
355
  "sonarjs/label-has-associated-control": "error",
371
356
  "sonarjs/label-position": "error",
372
357
  "sonarjs/link-with-target-blank": "error",
@@ -392,21 +377,18 @@ export default tseslint.config(
392
377
  "sonarjs/no-commented-code": "error",
393
378
  "sonarjs/no-dead-store": "error",
394
379
  "sonarjs/no-delete-var": "error",
395
- "sonarjs/no-deprecated-react": "error",
396
380
  "sonarjs/no-duplicate-in-composite": "error",
397
381
  "sonarjs/no-duplicated-branches": "error",
398
382
  "sonarjs/no-element-overwrite": "error",
399
383
  "sonarjs/no-empty-after-reluctant": "error",
400
384
  "sonarjs/no-empty-alternatives": "error",
401
385
  "sonarjs/no-empty-collection": "error",
402
- "sonarjs/no-empty-function": "error",
403
386
  "sonarjs/no-empty-group": "error",
404
387
  "sonarjs/no-empty-test-file": "error",
405
388
  "sonarjs/no-equals-in-for-termination": "error",
406
389
  "sonarjs/no-exclusive-tests": "error",
407
390
  "sonarjs/no-extend-native": "error",
408
391
  "sonarjs/no-extra-arguments": "error",
409
- "sonarjs/no-find-dom-node": "error",
410
392
  "sonarjs/no-global-this": "error",
411
393
  "sonarjs/no-globals-shadowing": "error",
412
394
  "sonarjs/no-gratuitous-expressions": "error",
@@ -418,9 +400,11 @@ export default tseslint.config(
418
400
  "sonarjs/no-identical-functions": "error",
419
401
  "sonarjs/no-ignored-exceptions": "error",
420
402
  "sonarjs/no-ignored-return": "error",
403
+ "sonarjs/no-implicit-dependencies": "error",
421
404
  "sonarjs/no-implicit-global": "error",
422
405
  "sonarjs/no-in-misuse": "error",
423
406
  "sonarjs/no-incomplete-assertions": "error",
407
+ "sonarjs/no-incorrect-string-concat": "error",
424
408
  "sonarjs/no-infinite-loop": "error",
425
409
  "sonarjs/no-internal-api-use": "error",
426
410
  "sonarjs/no-intrusive-permissions": "error",
@@ -429,36 +413,32 @@ export default tseslint.config(
429
413
  "sonarjs/no-inverted-boolean-check": "error",
430
414
  "sonarjs/no-ip-forward": "error",
431
415
  "sonarjs/no-labels": "error",
432
- "sonarjs/no-literal-call": "error",
433
416
  "sonarjs/no-lonely-if": "error",
434
417
  "sonarjs/no-mime-sniff": "error",
435
418
  "sonarjs/no-misleading-array-reverse": "error",
436
419
  "sonarjs/no-misused-promises": "error",
437
420
  "sonarjs/no-mixed-content": "error",
438
421
  "sonarjs/no-nested-assignment": "error",
439
- "sonarjs/no-nested-conditional": "error",
440
422
  "sonarjs/no-nested-functions": "error",
423
+ "sonarjs/no-nested-incdec": "error",
424
+ "sonarjs/no-nested-switch": "error",
441
425
  "sonarjs/no-nested-template-literals": "error",
442
426
  "sonarjs/no-one-iteration-loop": "error",
443
427
  "sonarjs/no-os-command-from-path": "error",
444
428
  "sonarjs/no-parameter-reassignment": "error",
445
429
  "sonarjs/no-primitive-wrappers": "error",
446
- "sonarjs/no-redeclare": "error",
447
430
  "sonarjs/no-redundant-assignments": "error",
448
431
  "sonarjs/no-redundant-boolean": "error",
449
432
  "sonarjs/no-redundant-jump": "error",
450
- "sonarjs/no-redundant-optional": "error",
451
- "sonarjs/no-redundant-type-constituents": "error",
452
433
  "sonarjs/no-referrer-policy": "error",
453
434
  "sonarjs/no-same-argument-assert": "error",
454
- "sonarjs/no-same-line-conditional": "error",
455
435
  "sonarjs/no-selector-parameter": "error",
456
436
  "sonarjs/no-self-compare": "error",
457
437
  "sonarjs/no-self-import": "error",
458
- "sonarjs/no-skipped-test": "error",
459
438
  "sonarjs/no-small-switch": "error",
460
439
  "sonarjs/no-table-as-layout": "error",
461
- "sonarjs/no-throw-literal": "error",
440
+ // Breakpoint start from no-reference-error (https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md)
441
+ // Remove redundant rules with TS + import + ESLint
462
442
  "sonarjs/no-try-promise": "error",
463
443
  "sonarjs/no-undefined-argument": "error",
464
444
  "sonarjs/no-unenclosed-multiline-block": "error",
@@ -466,7 +446,6 @@ export default tseslint.config(
466
446
  "sonarjs/no-unknown-property": "error",
467
447
  "sonarjs/no-unreachable": "error",
468
448
  "sonarjs/no-unsafe-unzip": "error",
469
- "sonarjs/no-unsafe": "error",
470
449
  "sonarjs/no-unstable-nested-components": "error",
471
450
  "sonarjs/no-unthrown-error": "error",
472
451
  "sonarjs/no-unused-collection": "error",
@@ -490,10 +469,8 @@ export default tseslint.config(
490
469
  "sonarjs/post-message": "error",
491
470
  "sonarjs/prefer-default-last": "error",
492
471
  "sonarjs/prefer-enum-initializers": "error",
493
- "sonarjs/prefer-for-of": "error",
494
472
  "sonarjs/prefer-function-type": "error",
495
473
  "sonarjs/prefer-namespace-keyword": "error",
496
- "sonarjs/prefer-nullish-coalescing": "error",
497
474
  "sonarjs/prefer-object-spread": "error",
498
475
  "sonarjs/prefer-promise-shorthand": "error",
499
476
  "sonarjs/prefer-single-boolean-return": "error",
@@ -508,25 +485,17 @@ export default tseslint.config(
508
485
  "sonarjs/reduce-initial-value": "error",
509
486
  "sonarjs/redundant-type-aliases": "error",
510
487
  "sonarjs/regex-complexity": "error",
511
- "sonarjs/rules-of-hooks": "error",
512
488
  "sonarjs/session-regeneration": "error",
513
489
  "sonarjs/single-char-in-character-classes": "error",
514
490
  "sonarjs/single-character-alternation": "error",
515
491
  "sonarjs/sonar-block-scoped-var": "error",
516
- "sonarjs/sonar-jsx-no-leaked-render": "error",
517
492
  "sonarjs/sonar-max-params": "error",
518
493
  "sonarjs/sonar-no-control-regex": "error",
519
- "sonarjs/sonar-no-dupe-keys": "error",
520
494
  "sonarjs/sonar-no-empty-character-class": "error",
521
495
  "sonarjs/sonar-no-fallthrough": "error",
522
496
  "sonarjs/sonar-no-invalid-regexp": "error",
523
497
  "sonarjs/sonar-no-misleading-character-class": "error",
524
498
  "sonarjs/sonar-no-regex-spaces": "error",
525
- "sonarjs/sonar-no-unused-class-component-methods": "error",
526
- "sonarjs/sonar-no-unused-vars": "error",
527
- "sonarjs/sonar-prefer-optional-chain": "error",
528
- "sonarjs/sonar-prefer-read-only-props": "error",
529
- "sonarjs/sonar-prefer-regexp-exec": "error",
530
499
  "sonarjs/sql-queries": "error",
531
500
  "sonarjs/stable-tests": "error",
532
501
  "sonarjs/stateful-regex": "error",
@@ -537,7 +506,6 @@ export default tseslint.config(
537
506
  "sonarjs/test-check-exception": "error",
538
507
  "sonarjs/todo-tag": "warn",
539
508
  "sonarjs/unnecessary-character-escapes": "error",
540
- "sonarjs/unused-import": "error",
541
509
  "sonarjs/unused-named-groups": "error",
542
510
  "sonarjs/unverified-certificate": "error",
543
511
  "sonarjs/unverified-hostname": "error",
@@ -578,114 +546,7 @@ export default tseslint.config(
578
546
  },
579
547
  ],
580
548
  //#endregion
581
- },
582
- },
583
- {
584
- files: ["**/*.{jsx,tsx}"],
585
- plugins: {
586
- react: reactPlugin,
587
- "react-hooks": reactHooksPlugin,
588
- },
589
- settings: {
590
- react: {
591
- version: "detect",
592
- },
593
- },
594
- rules: {
595
- "react/display-name": "error",
596
- "react/jsx-boolean-value": "error",
597
- "react/jsx-fragments": "error",
598
- "react/jsx-key": "error",
599
- "react/jsx-no-useless-fragment": "warn",
600
- "react/jsx-pascal-case": "error",
601
- "react/jsx-sort-props": "error",
602
- "react/jsx-uses-react": "error",
603
- "react/jsx-uses-vars": "error",
604
- "react/no-children-prop": "error",
605
- "react/no-danger": "error",
606
- "react/no-deprecated": "error",
607
- "react/no-direct-mutation-state": "error",
608
- "react/no-is-mounted": "error",
609
- "react/no-render-return-value": "error",
610
- "react/no-string-refs": "error",
611
- "react/no-unescaped-entities": "error",
612
- "react/prefer-stateless-function": "error",
613
- "react/self-closing-comp": "error",
614
- "react-hooks/rules-of-hooks": "error",
615
- "react-hooks/exhaustive-deps": "warn",
616
- },
617
- },
618
- {
619
- files: [
620
- "**/test.{js,ts,jsx,tsx,cjs,cts,mjs,mts}",
621
- "**/*.test.{js,ts,jsx,tsx,cjs,cts,mjs,mts}",
622
- ],
623
- plugins: {
624
- "jest-formatting": jestFormattingPlugin,
625
- vitest: vitestPlugin,
626
- },
627
- rules: {
628
- "jest-formatting/padding-around-all": "error",
629
- "vitest/consistent-test-it": [
630
- "error",
631
- { fn: "test", withinDescribe: "test" },
632
- ],
633
- "vitest/expect-expect": "error",
634
- "vitest/max-nested-describe": ["error", { max: 1 }],
635
- "vitest/no-alias-methods": "error",
636
- "vitest/no-commented-out-tests": "error",
637
- "vitest/no-conditional-expect": "error",
638
- "vitest/no-conditional-in-test": "error",
639
- "vitest/no-conditional-tests": "error",
640
- "vitest/no-disabled-tests": "error",
641
- "vitest/no-done-callback": "error",
642
- "vitest/no-duplicate-hooks": "error",
643
- "vitest/no-focused-tests": "error",
644
- "vitest/no-identical-title": "error",
645
- "vitest/no-import-node-test": "error",
646
- "vitest/no-mocks-import": "error",
647
- "vitest/no-standalone-expect": "error",
648
- "vitest/no-test-return-statement": "error",
649
- "vitest/prefer-called-with": "error",
650
- "vitest/prefer-comparison-matcher": "error",
651
- "vitest/prefer-each": "error",
652
- "vitest/prefer-equality-matcher": "error",
653
- "vitest/prefer-hooks-in-order": "error",
654
- "vitest/prefer-hooks-on-top": "error",
655
- "vitest/prefer-lowercase-title": "error",
656
- "vitest/prefer-mock-promise-shorthand": "error",
657
- "vitest/prefer-strict-equal": "error",
658
- "vitest/prefer-to-be": "error",
659
- "vitest/prefer-to-be-object": "error",
660
- "vitest/prefer-to-contain": "error",
661
- "vitest/prefer-to-have-length": "error",
662
- "vitest/prefer-todo": "error",
663
- "vitest/require-hook": "error",
664
- "vitest/require-local-test-context-for-concurrent-snapshots":
665
- "error",
666
- "vitest/require-to-throw-message": "error",
667
- "vitest/require-top-level-describe": "error",
668
- "vitest/valid-describe-callback": "error",
669
- "vitest/valid-expect": "error",
670
- "vitest/valid-title": [
671
- "error",
672
- { mustMatch: { test: ["^should "] } },
673
- ],
674
- },
675
- },
676
- {
677
- files: ["**/*.{ts,tsx,cts,mts}"],
678
- languageOptions: {
679
- parser: tseslint.parser,
680
- parserOptions: {
681
- projectService: true,
682
- tsconfigRootDir: import.meta.dirname,
683
- },
684
- },
685
- plugins: {
686
- "@typescript-eslint": tseslint.plugin,
687
- },
688
- rules: {
549
+ //#region typescript-eslint
689
550
  "@typescript-eslint/adjacent-overload-signatures": "error",
690
551
  // https://www.totaltypescript.com/array-types-in-typescript
691
552
  "@typescript-eslint/array-type": [
@@ -813,42 +674,159 @@ export default tseslint.config(
813
674
  "@typescript-eslint/unbound-method": "error",
814
675
  "@typescript-eslint/no-dupe-class-members": "error",
815
676
  "@typescript-eslint/unified-signatures": "error",
816
- "class-methods-use-this": "off",
817
677
  "@typescript-eslint/no-empty-function": "error",
818
- "default-param-last": "off",
819
678
  "@typescript-eslint/no-empty-object-type": "error",
820
- "dot-notation": "off",
821
679
  "@typescript-eslint/no-implied-eval": "error",
822
- "no-array-constructor": "off",
823
680
  "@typescript-eslint/no-invalid-this": "error",
824
- "no-dupe-class-members": "off",
825
681
  "@typescript-eslint/no-deprecated": "error",
826
- "no-empty-function": "off",
827
682
  "@typescript-eslint/no-loop-func": "error",
828
683
  "@typescript-eslint/no-loss-of-precision": "error",
829
- "no-implied-eval": "off",
830
- "@typescript-eslint/no-redeclare": "error",
831
- "no-invalid-this": "off",
832
684
  "@typescript-eslint/no-shadow": "error",
833
- "no-loop-func": "off",
834
685
  "@typescript-eslint/return-await": "error",
835
686
  "@typescript-eslint/only-throw-error": "error",
836
- "no-loss-of-precision": "off",
837
687
  "@typescript-eslint/require-await": "error",
838
- "no-redeclare": "off",
839
688
  "@typescript-eslint/no-unused-expressions": "error",
840
- "no-return-await": "off",
841
- "no-shadow": "off",
842
689
  "@typescript-eslint/no-unused-vars": [
843
690
  "error",
844
691
  { ignoreRestSiblings: true },
845
692
  ],
846
693
  "@typescript-eslint/no-useless-constructor": "error",
847
- "no-throw-literal": "off",
848
694
  "no-unused-expressions": "off",
849
- "no-unused-vars": "off",
850
695
  "no-useless-constructor": "off",
851
696
  "require-await": "off",
697
+ //#endregion
698
+ },
699
+ },
700
+ {
701
+ files: ["**/*.{js,jsx,cjs,mjs}"],
702
+ ...tseslint.configs.disableTypeChecked,
703
+ },
704
+ {
705
+ files: ["**/*.{jsx,tsx}"],
706
+ plugins: {
707
+ react: reactPlugin,
708
+ "react-hooks": reactHooksPlugin,
709
+ },
710
+ settings: {
711
+ react: {
712
+ version: "detect",
713
+ },
714
+ },
715
+ rules: {
716
+ "react/boolean-prop-naming": [
717
+ "error",
718
+ { rule: "^(is|has)[A-Z]([A-Za-z0-9]?)+" },
719
+ ],
720
+ "react-hooks/exhaustive-deps": "warn",
721
+ "react-hooks/rules-of-hooks": "error",
722
+ "react/button-has-type": "error",
723
+ "react/checked-requires-onchange-or-readonly": "error",
724
+ "react/display-name": "error",
725
+ "react/forbid-component-props": "error",
726
+ "react/forward-ref-uses-ref": "error",
727
+ "react/hook-use-state": "error",
728
+ "react/iframe-missing-sandbox": "error",
729
+ "react/jsx-boolean-value": "error",
730
+ "react/jsx-fragments": "error",
731
+ "react/jsx-handler-names": "error",
732
+ "react/jsx-key": "error",
733
+ "react/jsx-no-bind": "error",
734
+ "react/jsx-no-constructed-context-values": "error",
735
+ "react/jsx-no-leaked-render": "error",
736
+ "react/jsx-no-script-url": "error",
737
+ "react/jsx-no-target-blank": "error",
738
+ "react/jsx-no-useless-fragment": "error",
739
+ "react/jsx-pascal-case": "error",
740
+ "react/jsx-props-no-spread-multi": "error",
741
+ "react/jsx-sort-props": "error",
742
+ "react/jsx-uses-react": "error",
743
+ "react/jsx-uses-vars": "error",
744
+ "react/no-access-state-in-setstate": "error",
745
+ "react/no-array-index-key": "error",
746
+ "react/no-arrow-function-lifecycle": "error",
747
+ "react/no-children-prop": "error",
748
+ "react/no-danger-with-children": "error",
749
+ "react/no-did-mount-set-state": "error",
750
+ "react/no-did-update-set-state": "error",
751
+ "react/no-direct-mutation-state": "error",
752
+ "react/no-find-dom-node": "error",
753
+ "react/no-is-mounted": "error",
754
+ "react/no-namespace": "error",
755
+ "react/no-object-type-as-default-prop": "error",
756
+ "react/no-redundant-should-component-update": "error",
757
+ "react/no-render-return-value": "error",
758
+ "react/no-string-refs": "error",
759
+ "react/no-this-in-sfc": "error",
760
+ "react/no-typos": "error",
761
+ "react/no-unescaped-entities": "error",
762
+ "react/no-unsafe": "error",
763
+ "react/no-unstable-nested-components": "error",
764
+ "react/no-unused-class-component-methods": "error",
765
+ "react/no-unused-state": "error",
766
+ "react/no-will-update-set-state": "error",
767
+ "react/prefer-read-only-props": "error",
768
+ "react/prefer-stateless-function": "error",
769
+ "react/self-closing-comp": "error",
770
+ "react/style-prop-object": "error",
771
+ "react/void-dom-elements-no-children": "error",
772
+ },
773
+ },
774
+ {
775
+ files: [
776
+ "**/test.{js,ts,jsx,tsx,cjs,cts,mjs,mts}",
777
+ "**/*.test.{js,ts,jsx,tsx,cjs,cts,mjs,mts}",
778
+ ],
779
+ plugins: {
780
+ "jest-formatting": jestFormattingPlugin,
781
+ vitest: vitestPlugin,
782
+ },
783
+ rules: {
784
+ "jest-formatting/padding-around-all": "error",
785
+ "vitest/consistent-test-it": [
786
+ "error",
787
+ { fn: "test", withinDescribe: "test" },
788
+ ],
789
+ "vitest/expect-expect": "error",
790
+ "vitest/max-nested-describe": ["error", { max: 1 }],
791
+ "vitest/no-alias-methods": "error",
792
+ "vitest/no-commented-out-tests": "error",
793
+ "vitest/no-conditional-expect": "error",
794
+ "vitest/no-conditional-in-test": "error",
795
+ "vitest/no-conditional-tests": "error",
796
+ "vitest/no-disabled-tests": "error",
797
+ "vitest/no-done-callback": "error",
798
+ "vitest/no-duplicate-hooks": "error",
799
+ "vitest/no-focused-tests": "error",
800
+ "vitest/no-identical-title": "error",
801
+ "vitest/no-import-node-test": "error",
802
+ "vitest/no-mocks-import": "error",
803
+ "vitest/no-standalone-expect": "error",
804
+ "vitest/no-test-return-statement": "error",
805
+ "vitest/prefer-called-with": "error",
806
+ "vitest/prefer-comparison-matcher": "error",
807
+ "vitest/prefer-each": "error",
808
+ "vitest/prefer-equality-matcher": "error",
809
+ "vitest/prefer-hooks-in-order": "error",
810
+ "vitest/prefer-hooks-on-top": "error",
811
+ "vitest/prefer-lowercase-title": "error",
812
+ "vitest/prefer-mock-promise-shorthand": "error",
813
+ "vitest/prefer-strict-equal": "error",
814
+ "vitest/prefer-to-be": "error",
815
+ "vitest/prefer-to-be-object": "error",
816
+ "vitest/prefer-to-contain": "error",
817
+ "vitest/prefer-to-have-length": "error",
818
+ "vitest/prefer-todo": "error",
819
+ "vitest/require-hook": "error",
820
+ "vitest/require-local-test-context-for-concurrent-snapshots":
821
+ "error",
822
+ "vitest/require-to-throw-message": "error",
823
+ "vitest/require-top-level-describe": "error",
824
+ "vitest/valid-describe-callback": "error",
825
+ "vitest/valid-expect": "error",
826
+ "vitest/valid-title": [
827
+ "error",
828
+ { mustMatch: { test: ["^should "] } },
829
+ ],
852
830
  },
853
831
  },
854
832
  ...new FlatCompat().extends("plugin:mdx/recommended").map((config) => ({
package/dist/index.mjs CHANGED
@@ -327,7 +327,7 @@ const PRESERVE_FILES = [
327
327
  ];
328
328
 
329
329
  var name = "@adbayb/stack";
330
- var version = "0.0.0-next-023d8d0";
330
+ var version = "0.0.0-next-c59d48f";
331
331
  var description = "My opinionated JavaScript-based toolchain";
332
332
  var publishConfig = {
333
333
  access: "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adbayb/stack",
3
- "version": "0.0.0-next-023d8d0",
3
+ "version": "0.0.0-next-c59d48f",
4
4
  "description": "My opinionated JavaScript-based toolchain",
5
5
  "publishConfig": {
6
6
  "access": "public"