@sarj/eslint-plugin 16.38.55 → 16.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,17 +1,7 @@
1
- import { D as DocumentedRule } from './_docs-IZjowAEc.cjs';
2
- export { p as publicDocumentation } from './_docs-IZjowAEc.cjs';
1
+ import { D as DocumentedRule } from './_docs-_eXGTNOq.cjs';
2
+ export { p as publicDocumentation } from './_docs-_eXGTNOq.cjs';
3
3
  import '@typescript-eslint/utils';
4
4
 
5
- /** @fileoverview _retired-rules — burned rule names and their migration action. */
6
- /** Why a name was withdrawn, and in which release. */
7
- interface RetiredRule {
8
- /** The plugin version whose release removed the rule. */
9
- readonly removedIn: string;
10
- /** One line a consumer can act on: why it went, and what (if anything) replaced it. */
11
- readonly reason: string;
12
- }
13
- declare const RETIRED_RULES: Readonly<Record<string, RetiredRule>>;
14
-
15
5
  interface RuleOptions$5 {
16
6
  readonly basePath?: string;
17
7
  }
@@ -125,6 +115,16 @@ declare const RENAMED_RULES: {
125
115
  readonly "trailing-value-narration": "no-trailing-value-narration";
126
116
  };
127
117
 
118
+ /** @fileoverview _retired-rules — burned rule names and their migration action. */
119
+ /** Why a name was withdrawn, and in which release. */
120
+ interface RetiredRule {
121
+ /** The plugin version whose release removed the rule. */
122
+ readonly removedIn: string;
123
+ /** One line a consumer can act on: why it went, and what (if anything) replaced it. */
124
+ readonly reason: string;
125
+ }
126
+ declare const RETIRED_RULES: Readonly<Record<string, RetiredRule>>;
127
+
128
128
  declare const RULES: {
129
129
  readonly "no-mutating-input-with-result": DocumentedRule<[], "inputWrite">;
130
130
  readonly "no-negative-only-http-status-assertion": DocumentedRule<[], "expectedStatus">;
@@ -318,6 +318,10 @@ declare const RULES: {
318
318
  readonly "sole-export-matches-filename": DocumentedRule<[], "matchSoleExport">;
319
319
  readonly "require-pascal-case-zod-schema-name": DocumentedRule<readonly [], "requirePascalSchema">;
320
320
  };
321
+ declare const meta: {
322
+ readonly name: "@sarj/eslint-plugin";
323
+ readonly version: string;
324
+ };
321
325
  /** @deprecated All repositories use one policy; retained for import compatibility. */
322
326
  declare const APPLICATION_ONLY_RULES: readonly [];
323
327
  type PresetMembership = "both" | "strict";
@@ -670,222 +674,37 @@ type RuleSetting<Row extends PolicyRow> = Row extends readonly ["shared", "both"
670
674
  type PresetRules<Preset extends "recommended" | "strict"> = {
671
675
  readonly [Name in PolicyName as Preset extends "recommended" ? (typeof RULE_POLICY)[Name][1] extends "both" ? Name : never : Name]: RuleSetting<(typeof RULE_POLICY)[Name]>;
672
676
  };
677
+ type FlatRuleSetting<Setting> = Setting extends readonly unknown[] ? [...Setting] : Setting;
678
+ type FlatPresetRules<Preset extends "recommended" | "strict"> = {
679
+ readonly [Name in keyof PresetRules<Preset>]: FlatRuleSetting<PresetRules<Preset>[Name]>;
680
+ };
673
681
  type AdvisoryRuleName = {
674
682
  [Name in PolicyName]: (typeof RULE_POLICY)[Name][0] extends "warn" ? Name : never;
675
683
  }[PolicyName];
676
684
  /** Rules staged as non-blocking warnings while corpus adoption evidence accumulates. */
677
685
  declare const ADVISORY_RULES: readonly AdvisoryRuleName[];
686
+ declare const FLAT_RECOMMENDED_RULES: FlatPresetRules<"recommended">;
687
+ declare const FLAT_STRICT_RULES: FlatPresetRules<"strict">;
678
688
  declare const RECOMMENDED_RULES: PresetRules<"recommended">;
679
689
  declare const STRICT_RULES: PresetRules<"strict">;
680
690
  type FlatPreset<Settings> = {
681
691
  readonly name: string;
682
- readonly plugins: Record<string, unknown>;
692
+ readonly plugins: {
693
+ readonly "@sarj": PluginDefinition;
694
+ };
683
695
  readonly rules: Settings;
684
696
  };
685
- declare const PLUGIN: {
686
- readonly meta: {
687
- readonly name: "@sarj/eslint-plugin";
688
- readonly version: string;
689
- };
690
- readonly rules: {
691
- readonly "no-mutating-input-with-result": DocumentedRule<[], "inputWrite">;
692
- readonly "no-negative-only-http-status-assertion": DocumentedRule<[], "expectedStatus">;
693
- readonly "production-derived-test-cases": DocumentedRule<[], "independentCases">;
694
- readonly "prefer-test-fixture-reuse": DocumentedRule<[], "reuseFixture">;
695
- readonly "no-return-disposed-resource": DocumentedRule<[], "disposedReturn">;
696
- readonly "require-constrained-schema-integer": DocumentedRule<[], "constrainInteger">;
697
- readonly "no-discarded-validation-result": DocumentedRule<[], "discarded">;
698
- readonly "require-jwt-lifetime": DocumentedRule<[], "lifetime">;
699
- readonly "prefer-dependency-interface": DocumentedRule<[], "interface">;
700
- readonly "no-generic-json-parser": DocumentedRule<[], "genericParser">;
701
- readonly "no-redundant-local-alias": DocumentedRule<[], "redundantAlias">;
702
- readonly "no-test-comments": DocumentedRule<[], "testComment">;
703
- readonly "no-mutating-container-transform": DocumentedRule<[], "borrowedMutation">;
704
- readonly "no-redundant-consumer-union": DocumentedRule<[], "redundant">;
705
- readonly "prefer-minimal-parameter-contract": DocumentedRule<[], "minimal">;
706
- readonly "no-excess-jsx-props": DocumentedRule<[], "excess">;
707
- readonly "prefer-native-fetch-in-server-actions": DocumentedRule<readonly [], "preferNativeFetchInServerActions">;
708
- readonly "no-credential-in-browser-storage": DocumentedRule<readonly [], "noCredentialInBrowserStorage">;
709
- readonly "no-numeric-search-param-coercion": DocumentedRule<readonly [], "noNumericSearchParamCoercion">;
710
- readonly "require-explicit-contract-implementation": DocumentedRule<readonly [], "declareActualContract">;
711
- readonly "require-explicit-service-contract": DocumentedRule<readonly [], "requireExplicitServiceContract">;
712
- readonly "no-conditional-empty-object-spread": DocumentedRule<[], "avoid">;
713
- readonly "prefer-typed-reflection": DocumentedRule<[], "avoid">;
714
- readonly "no-broad-return-type": DocumentedRule<[], "avoid">;
715
- readonly "no-reduce-accumulator-copy": DocumentedRule<[], "copy">;
716
- readonly "no-known-value-widening": DocumentedRule<[], "widening">;
717
- readonly "no-invalid-typed-mutation": DocumentedRule<readonly [], "incompatibleWrite">;
718
- readonly "no-contradictory-type-predicate": DocumentedRule<readonly [], "contradictoryPredicate" | "closedLiteralPredicate" | "nullAccepted" | "uncheckedArrayElements" | "uncheckedRecordFields">;
719
- readonly "no-partial-type-predicate": DocumentedRule<readonly [], "partialPredicate">;
720
- readonly "no-boolean-selector-parameter": DocumentedRule<readonly [], "booleanSelector">;
721
- readonly "no-invalid-zod-custom-parse": DocumentedRule<[], "incompatibleCustomParse">;
722
- readonly "no-contradictory-overload-return": DocumentedRule<readonly [], "contradictoryReturn">;
723
- readonly "require-button-accessible-name": DocumentedRule<readonly [{
724
- readonly components?: readonly ComponentImport[];
725
- readonly iconModules?: readonly string[];
726
- }?], "missingName">;
727
- readonly "require-camelcase-properties": DocumentedRule<readonly [], "requireCamelcaseProperty">;
728
- readonly "require-svg-accessible-name": DocumentedRule<readonly [], "missingName">;
729
- readonly "prefer-logical-tailwind-utilities": DocumentedRule<readonly [{
730
- readonly enabled?: boolean;
731
- readonly checkInsets?: boolean;
732
- readonly allowUtilities?: readonly string[];
733
- }?], "physicalUtility">;
734
- readonly "no-unlocalized-toast": DocumentedRule<readonly [(LocalizationOptions & {
735
- readonly functions?: readonly ComponentImport[];
736
- readonly methods?: readonly string[];
737
- })?], "unlocalized">;
738
- readonly "no-unlocalized-jsx-attributes": DocumentedRule<readonly [(LocalizationOptions & {
739
- readonly attributes?: readonly string[];
740
- })?], "unlocalized">;
741
- readonly "no-unlocalized-jsx-text": DocumentedRule<readonly [LocalizationOptions?], "unlocalized">;
742
- readonly "excessive-commentary": DocumentedRule<readonly [], "excessive">;
743
- readonly "iac-source-coupled-test": DocumentedRule<readonly [], "rawSourceOracle">;
744
- readonly "duplicate-test-body": DocumentedRule<readonly [], "duplicateTestBody">;
745
- readonly "enforce-file-structure": DocumentedRule<readonly [], "importsFirst" | "useServerDirective">;
746
- readonly "no-client-side-data-fetching": DocumentedRule<readonly [], "noClientFetch">;
747
- readonly "no-comment-cruft": DocumentedRule<readonly [], "commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo">;
748
- readonly "no-cors-wildcard-with-credentials": DocumentedRule<readonly [], "corsWildcardWithCredentials">;
749
- readonly "no-duplicate-lifecycle-refresh-listeners": DocumentedRule<readonly [], "duplicateLifecycleRefresh">;
750
- readonly "no-dangerously-allow-svg": DocumentedRule<readonly [], "noDangerouslyAllowSvg">;
751
- readonly "no-dynamic-sql": DocumentedRule<readonly [RuleOptions?], "dynamicSql" | "dynamicFragment">;
752
- readonly "no-enum": DocumentedRule<readonly [{
753
- ignoreFiles?: readonly string[];
754
- }?], "noEnum">;
755
- readonly "no-excessive-cognitive-complexity": DocumentedRule<[], "excessiveComplexity">;
756
- readonly "no-fat-try-blocks": DocumentedRule<readonly [RuleOptions$1?], "fatTryBlock">;
757
- readonly "no-hand-rolled-sleep": DocumentedRule<readonly [{
758
- allowIn?: readonly string[];
759
- checkClientModules?: boolean;
760
- }?], "handRolledSleep" | "handRolledTimeoutRace">;
761
- readonly "no-hand-rolled-spinner": DocumentedRule<readonly [], "handRolledSpinner">;
762
- readonly "no-insecure-random-id": DocumentedRule<readonly [], "insecureRandomId">;
763
- readonly "no-detached-global-fetch": DocumentedRule<readonly [], "detachedGlobalFetch">;
764
- readonly "no-exception-text-in-5xx-response": DocumentedRule<readonly [], "exceptionText" | "serverActionExceptionText">;
765
- readonly "no-json-stringify-error": DocumentedRule<readonly [], "noJsonStringifyError">;
766
- readonly "no-json-stringify-object-equality": DocumentedRule<readonly [], "serializedObjectEquality">;
767
- readonly "no-impossible-zod-literal-bounds": DocumentedRule<readonly [{
768
- readonly delegateRealContradictions?: boolean;
769
- }?], "impossibleBounds">;
770
- readonly "no-in-operator-on-built-in-collections": DocumentedRule<readonly [], "ambiguousCollectionIn">;
771
- readonly "no-redundant-optional-array-default": DocumentedRule<readonly [], "redundantOptionalArrayDefault">;
772
- readonly "interface-contract-members-private": DocumentedRule<readonly [], "nonContractMemberMustBePrivate">;
773
- readonly "no-log-only-catch": DocumentedRule<readonly [LoggingOptions?], "noLogOnlyCatch" | "emptyCatch">;
774
- readonly "no-bare-return-from-test-catch": DocumentedRule<readonly [], "bareReturnFromTestCatch">;
775
- readonly "no-bespoke-api-case-conversion": DocumentedRule<readonly [], "noBespokeApiCaseConversion">;
776
- readonly "no-long-comment": DocumentedRule<readonly [], "tooLong">;
777
- readonly "no-vague-suppression-description": DocumentedRule<readonly [], "vagueDescription">;
778
- readonly "no-generic-single-export-module": DocumentedRule<[], "genericSingleExport">;
779
- readonly "no-offset-pagination": DocumentedRule<readonly [], "noOffsetPagination">;
780
- readonly "no-positional-tuple-return": DocumentedRule<readonly [], "noPositionalTupleReturn">;
781
- readonly "no-production-browser-source-maps": DocumentedRule<readonly [], "noProductionBrowserSourceMaps">;
782
- readonly "no-raw-env": DocumentedRule<readonly [], "noRawEnv">;
783
- readonly "no-raw-fetch-outside-clients": DocumentedRule<readonly [RuleOptions$2?], "rawFetch">;
784
- readonly "no-restricted-library-load": DocumentedRule<readonly [{
785
- libraries: readonly RestrictedLibrary[];
786
- }], "restrictedLibraryLoad">;
787
- readonly "no-router-refresh-polling": DocumentedRule<readonly [], "routerRefreshPolling">;
788
- readonly "no-repeated-string-literal": DocumentedRule<readonly [], "noRepeatedStringLiteral">;
789
- readonly "no-restated-comment": DocumentedRule<readonly [], "deleteComment" | "restatesLineBelow">;
790
- readonly "no-restated-jsdoc": DocumentedRule<readonly [], "restatesSignature" | "deleteBlock">;
791
- readonly "no-secret-in-log": DocumentedRule<readonly [LoggingOptions?], "noSecretInLog" | "noRawBodyInLog">;
792
- readonly "no-server-env-in-client-component": DocumentedRule<readonly [], "noServerEnvInClientComponent">;
793
- readonly "no-select-star": DocumentedRule<readonly [], "noSelectStar">;
794
- readonly "no-sentinel-return-on-catch": DocumentedRule<readonly [LoggingOptions?], "noSentinelReturn">;
795
- readonly "no-silent-promise-catch": DocumentedRule<readonly [], "silentCatch">;
796
- readonly "no-sleep-in-test-body": DocumentedRule<readonly [], "noSleepInTestBody">;
797
- readonly "no-storage-in-stateless-modules": DocumentedRule<readonly [RuleOptions$3?], "storageInStatelessModule">;
798
- readonly "no-string-concat-in-loop": DocumentedRule<readonly [], "noStringConcatInLoop" | "noStringReduce">;
799
- readonly "no-tautological-expect": DocumentedRule<readonly [], "tautologicalComparison" | "tautologicalMatcher">;
800
- readonly "no-duplicate-test-case": DocumentedRule<readonly [], "duplicateCase">;
801
- readonly "no-typed-doc-sections": DocumentedRule<readonly [], "typedSection">;
802
- readonly "no-trailing-value-narration": DocumentedRule<readonly [], "deleteNarration" | "narratesValue" | "removeNarration">;
803
- readonly "no-declaration-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
804
- readonly "no-union-in-comment": DocumentedRule<readonly [], "unionInComment">;
805
- readonly "no-type-member-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
806
- readonly "no-unnecessary-use-client": DocumentedRule<readonly [], "unnecessaryUseClient">;
807
- readonly "no-unsafe-mock-casting": DocumentedRule<[], "unsafeMockCast">;
808
- readonly "no-unsafe-test-double-cast": DocumentedRule<[], "noUnsafeTestDoubleCast">;
809
- readonly "no-first-party-module-mock": DocumentedRule<readonly [{
810
- additionalModulePrefixes?: readonly string[];
811
- }], "noFirstPartyModuleMock">;
812
- readonly "no-zod-native-enum": DocumentedRule<readonly [], "nativeEnum" | "enumOfTsEnum">;
813
- readonly "require-use-form-default-values": DocumentedRule<readonly [], "requireUseFormDefaultValues">;
814
- readonly "require-use-server-in-actions-file": DocumentedRule<readonly [], "requireUseServerInActionsFile">;
815
- readonly "test-loops-over-literal-cases": DocumentedRule<readonly [], "literalCaseLoop">;
816
- readonly "test-phase-label-comment": DocumentedRule<readonly [], "removeLabel">;
817
- readonly "prefer-constant-time-secret-compare": DocumentedRule<readonly [], "preferConstantTimeSecretCompare">;
818
- readonly "prefer-ecmascript-private-members": DocumentedRule<readonly [], "preferEcmascriptPrivate">;
819
- readonly "prefer-discriminated-union": DocumentedRule<readonly [], "preferDiscriminatedUnion" | "preferProducedVariants">;
820
- readonly "prefer-input-group-search": DocumentedRule<readonly [], "preferInputGroup">;
821
- readonly "prefer-millisecond-control-duration-schema": DocumentedRule<readonly [], "preferMilliseconds">;
822
- readonly "prefer-immutable-module-constant": DocumentedRule<readonly [], "preferAsConst" | "preferReadonlyCollection">;
823
- readonly "prefer-shadcn-primitives": DocumentedRule<readonly [RuleOptions$4?], "preferShadcnPrimitive">;
824
- readonly "prefer-module-level-constant": DocumentedRule<readonly [{
825
- minElements?: number;
826
- checkRegex?: boolean;
827
- ignoreTestFiles?: boolean;
828
- }?], "hoistCollection" | "hoistRegex">;
829
- readonly "prefer-module-level-schema": DocumentedRule<readonly [{
830
- factories?: readonly string[];
831
- ignoreTestFiles?: boolean;
832
- memoCallees?: readonly string[];
833
- minProperties?: number;
834
- }?], "hoistSchema">;
835
- readonly "prefer-module-level-refined-schema": DocumentedRule<[], "hoistRefinedSchema">;
836
- readonly "prefer-multi-value-zod-literal": DocumentedRule<readonly [{
837
- zodMajorVersion?: 4;
838
- }], "useMultiValueLiteral">;
839
- readonly "prefer-named-callback-domain": DocumentedRule<[], "nameCallbackDomain">;
840
- readonly "prefer-nominal-id-types": DocumentedRule<[], "preferNominalIds">;
841
- readonly "prefer-named-complex-return-type": DocumentedRule<[], "nameComplexReturnType">;
842
- readonly "prefer-native-random-uuid": DocumentedRule<readonly [], "preferNative" | "replaceWithNative">;
843
- readonly "prefer-node-crypto-hash": DocumentedRule<readonly [], "preferNodeCryptoHash">;
844
- readonly "prefer-node-fs-promises": DocumentedRule<[], "preferAsyncFs">;
845
- readonly "prefer-non-nullable-collection": DocumentedRule<readonly [], "preferNonNullableCollection">;
846
- readonly "prefer-nullish-filter-predicate": DocumentedRule<readonly [], "preferNullishPredicate" | "replaceBoolean">;
847
- readonly "prefer-await-in-async-return": DocumentedRule<readonly [{
848
- readonly scope: "async-return" | "all-promise-calls";
849
- }], "preferAwait" | "preferAwaitCall">;
850
- readonly "prefer-schema-for-api-payload": DocumentedRule<readonly [], "unparsedJsonAccess">;
851
- readonly "prefer-shared-zod-enum": DocumentedRule<[], "shareEnumDomain">;
852
- readonly "prefer-switch-for-repeated-equality": DocumentedRule<[], "preferSwitch">;
853
- readonly "prefer-semantic-colors": DocumentedRule<readonly [{
854
- opaqueForegroundPairs?: boolean;
855
- requireSemanticTokens?: boolean;
856
- }?], "rawPalette" | "arbitraryColor" | "inlineColor" | "opaqueForegroundPair">;
857
- readonly "prefer-server-actions": DocumentedRule<readonly [RuleOptions$5?], "preferServerAction">;
858
- readonly "prefer-whole-object-assertion": DocumentedRule<readonly [], "combineAssertions" | "assertArrayOnce">;
859
- readonly "repeated-static-call-cases": DocumentedRule<readonly [], "repeatedStaticCallCases">;
860
- readonly "prefer-zod-infer": DocumentedRule<readonly [{
861
- ignoreTypeNames?: readonly string[];
862
- requireIdenticalShape?: boolean;
863
- }?], "handWrittenTwin" | "repeatedEnumUnion">;
864
- readonly "named-child-schema-type": DocumentedRule<readonly [], "namedChildType">;
865
- readonly "prefer-zod-parse-output-type": DocumentedRule<readonly [], "handWrittenParsedOutput">;
866
- readonly "require-assert-never": DocumentedRule<readonly [], "missingAssertNever">;
867
- readonly "require-fetch-timeout": DocumentedRule<readonly [{
868
- allowIn?: readonly string[];
869
- }?], "missingSignal">;
870
- readonly "require-interface-for-exported-class": DocumentedRule<[], "requireContract">;
871
- readonly "require-port-for-service": DocumentedRule<readonly [], "requireInterface">;
872
- readonly "require-sql-access-class": DocumentedRule<[], "moveSqlIntoClass">;
873
- readonly "require-static-next-matcher": DocumentedRule<readonly [], "dynamicMatcher">;
874
- readonly "require-zod-form-validation": DocumentedRule<readonly [], "missingZodValidation">;
875
- readonly "store-insert-requires-on-conflict": DocumentedRule<readonly [], "storeInsertRequiresOnConflict">;
876
- readonly stepdown: DocumentedRule<[{
877
- readonly privateBandOnly?: boolean;
878
- }], "helperAboveOnlyCaller">;
879
- readonly "source-coupled-test": DocumentedRule<readonly [], "rawSourceOracle">;
880
- readonly "sole-export-matches-filename": DocumentedRule<[], "matchSoleExport">;
881
- readonly "require-pascal-case-zod-schema-name": DocumentedRule<readonly [], "requirePascalSchema">;
882
- };
883
- readonly retiredRules: Readonly<Record<string, RetiredRule>>;
697
+ interface PluginDefinition {
698
+ readonly meta: typeof meta;
699
+ readonly rules: typeof RULES;
700
+ readonly retiredRules: typeof RETIRED_RULES;
701
+ /** TSESLint.ESLint accepts these typed callbacks while running the native ESLint engine. */
884
702
  readonly configs: {
885
- readonly recommended: FlatPreset<typeof RECOMMENDED_RULES>;
886
- readonly strict: FlatPreset<typeof STRICT_RULES>;
703
+ readonly recommended: FlatPreset<typeof FLAT_RECOMMENDED_RULES>;
704
+ readonly strict: FlatPreset<typeof FLAT_STRICT_RULES>;
887
705
  };
888
- };
706
+ }
707
+ declare const PLUGIN: PluginDefinition;
889
708
 
890
709
  export { ADVISORY_RULES, APPLICATION_ONLY_RULES, DocumentedRule, RECOMMENDED_RULES, RENAMED_RULES, RETIRED_RULES, RULES, STRICT_RULES, ADVISORY_RULES as advisoryRules, APPLICATION_ONLY_RULES as applicationOnlyRules, PLUGIN as default, RECOMMENDED_RULES as recommendedRules, RENAMED_RULES as renamedRules, RETIRED_RULES as retiredRules, RULES as rules, STRICT_RULES as strictRules };
891
710
  export type { RetiredRule };
package/dist/index.d.ts CHANGED
@@ -1,17 +1,7 @@
1
- import { D as DocumentedRule } from './_docs-IZjowAEc.js';
2
- export { p as publicDocumentation } from './_docs-IZjowAEc.js';
1
+ import { D as DocumentedRule } from './_docs-_eXGTNOq.js';
2
+ export { p as publicDocumentation } from './_docs-_eXGTNOq.js';
3
3
  import '@typescript-eslint/utils';
4
4
 
5
- /** @fileoverview _retired-rules — burned rule names and their migration action. */
6
- /** Why a name was withdrawn, and in which release. */
7
- interface RetiredRule {
8
- /** The plugin version whose release removed the rule. */
9
- readonly removedIn: string;
10
- /** One line a consumer can act on: why it went, and what (if anything) replaced it. */
11
- readonly reason: string;
12
- }
13
- declare const RETIRED_RULES: Readonly<Record<string, RetiredRule>>;
14
-
15
5
  interface RuleOptions$5 {
16
6
  readonly basePath?: string;
17
7
  }
@@ -125,6 +115,16 @@ declare const RENAMED_RULES: {
125
115
  readonly "trailing-value-narration": "no-trailing-value-narration";
126
116
  };
127
117
 
118
+ /** @fileoverview _retired-rules — burned rule names and their migration action. */
119
+ /** Why a name was withdrawn, and in which release. */
120
+ interface RetiredRule {
121
+ /** The plugin version whose release removed the rule. */
122
+ readonly removedIn: string;
123
+ /** One line a consumer can act on: why it went, and what (if anything) replaced it. */
124
+ readonly reason: string;
125
+ }
126
+ declare const RETIRED_RULES: Readonly<Record<string, RetiredRule>>;
127
+
128
128
  declare const RULES: {
129
129
  readonly "no-mutating-input-with-result": DocumentedRule<[], "inputWrite">;
130
130
  readonly "no-negative-only-http-status-assertion": DocumentedRule<[], "expectedStatus">;
@@ -318,6 +318,10 @@ declare const RULES: {
318
318
  readonly "sole-export-matches-filename": DocumentedRule<[], "matchSoleExport">;
319
319
  readonly "require-pascal-case-zod-schema-name": DocumentedRule<readonly [], "requirePascalSchema">;
320
320
  };
321
+ declare const meta: {
322
+ readonly name: "@sarj/eslint-plugin";
323
+ readonly version: string;
324
+ };
321
325
  /** @deprecated All repositories use one policy; retained for import compatibility. */
322
326
  declare const APPLICATION_ONLY_RULES: readonly [];
323
327
  type PresetMembership = "both" | "strict";
@@ -670,222 +674,37 @@ type RuleSetting<Row extends PolicyRow> = Row extends readonly ["shared", "both"
670
674
  type PresetRules<Preset extends "recommended" | "strict"> = {
671
675
  readonly [Name in PolicyName as Preset extends "recommended" ? (typeof RULE_POLICY)[Name][1] extends "both" ? Name : never : Name]: RuleSetting<(typeof RULE_POLICY)[Name]>;
672
676
  };
677
+ type FlatRuleSetting<Setting> = Setting extends readonly unknown[] ? [...Setting] : Setting;
678
+ type FlatPresetRules<Preset extends "recommended" | "strict"> = {
679
+ readonly [Name in keyof PresetRules<Preset>]: FlatRuleSetting<PresetRules<Preset>[Name]>;
680
+ };
673
681
  type AdvisoryRuleName = {
674
682
  [Name in PolicyName]: (typeof RULE_POLICY)[Name][0] extends "warn" ? Name : never;
675
683
  }[PolicyName];
676
684
  /** Rules staged as non-blocking warnings while corpus adoption evidence accumulates. */
677
685
  declare const ADVISORY_RULES: readonly AdvisoryRuleName[];
686
+ declare const FLAT_RECOMMENDED_RULES: FlatPresetRules<"recommended">;
687
+ declare const FLAT_STRICT_RULES: FlatPresetRules<"strict">;
678
688
  declare const RECOMMENDED_RULES: PresetRules<"recommended">;
679
689
  declare const STRICT_RULES: PresetRules<"strict">;
680
690
  type FlatPreset<Settings> = {
681
691
  readonly name: string;
682
- readonly plugins: Record<string, unknown>;
692
+ readonly plugins: {
693
+ readonly "@sarj": PluginDefinition;
694
+ };
683
695
  readonly rules: Settings;
684
696
  };
685
- declare const PLUGIN: {
686
- readonly meta: {
687
- readonly name: "@sarj/eslint-plugin";
688
- readonly version: string;
689
- };
690
- readonly rules: {
691
- readonly "no-mutating-input-with-result": DocumentedRule<[], "inputWrite">;
692
- readonly "no-negative-only-http-status-assertion": DocumentedRule<[], "expectedStatus">;
693
- readonly "production-derived-test-cases": DocumentedRule<[], "independentCases">;
694
- readonly "prefer-test-fixture-reuse": DocumentedRule<[], "reuseFixture">;
695
- readonly "no-return-disposed-resource": DocumentedRule<[], "disposedReturn">;
696
- readonly "require-constrained-schema-integer": DocumentedRule<[], "constrainInteger">;
697
- readonly "no-discarded-validation-result": DocumentedRule<[], "discarded">;
698
- readonly "require-jwt-lifetime": DocumentedRule<[], "lifetime">;
699
- readonly "prefer-dependency-interface": DocumentedRule<[], "interface">;
700
- readonly "no-generic-json-parser": DocumentedRule<[], "genericParser">;
701
- readonly "no-redundant-local-alias": DocumentedRule<[], "redundantAlias">;
702
- readonly "no-test-comments": DocumentedRule<[], "testComment">;
703
- readonly "no-mutating-container-transform": DocumentedRule<[], "borrowedMutation">;
704
- readonly "no-redundant-consumer-union": DocumentedRule<[], "redundant">;
705
- readonly "prefer-minimal-parameter-contract": DocumentedRule<[], "minimal">;
706
- readonly "no-excess-jsx-props": DocumentedRule<[], "excess">;
707
- readonly "prefer-native-fetch-in-server-actions": DocumentedRule<readonly [], "preferNativeFetchInServerActions">;
708
- readonly "no-credential-in-browser-storage": DocumentedRule<readonly [], "noCredentialInBrowserStorage">;
709
- readonly "no-numeric-search-param-coercion": DocumentedRule<readonly [], "noNumericSearchParamCoercion">;
710
- readonly "require-explicit-contract-implementation": DocumentedRule<readonly [], "declareActualContract">;
711
- readonly "require-explicit-service-contract": DocumentedRule<readonly [], "requireExplicitServiceContract">;
712
- readonly "no-conditional-empty-object-spread": DocumentedRule<[], "avoid">;
713
- readonly "prefer-typed-reflection": DocumentedRule<[], "avoid">;
714
- readonly "no-broad-return-type": DocumentedRule<[], "avoid">;
715
- readonly "no-reduce-accumulator-copy": DocumentedRule<[], "copy">;
716
- readonly "no-known-value-widening": DocumentedRule<[], "widening">;
717
- readonly "no-invalid-typed-mutation": DocumentedRule<readonly [], "incompatibleWrite">;
718
- readonly "no-contradictory-type-predicate": DocumentedRule<readonly [], "contradictoryPredicate" | "closedLiteralPredicate" | "nullAccepted" | "uncheckedArrayElements" | "uncheckedRecordFields">;
719
- readonly "no-partial-type-predicate": DocumentedRule<readonly [], "partialPredicate">;
720
- readonly "no-boolean-selector-parameter": DocumentedRule<readonly [], "booleanSelector">;
721
- readonly "no-invalid-zod-custom-parse": DocumentedRule<[], "incompatibleCustomParse">;
722
- readonly "no-contradictory-overload-return": DocumentedRule<readonly [], "contradictoryReturn">;
723
- readonly "require-button-accessible-name": DocumentedRule<readonly [{
724
- readonly components?: readonly ComponentImport[];
725
- readonly iconModules?: readonly string[];
726
- }?], "missingName">;
727
- readonly "require-camelcase-properties": DocumentedRule<readonly [], "requireCamelcaseProperty">;
728
- readonly "require-svg-accessible-name": DocumentedRule<readonly [], "missingName">;
729
- readonly "prefer-logical-tailwind-utilities": DocumentedRule<readonly [{
730
- readonly enabled?: boolean;
731
- readonly checkInsets?: boolean;
732
- readonly allowUtilities?: readonly string[];
733
- }?], "physicalUtility">;
734
- readonly "no-unlocalized-toast": DocumentedRule<readonly [(LocalizationOptions & {
735
- readonly functions?: readonly ComponentImport[];
736
- readonly methods?: readonly string[];
737
- })?], "unlocalized">;
738
- readonly "no-unlocalized-jsx-attributes": DocumentedRule<readonly [(LocalizationOptions & {
739
- readonly attributes?: readonly string[];
740
- })?], "unlocalized">;
741
- readonly "no-unlocalized-jsx-text": DocumentedRule<readonly [LocalizationOptions?], "unlocalized">;
742
- readonly "excessive-commentary": DocumentedRule<readonly [], "excessive">;
743
- readonly "iac-source-coupled-test": DocumentedRule<readonly [], "rawSourceOracle">;
744
- readonly "duplicate-test-body": DocumentedRule<readonly [], "duplicateTestBody">;
745
- readonly "enforce-file-structure": DocumentedRule<readonly [], "importsFirst" | "useServerDirective">;
746
- readonly "no-client-side-data-fetching": DocumentedRule<readonly [], "noClientFetch">;
747
- readonly "no-comment-cruft": DocumentedRule<readonly [], "commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo">;
748
- readonly "no-cors-wildcard-with-credentials": DocumentedRule<readonly [], "corsWildcardWithCredentials">;
749
- readonly "no-duplicate-lifecycle-refresh-listeners": DocumentedRule<readonly [], "duplicateLifecycleRefresh">;
750
- readonly "no-dangerously-allow-svg": DocumentedRule<readonly [], "noDangerouslyAllowSvg">;
751
- readonly "no-dynamic-sql": DocumentedRule<readonly [RuleOptions?], "dynamicSql" | "dynamicFragment">;
752
- readonly "no-enum": DocumentedRule<readonly [{
753
- ignoreFiles?: readonly string[];
754
- }?], "noEnum">;
755
- readonly "no-excessive-cognitive-complexity": DocumentedRule<[], "excessiveComplexity">;
756
- readonly "no-fat-try-blocks": DocumentedRule<readonly [RuleOptions$1?], "fatTryBlock">;
757
- readonly "no-hand-rolled-sleep": DocumentedRule<readonly [{
758
- allowIn?: readonly string[];
759
- checkClientModules?: boolean;
760
- }?], "handRolledSleep" | "handRolledTimeoutRace">;
761
- readonly "no-hand-rolled-spinner": DocumentedRule<readonly [], "handRolledSpinner">;
762
- readonly "no-insecure-random-id": DocumentedRule<readonly [], "insecureRandomId">;
763
- readonly "no-detached-global-fetch": DocumentedRule<readonly [], "detachedGlobalFetch">;
764
- readonly "no-exception-text-in-5xx-response": DocumentedRule<readonly [], "exceptionText" | "serverActionExceptionText">;
765
- readonly "no-json-stringify-error": DocumentedRule<readonly [], "noJsonStringifyError">;
766
- readonly "no-json-stringify-object-equality": DocumentedRule<readonly [], "serializedObjectEquality">;
767
- readonly "no-impossible-zod-literal-bounds": DocumentedRule<readonly [{
768
- readonly delegateRealContradictions?: boolean;
769
- }?], "impossibleBounds">;
770
- readonly "no-in-operator-on-built-in-collections": DocumentedRule<readonly [], "ambiguousCollectionIn">;
771
- readonly "no-redundant-optional-array-default": DocumentedRule<readonly [], "redundantOptionalArrayDefault">;
772
- readonly "interface-contract-members-private": DocumentedRule<readonly [], "nonContractMemberMustBePrivate">;
773
- readonly "no-log-only-catch": DocumentedRule<readonly [LoggingOptions?], "noLogOnlyCatch" | "emptyCatch">;
774
- readonly "no-bare-return-from-test-catch": DocumentedRule<readonly [], "bareReturnFromTestCatch">;
775
- readonly "no-bespoke-api-case-conversion": DocumentedRule<readonly [], "noBespokeApiCaseConversion">;
776
- readonly "no-long-comment": DocumentedRule<readonly [], "tooLong">;
777
- readonly "no-vague-suppression-description": DocumentedRule<readonly [], "vagueDescription">;
778
- readonly "no-generic-single-export-module": DocumentedRule<[], "genericSingleExport">;
779
- readonly "no-offset-pagination": DocumentedRule<readonly [], "noOffsetPagination">;
780
- readonly "no-positional-tuple-return": DocumentedRule<readonly [], "noPositionalTupleReturn">;
781
- readonly "no-production-browser-source-maps": DocumentedRule<readonly [], "noProductionBrowserSourceMaps">;
782
- readonly "no-raw-env": DocumentedRule<readonly [], "noRawEnv">;
783
- readonly "no-raw-fetch-outside-clients": DocumentedRule<readonly [RuleOptions$2?], "rawFetch">;
784
- readonly "no-restricted-library-load": DocumentedRule<readonly [{
785
- libraries: readonly RestrictedLibrary[];
786
- }], "restrictedLibraryLoad">;
787
- readonly "no-router-refresh-polling": DocumentedRule<readonly [], "routerRefreshPolling">;
788
- readonly "no-repeated-string-literal": DocumentedRule<readonly [], "noRepeatedStringLiteral">;
789
- readonly "no-restated-comment": DocumentedRule<readonly [], "deleteComment" | "restatesLineBelow">;
790
- readonly "no-restated-jsdoc": DocumentedRule<readonly [], "restatesSignature" | "deleteBlock">;
791
- readonly "no-secret-in-log": DocumentedRule<readonly [LoggingOptions?], "noSecretInLog" | "noRawBodyInLog">;
792
- readonly "no-server-env-in-client-component": DocumentedRule<readonly [], "noServerEnvInClientComponent">;
793
- readonly "no-select-star": DocumentedRule<readonly [], "noSelectStar">;
794
- readonly "no-sentinel-return-on-catch": DocumentedRule<readonly [LoggingOptions?], "noSentinelReturn">;
795
- readonly "no-silent-promise-catch": DocumentedRule<readonly [], "silentCatch">;
796
- readonly "no-sleep-in-test-body": DocumentedRule<readonly [], "noSleepInTestBody">;
797
- readonly "no-storage-in-stateless-modules": DocumentedRule<readonly [RuleOptions$3?], "storageInStatelessModule">;
798
- readonly "no-string-concat-in-loop": DocumentedRule<readonly [], "noStringConcatInLoop" | "noStringReduce">;
799
- readonly "no-tautological-expect": DocumentedRule<readonly [], "tautologicalComparison" | "tautologicalMatcher">;
800
- readonly "no-duplicate-test-case": DocumentedRule<readonly [], "duplicateCase">;
801
- readonly "no-typed-doc-sections": DocumentedRule<readonly [], "typedSection">;
802
- readonly "no-trailing-value-narration": DocumentedRule<readonly [], "deleteNarration" | "narratesValue" | "removeNarration">;
803
- readonly "no-declaration-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
804
- readonly "no-union-in-comment": DocumentedRule<readonly [], "unionInComment">;
805
- readonly "no-type-member-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
806
- readonly "no-unnecessary-use-client": DocumentedRule<readonly [], "unnecessaryUseClient">;
807
- readonly "no-unsafe-mock-casting": DocumentedRule<[], "unsafeMockCast">;
808
- readonly "no-unsafe-test-double-cast": DocumentedRule<[], "noUnsafeTestDoubleCast">;
809
- readonly "no-first-party-module-mock": DocumentedRule<readonly [{
810
- additionalModulePrefixes?: readonly string[];
811
- }], "noFirstPartyModuleMock">;
812
- readonly "no-zod-native-enum": DocumentedRule<readonly [], "nativeEnum" | "enumOfTsEnum">;
813
- readonly "require-use-form-default-values": DocumentedRule<readonly [], "requireUseFormDefaultValues">;
814
- readonly "require-use-server-in-actions-file": DocumentedRule<readonly [], "requireUseServerInActionsFile">;
815
- readonly "test-loops-over-literal-cases": DocumentedRule<readonly [], "literalCaseLoop">;
816
- readonly "test-phase-label-comment": DocumentedRule<readonly [], "removeLabel">;
817
- readonly "prefer-constant-time-secret-compare": DocumentedRule<readonly [], "preferConstantTimeSecretCompare">;
818
- readonly "prefer-ecmascript-private-members": DocumentedRule<readonly [], "preferEcmascriptPrivate">;
819
- readonly "prefer-discriminated-union": DocumentedRule<readonly [], "preferDiscriminatedUnion" | "preferProducedVariants">;
820
- readonly "prefer-input-group-search": DocumentedRule<readonly [], "preferInputGroup">;
821
- readonly "prefer-millisecond-control-duration-schema": DocumentedRule<readonly [], "preferMilliseconds">;
822
- readonly "prefer-immutable-module-constant": DocumentedRule<readonly [], "preferAsConst" | "preferReadonlyCollection">;
823
- readonly "prefer-shadcn-primitives": DocumentedRule<readonly [RuleOptions$4?], "preferShadcnPrimitive">;
824
- readonly "prefer-module-level-constant": DocumentedRule<readonly [{
825
- minElements?: number;
826
- checkRegex?: boolean;
827
- ignoreTestFiles?: boolean;
828
- }?], "hoistCollection" | "hoistRegex">;
829
- readonly "prefer-module-level-schema": DocumentedRule<readonly [{
830
- factories?: readonly string[];
831
- ignoreTestFiles?: boolean;
832
- memoCallees?: readonly string[];
833
- minProperties?: number;
834
- }?], "hoistSchema">;
835
- readonly "prefer-module-level-refined-schema": DocumentedRule<[], "hoistRefinedSchema">;
836
- readonly "prefer-multi-value-zod-literal": DocumentedRule<readonly [{
837
- zodMajorVersion?: 4;
838
- }], "useMultiValueLiteral">;
839
- readonly "prefer-named-callback-domain": DocumentedRule<[], "nameCallbackDomain">;
840
- readonly "prefer-nominal-id-types": DocumentedRule<[], "preferNominalIds">;
841
- readonly "prefer-named-complex-return-type": DocumentedRule<[], "nameComplexReturnType">;
842
- readonly "prefer-native-random-uuid": DocumentedRule<readonly [], "preferNative" | "replaceWithNative">;
843
- readonly "prefer-node-crypto-hash": DocumentedRule<readonly [], "preferNodeCryptoHash">;
844
- readonly "prefer-node-fs-promises": DocumentedRule<[], "preferAsyncFs">;
845
- readonly "prefer-non-nullable-collection": DocumentedRule<readonly [], "preferNonNullableCollection">;
846
- readonly "prefer-nullish-filter-predicate": DocumentedRule<readonly [], "preferNullishPredicate" | "replaceBoolean">;
847
- readonly "prefer-await-in-async-return": DocumentedRule<readonly [{
848
- readonly scope: "async-return" | "all-promise-calls";
849
- }], "preferAwait" | "preferAwaitCall">;
850
- readonly "prefer-schema-for-api-payload": DocumentedRule<readonly [], "unparsedJsonAccess">;
851
- readonly "prefer-shared-zod-enum": DocumentedRule<[], "shareEnumDomain">;
852
- readonly "prefer-switch-for-repeated-equality": DocumentedRule<[], "preferSwitch">;
853
- readonly "prefer-semantic-colors": DocumentedRule<readonly [{
854
- opaqueForegroundPairs?: boolean;
855
- requireSemanticTokens?: boolean;
856
- }?], "rawPalette" | "arbitraryColor" | "inlineColor" | "opaqueForegroundPair">;
857
- readonly "prefer-server-actions": DocumentedRule<readonly [RuleOptions$5?], "preferServerAction">;
858
- readonly "prefer-whole-object-assertion": DocumentedRule<readonly [], "combineAssertions" | "assertArrayOnce">;
859
- readonly "repeated-static-call-cases": DocumentedRule<readonly [], "repeatedStaticCallCases">;
860
- readonly "prefer-zod-infer": DocumentedRule<readonly [{
861
- ignoreTypeNames?: readonly string[];
862
- requireIdenticalShape?: boolean;
863
- }?], "handWrittenTwin" | "repeatedEnumUnion">;
864
- readonly "named-child-schema-type": DocumentedRule<readonly [], "namedChildType">;
865
- readonly "prefer-zod-parse-output-type": DocumentedRule<readonly [], "handWrittenParsedOutput">;
866
- readonly "require-assert-never": DocumentedRule<readonly [], "missingAssertNever">;
867
- readonly "require-fetch-timeout": DocumentedRule<readonly [{
868
- allowIn?: readonly string[];
869
- }?], "missingSignal">;
870
- readonly "require-interface-for-exported-class": DocumentedRule<[], "requireContract">;
871
- readonly "require-port-for-service": DocumentedRule<readonly [], "requireInterface">;
872
- readonly "require-sql-access-class": DocumentedRule<[], "moveSqlIntoClass">;
873
- readonly "require-static-next-matcher": DocumentedRule<readonly [], "dynamicMatcher">;
874
- readonly "require-zod-form-validation": DocumentedRule<readonly [], "missingZodValidation">;
875
- readonly "store-insert-requires-on-conflict": DocumentedRule<readonly [], "storeInsertRequiresOnConflict">;
876
- readonly stepdown: DocumentedRule<[{
877
- readonly privateBandOnly?: boolean;
878
- }], "helperAboveOnlyCaller">;
879
- readonly "source-coupled-test": DocumentedRule<readonly [], "rawSourceOracle">;
880
- readonly "sole-export-matches-filename": DocumentedRule<[], "matchSoleExport">;
881
- readonly "require-pascal-case-zod-schema-name": DocumentedRule<readonly [], "requirePascalSchema">;
882
- };
883
- readonly retiredRules: Readonly<Record<string, RetiredRule>>;
697
+ interface PluginDefinition {
698
+ readonly meta: typeof meta;
699
+ readonly rules: typeof RULES;
700
+ readonly retiredRules: typeof RETIRED_RULES;
701
+ /** TSESLint.ESLint accepts these typed callbacks while running the native ESLint engine. */
884
702
  readonly configs: {
885
- readonly recommended: FlatPreset<typeof RECOMMENDED_RULES>;
886
- readonly strict: FlatPreset<typeof STRICT_RULES>;
703
+ readonly recommended: FlatPreset<typeof FLAT_RECOMMENDED_RULES>;
704
+ readonly strict: FlatPreset<typeof FLAT_STRICT_RULES>;
887
705
  };
888
- };
706
+ }
707
+ declare const PLUGIN: PluginDefinition;
889
708
 
890
709
  export { ADVISORY_RULES, APPLICATION_ONLY_RULES, DocumentedRule, RECOMMENDED_RULES, RENAMED_RULES, RETIRED_RULES, RULES, STRICT_RULES, ADVISORY_RULES as advisoryRules, APPLICATION_ONLY_RULES as applicationOnlyRules, PLUGIN as default, RECOMMENDED_RULES as recommendedRules, RENAMED_RULES as renamedRules, RETIRED_RULES as retiredRules, RULES as rules, STRICT_RULES as strictRules };
891
710
  export type { RetiredRule };