@sarj/eslint-plugin 15.17.4 → 15.17.6

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/index.d.ts CHANGED
@@ -317,11 +317,196 @@ declare const RULES: {
317
317
  readonly "sole-export-matches-filename": DocumentedRule<[], "matchSoleExport">;
318
318
  readonly "require-pascal-case-zod-schema-name": DocumentedRule<readonly [], "requirePascalSchema">;
319
319
  };
320
- /** Rules registered for application-profile configs but intentionally absent from general presets. */
321
- declare const APPLICATION_ONLY_RULES: readonly ["no-restricted-library-load", "prefer-native-random-uuid", "prefer-shadcn-primitives"];
320
+ /** @deprecated All repositories use one policy; retained for import compatibility. */
321
+ declare const APPLICATION_ONLY_RULES: readonly [];
322
322
  /** Rules staged as non-blocking warnings while corpus adoption evidence accumulates. */
323
- declare const ADVISORY_RULES: readonly ["@sarj/excessive-commentary", "@sarj/no-bespoke-api-case-conversion", "@sarj/prefer-millisecond-control-duration-schema", "@sarj/prefer-module-level-refined-schema", "@sarj/prefer-multi-value-zod-literal", "@sarj/prefer-named-callback-domain", "@sarj/prefer-named-complex-return-type", "@sarj/prefer-node-crypto-hash", "@sarj/prefer-node-fs-promises", "@sarj/prefer-nullish-filter-predicate", "@sarj/prefer-shared-zod-enum", "@sarj/prefer-switch-for-repeated-equality", "@sarj/require-interface-for-exported-class", "@sarj/require-sql-access-class", "@sarj/sole-export-matches-filename"];
323
+ declare const ADVISORY_RULES: readonly ["@sarj/excessive-commentary", "@sarj/no-bespoke-api-case-conversion", "@sarj/no-restated-comment", "@sarj/prefer-millisecond-control-duration-schema", "@sarj/prefer-module-level-refined-schema", "@sarj/prefer-multi-value-zod-literal", "@sarj/prefer-named-callback-domain", "@sarj/prefer-named-complex-return-type", "@sarj/prefer-node-crypto-hash", "@sarj/prefer-node-fs-promises", "@sarj/prefer-nullish-filter-predicate", "@sarj/prefer-shared-zod-enum", "@sarj/prefer-switch-for-repeated-equality", "@sarj/require-interface-for-exported-class", "@sarj/require-sql-access-class", "@sarj/sole-export-matches-filename"];
324
324
  declare const RECOMMENDED_RULES: {
325
+ readonly "no-restricted-imports": readonly ["error", {
326
+ readonly paths: {
327
+ name: "request" | "node-fetch" | "cross-fetch" | "isomorphic-fetch" | "axios" | "moment" | "dayjs" | "lodash" | "lodash-es" | "underscore" | "classnames" | "joi" | "yup" | "superstruct" | "io-ts" | "runtypes" | "jsonwebtoken" | "express" | "koa" | "jest" | "mocha" | "sinon" | "commander" | "yargs" | "bluebird" | "rimraf" | "fs-extra" | "abort-controller" | "querystring" | "dotenv" | "chalk" | "faker" | "node-sass" | "tslint";
328
+ message: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing." | "Standards standardizes date utilities on date-fns; migration is not API-compatible." | "Standards standardizes collection utilities on Remeda and native APIs." | "Use clsx for conditional class-name composition." | "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible." | "Use jose; review key formats and async signing and verification APIs." | "Standards standardizes servers on Hono; Node deployments also need @hono/node-server." | "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup." | "Use Vitest spies, mocks, and fake timers instead of Sinon." | "Standards standardizes command-line interfaces on citty." | "Use native Promise, adding p-limit or p-map only for the extensions actually needed." | "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics." | "Node 22 provides global AbortController." | "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion." | "Standards standardizes environment loading on @dotenvx/dotenvx." | "Use picocolors for terminal colors." | "The original faker package is abandoned; use @faker-js/faker." | "node-sass is end-of-life; use Dart Sass." | "TSLint is deprecated; use ESLint with typescript-eslint.";
329
+ }[];
330
+ readonly patterns: {
331
+ group: string[];
332
+ message: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing." | "Standards standardizes date utilities on date-fns; migration is not API-compatible." | "Standards standardizes collection utilities on Remeda and native APIs." | "Use clsx for conditional class-name composition." | "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible." | "Use jose; review key formats and async signing and verification APIs." | "Standards standardizes servers on Hono; Node deployments also need @hono/node-server." | "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup." | "Use Vitest spies, mocks, and fake timers instead of Sinon." | "Standards standardizes command-line interfaces on citty." | "Use native Promise, adding p-limit or p-map only for the extensions actually needed." | "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics." | "Node 22 provides global AbortController." | "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion." | "Standards standardizes environment loading on @dotenvx/dotenvx." | "Use picocolors for terminal colors." | "The original faker package is abandoned; use @faker-js/faker." | "node-sass is end-of-life; use Dart Sass." | "TSLint is deprecated; use ESLint with typescript-eslint.";
333
+ }[];
334
+ }];
335
+ readonly "@sarj/no-restricted-library-load": readonly ["error", {
336
+ readonly libraries: readonly [{
337
+ readonly id: "LIB101";
338
+ readonly module: "request";
339
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
340
+ readonly replacement: "ky";
341
+ }, {
342
+ readonly id: "LIB101";
343
+ readonly module: "node-fetch";
344
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
345
+ readonly replacement: "ky";
346
+ }, {
347
+ readonly id: "LIB101";
348
+ readonly module: "cross-fetch";
349
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
350
+ readonly replacement: "ky";
351
+ }, {
352
+ readonly id: "LIB101";
353
+ readonly module: "isomorphic-fetch";
354
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
355
+ readonly replacement: "ky";
356
+ }, {
357
+ readonly id: "LIB101";
358
+ readonly module: "axios";
359
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
360
+ readonly replacement: "ky";
361
+ }, {
362
+ readonly id: "LIB102";
363
+ readonly module: "moment";
364
+ readonly note: "Standards standardizes date utilities on date-fns; migration is not API-compatible.";
365
+ readonly replacement: "date-fns";
366
+ }, {
367
+ readonly id: "LIB102";
368
+ readonly module: "dayjs";
369
+ readonly note: "Standards standardizes date utilities on date-fns; migration is not API-compatible.";
370
+ readonly replacement: "date-fns";
371
+ }, {
372
+ readonly id: "LIB103";
373
+ readonly module: "lodash";
374
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
375
+ readonly replacement: "remeda";
376
+ }, {
377
+ readonly id: "LIB103";
378
+ readonly module: "lodash-es";
379
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
380
+ readonly replacement: "remeda";
381
+ }, {
382
+ readonly id: "LIB103";
383
+ readonly module: "underscore";
384
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
385
+ readonly replacement: "remeda";
386
+ }, {
387
+ readonly id: "LIB104";
388
+ readonly module: "classnames";
389
+ readonly note: "Use clsx for conditional class-name composition.";
390
+ readonly replacement: "clsx";
391
+ }, {
392
+ readonly id: "LIB105";
393
+ readonly module: "joi";
394
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
395
+ readonly replacement: "zod";
396
+ }, {
397
+ readonly id: "LIB105";
398
+ readonly module: "yup";
399
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
400
+ readonly replacement: "zod";
401
+ }, {
402
+ readonly id: "LIB105";
403
+ readonly module: "superstruct";
404
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
405
+ readonly replacement: "zod";
406
+ }, {
407
+ readonly id: "LIB105";
408
+ readonly module: "io-ts";
409
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
410
+ readonly replacement: "zod";
411
+ }, {
412
+ readonly id: "LIB105";
413
+ readonly module: "runtypes";
414
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
415
+ readonly replacement: "zod";
416
+ }, {
417
+ readonly id: "LIB106";
418
+ readonly module: "jsonwebtoken";
419
+ readonly note: "Use jose; review key formats and async signing and verification APIs.";
420
+ readonly replacement: "jose";
421
+ }, {
422
+ readonly id: "LIB107";
423
+ readonly module: "express";
424
+ readonly note: "Standards standardizes servers on Hono; Node deployments also need @hono/node-server.";
425
+ readonly replacement: "hono";
426
+ }, {
427
+ readonly id: "LIB107";
428
+ readonly module: "koa";
429
+ readonly note: "Standards standardizes servers on Hono; Node deployments also need @hono/node-server.";
430
+ readonly replacement: "hono";
431
+ }, {
432
+ readonly id: "LIB108";
433
+ readonly module: "jest";
434
+ readonly note: "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup.";
435
+ readonly replacement: "vitest";
436
+ }, {
437
+ readonly id: "LIB108";
438
+ readonly module: "mocha";
439
+ readonly note: "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup.";
440
+ readonly replacement: "vitest";
441
+ }, {
442
+ readonly id: "LIB109";
443
+ readonly module: "sinon";
444
+ readonly note: "Use Vitest spies, mocks, and fake timers instead of Sinon.";
445
+ readonly replacement: "Vitest mocks";
446
+ }, {
447
+ readonly id: "LIB110";
448
+ readonly module: "commander";
449
+ readonly note: "Standards standardizes command-line interfaces on citty.";
450
+ readonly replacement: "citty";
451
+ }, {
452
+ readonly id: "LIB110";
453
+ readonly module: "yargs";
454
+ readonly note: "Standards standardizes command-line interfaces on citty.";
455
+ readonly replacement: "citty";
456
+ }, {
457
+ readonly id: "LIB111";
458
+ readonly module: "bluebird";
459
+ readonly note: "Use native Promise, adding p-limit or p-map only for the extensions actually needed.";
460
+ readonly replacement: "native Promise";
461
+ }, {
462
+ readonly id: "LIB112";
463
+ readonly module: "rimraf";
464
+ readonly note: "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics.";
465
+ readonly replacement: "node:fs/promises";
466
+ }, {
467
+ readonly id: "LIB112";
468
+ readonly module: "fs-extra";
469
+ readonly note: "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics.";
470
+ readonly replacement: "node:fs/promises";
471
+ }, {
472
+ readonly id: "LIB113";
473
+ readonly module: "abort-controller";
474
+ readonly note: "Node 22 provides global AbortController.";
475
+ readonly replacement: "AbortController";
476
+ }, {
477
+ readonly id: "LIB114";
478
+ readonly module: "querystring";
479
+ readonly note: "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion.";
480
+ readonly replacement: "URLSearchParams";
481
+ }, {
482
+ readonly id: "LIB115";
483
+ readonly module: "dotenv";
484
+ readonly note: "Standards standardizes environment loading on @dotenvx/dotenvx.";
485
+ readonly replacement: "@dotenvx/dotenvx";
486
+ }, {
487
+ readonly id: "LIB116";
488
+ readonly module: "chalk";
489
+ readonly note: "Use picocolors for terminal colors.";
490
+ readonly replacement: "picocolors";
491
+ }, {
492
+ readonly id: "LIB117";
493
+ readonly module: "faker";
494
+ readonly note: "The original faker package is abandoned; use @faker-js/faker.";
495
+ readonly replacement: "@faker-js/faker";
496
+ }, {
497
+ readonly id: "LIB118";
498
+ readonly module: "node-sass";
499
+ readonly note: "node-sass is end-of-life; use Dart Sass.";
500
+ readonly replacement: "sass";
501
+ }, {
502
+ readonly id: "LIB119";
503
+ readonly module: "tslint";
504
+ readonly note: "TSLint is deprecated; use ESLint with typescript-eslint.";
505
+ readonly replacement: "eslint";
506
+ }];
507
+ }];
508
+ readonly "@sarj/prefer-native-random-uuid": "error";
509
+ readonly "@sarj/prefer-shadcn-primitives": "error";
325
510
  readonly "@sarj/excessive-commentary": "warn";
326
511
  readonly "@sarj/interface-contract-members-private": "error";
327
512
  readonly "@sarj/iac-source-coupled-test": "error";
@@ -352,7 +537,7 @@ declare const RECOMMENDED_RULES: {
352
537
  readonly "@sarj/no-production-browser-source-maps": "error";
353
538
  readonly "@sarj/no-repeated-string-literal": "error";
354
539
  readonly "@sarj/no-router-refresh-polling": "error";
355
- readonly "@sarj/no-restated-comment": "error";
540
+ readonly "@sarj/no-restated-comment": "warn";
356
541
  readonly "@sarj/no-restated-jsdoc": "error";
357
542
  readonly "@sarj/no-secret-in-log": "error";
358
543
  readonly "@sarj/no-server-env-in-client-component": "error";
@@ -417,6 +602,191 @@ declare const RECOMMENDED_RULES: {
417
602
  readonly "@sarj/require-pascal-case-zod-schema-name": "error";
418
603
  };
419
604
  declare const STRICT_RULES: {
605
+ readonly "no-restricted-imports": readonly ["error", {
606
+ readonly paths: {
607
+ name: "request" | "node-fetch" | "cross-fetch" | "isomorphic-fetch" | "axios" | "moment" | "dayjs" | "lodash" | "lodash-es" | "underscore" | "classnames" | "joi" | "yup" | "superstruct" | "io-ts" | "runtypes" | "jsonwebtoken" | "express" | "koa" | "jest" | "mocha" | "sinon" | "commander" | "yargs" | "bluebird" | "rimraf" | "fs-extra" | "abort-controller" | "querystring" | "dotenv" | "chalk" | "faker" | "node-sass" | "tslint";
608
+ message: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing." | "Standards standardizes date utilities on date-fns; migration is not API-compatible." | "Standards standardizes collection utilities on Remeda and native APIs." | "Use clsx for conditional class-name composition." | "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible." | "Use jose; review key formats and async signing and verification APIs." | "Standards standardizes servers on Hono; Node deployments also need @hono/node-server." | "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup." | "Use Vitest spies, mocks, and fake timers instead of Sinon." | "Standards standardizes command-line interfaces on citty." | "Use native Promise, adding p-limit or p-map only for the extensions actually needed." | "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics." | "Node 22 provides global AbortController." | "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion." | "Standards standardizes environment loading on @dotenvx/dotenvx." | "Use picocolors for terminal colors." | "The original faker package is abandoned; use @faker-js/faker." | "node-sass is end-of-life; use Dart Sass." | "TSLint is deprecated; use ESLint with typescript-eslint.";
609
+ }[];
610
+ readonly patterns: {
611
+ group: string[];
612
+ message: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing." | "Standards standardizes date utilities on date-fns; migration is not API-compatible." | "Standards standardizes collection utilities on Remeda and native APIs." | "Use clsx for conditional class-name composition." | "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible." | "Use jose; review key formats and async signing and verification APIs." | "Standards standardizes servers on Hono; Node deployments also need @hono/node-server." | "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup." | "Use Vitest spies, mocks, and fake timers instead of Sinon." | "Standards standardizes command-line interfaces on citty." | "Use native Promise, adding p-limit or p-map only for the extensions actually needed." | "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics." | "Node 22 provides global AbortController." | "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion." | "Standards standardizes environment loading on @dotenvx/dotenvx." | "Use picocolors for terminal colors." | "The original faker package is abandoned; use @faker-js/faker." | "node-sass is end-of-life; use Dart Sass." | "TSLint is deprecated; use ESLint with typescript-eslint.";
613
+ }[];
614
+ }];
615
+ readonly "@sarj/no-restricted-library-load": readonly ["error", {
616
+ readonly libraries: readonly [{
617
+ readonly id: "LIB101";
618
+ readonly module: "request";
619
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
620
+ readonly replacement: "ky";
621
+ }, {
622
+ readonly id: "LIB101";
623
+ readonly module: "node-fetch";
624
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
625
+ readonly replacement: "ky";
626
+ }, {
627
+ readonly id: "LIB101";
628
+ readonly module: "cross-fetch";
629
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
630
+ readonly replacement: "ky";
631
+ }, {
632
+ readonly id: "LIB101";
633
+ readonly module: "isomorphic-fetch";
634
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
635
+ readonly replacement: "ky";
636
+ }, {
637
+ readonly id: "LIB101";
638
+ readonly module: "axios";
639
+ readonly note: "Standards standardizes HTTP clients on Ky; review errors, retries, hooks, and response parsing.";
640
+ readonly replacement: "ky";
641
+ }, {
642
+ readonly id: "LIB102";
643
+ readonly module: "moment";
644
+ readonly note: "Standards standardizes date utilities on date-fns; migration is not API-compatible.";
645
+ readonly replacement: "date-fns";
646
+ }, {
647
+ readonly id: "LIB102";
648
+ readonly module: "dayjs";
649
+ readonly note: "Standards standardizes date utilities on date-fns; migration is not API-compatible.";
650
+ readonly replacement: "date-fns";
651
+ }, {
652
+ readonly id: "LIB103";
653
+ readonly module: "lodash";
654
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
655
+ readonly replacement: "remeda";
656
+ }, {
657
+ readonly id: "LIB103";
658
+ readonly module: "lodash-es";
659
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
660
+ readonly replacement: "remeda";
661
+ }, {
662
+ readonly id: "LIB103";
663
+ readonly module: "underscore";
664
+ readonly note: "Standards standardizes collection utilities on Remeda and native APIs.";
665
+ readonly replacement: "remeda";
666
+ }, {
667
+ readonly id: "LIB104";
668
+ readonly module: "classnames";
669
+ readonly note: "Use clsx for conditional class-name composition.";
670
+ readonly replacement: "clsx";
671
+ }, {
672
+ readonly id: "LIB105";
673
+ readonly module: "joi";
674
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
675
+ readonly replacement: "zod";
676
+ }, {
677
+ readonly id: "LIB105";
678
+ readonly module: "yup";
679
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
680
+ readonly replacement: "zod";
681
+ }, {
682
+ readonly id: "LIB105";
683
+ readonly module: "superstruct";
684
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
685
+ readonly replacement: "zod";
686
+ }, {
687
+ readonly id: "LIB105";
688
+ readonly module: "io-ts";
689
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
690
+ readonly replacement: "zod";
691
+ }, {
692
+ readonly id: "LIB105";
693
+ readonly module: "runtypes";
694
+ readonly note: "Standards standardizes runtime validation on Zod; schemas are not drop-in compatible.";
695
+ readonly replacement: "zod";
696
+ }, {
697
+ readonly id: "LIB106";
698
+ readonly module: "jsonwebtoken";
699
+ readonly note: "Use jose; review key formats and async signing and verification APIs.";
700
+ readonly replacement: "jose";
701
+ }, {
702
+ readonly id: "LIB107";
703
+ readonly module: "express";
704
+ readonly note: "Standards standardizes servers on Hono; Node deployments also need @hono/node-server.";
705
+ readonly replacement: "hono";
706
+ }, {
707
+ readonly id: "LIB107";
708
+ readonly module: "koa";
709
+ readonly note: "Standards standardizes servers on Hono; Node deployments also need @hono/node-server.";
710
+ readonly replacement: "hono";
711
+ }, {
712
+ readonly id: "LIB108";
713
+ readonly module: "jest";
714
+ readonly note: "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup.";
715
+ readonly replacement: "vitest";
716
+ }, {
717
+ readonly id: "LIB108";
718
+ readonly module: "mocha";
719
+ readonly note: "Standards standardizes tests on Vitest; review globals, timers, mocks, and environment setup.";
720
+ readonly replacement: "vitest";
721
+ }, {
722
+ readonly id: "LIB109";
723
+ readonly module: "sinon";
724
+ readonly note: "Use Vitest spies, mocks, and fake timers instead of Sinon.";
725
+ readonly replacement: "Vitest mocks";
726
+ }, {
727
+ readonly id: "LIB110";
728
+ readonly module: "commander";
729
+ readonly note: "Standards standardizes command-line interfaces on citty.";
730
+ readonly replacement: "citty";
731
+ }, {
732
+ readonly id: "LIB110";
733
+ readonly module: "yargs";
734
+ readonly note: "Standards standardizes command-line interfaces on citty.";
735
+ readonly replacement: "citty";
736
+ }, {
737
+ readonly id: "LIB111";
738
+ readonly module: "bluebird";
739
+ readonly note: "Use native Promise, adding p-limit or p-map only for the extensions actually needed.";
740
+ readonly replacement: "native Promise";
741
+ }, {
742
+ readonly id: "LIB112";
743
+ readonly module: "rimraf";
744
+ readonly note: "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics.";
745
+ readonly replacement: "node:fs/promises";
746
+ }, {
747
+ readonly id: "LIB112";
748
+ readonly module: "fs-extra";
749
+ readonly note: "Prefer node:fs/promises; verify recursive removal, copy, path, and error semantics.";
750
+ readonly replacement: "node:fs/promises";
751
+ }, {
752
+ readonly id: "LIB113";
753
+ readonly module: "abort-controller";
754
+ readonly note: "Node 22 provides global AbortController.";
755
+ readonly replacement: "AbortController";
756
+ }, {
757
+ readonly id: "LIB114";
758
+ readonly module: "querystring";
759
+ readonly note: "Use URLSearchParams and explicitly review repeated keys, escaping, arrays, and object coercion.";
760
+ readonly replacement: "URLSearchParams";
761
+ }, {
762
+ readonly id: "LIB115";
763
+ readonly module: "dotenv";
764
+ readonly note: "Standards standardizes environment loading on @dotenvx/dotenvx.";
765
+ readonly replacement: "@dotenvx/dotenvx";
766
+ }, {
767
+ readonly id: "LIB116";
768
+ readonly module: "chalk";
769
+ readonly note: "Use picocolors for terminal colors.";
770
+ readonly replacement: "picocolors";
771
+ }, {
772
+ readonly id: "LIB117";
773
+ readonly module: "faker";
774
+ readonly note: "The original faker package is abandoned; use @faker-js/faker.";
775
+ readonly replacement: "@faker-js/faker";
776
+ }, {
777
+ readonly id: "LIB118";
778
+ readonly module: "node-sass";
779
+ readonly note: "node-sass is end-of-life; use Dart Sass.";
780
+ readonly replacement: "sass";
781
+ }, {
782
+ readonly id: "LIB119";
783
+ readonly module: "tslint";
784
+ readonly note: "TSLint is deprecated; use ESLint with typescript-eslint.";
785
+ readonly replacement: "eslint";
786
+ }];
787
+ }];
788
+ readonly "@sarj/prefer-native-random-uuid": "error";
789
+ readonly "@sarj/prefer-shadcn-primitives": "error";
420
790
  readonly "@sarj/excessive-commentary": "warn";
421
791
  readonly "@sarj/interface-contract-members-private": "error";
422
792
  readonly "@sarj/iac-source-coupled-test": "error";
@@ -450,7 +820,7 @@ declare const STRICT_RULES: {
450
820
  readonly "@sarj/no-raw-fetch-outside-clients": "error";
451
821
  readonly "@sarj/no-repeated-string-literal": "error";
452
822
  readonly "@sarj/no-router-refresh-polling": "error";
453
- readonly "@sarj/no-restated-comment": "error";
823
+ readonly "@sarj/no-restated-comment": "warn";
454
824
  readonly "@sarj/no-restated-jsdoc": "error";
455
825
  readonly "@sarj/no-secret-in-log": "error";
456
826
  readonly "@sarj/no-server-env-in-client-component": "error";
@@ -523,7 +893,7 @@ type FlatPreset = {
523
893
  declare const PLUGIN: {
524
894
  readonly meta: {
525
895
  readonly name: "@sarj/eslint-plugin";
526
- readonly version: "15.17.4";
896
+ readonly version: "15.17.6";
527
897
  };
528
898
  readonly rules: {
529
899
  readonly "excessive-commentary": DocumentedRule<readonly [], "excessive">;