eslint-plugin-typefest 1.0.1
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/CHANGELOG.md +1814 -0
- package/LICENSE +21 -0
- package/README.md +282 -0
- package/dist/_internal/array-like-expression.d.ts +67 -0
- package/dist/_internal/array-like-expression.d.ts.map +1 -0
- package/dist/_internal/array-like-expression.js +179 -0
- package/dist/_internal/array-like-expression.js.map +1 -0
- package/dist/_internal/array-method-call-rule.d.ts +34 -0
- package/dist/_internal/array-method-call-rule.d.ts.map +1 -0
- package/dist/_internal/array-method-call-rule.js +49 -0
- package/dist/_internal/array-method-call-rule.js.map +1 -0
- package/dist/_internal/ast-node.d.ts +23 -0
- package/dist/_internal/ast-node.d.ts.map +1 -0
- package/dist/_internal/ast-node.js +38 -0
- package/dist/_internal/ast-node.js.map +1 -0
- package/dist/_internal/bounded-cache.d.ts +42 -0
- package/dist/_internal/bounded-cache.d.ts.map +1 -0
- package/dist/_internal/bounded-cache.js +57 -0
- package/dist/_internal/bounded-cache.js.map +1 -0
- package/dist/_internal/constrained-type-at-location.d.ts +31 -0
- package/dist/_internal/constrained-type-at-location.d.ts.map +1 -0
- package/dist/_internal/constrained-type-at-location.js +61 -0
- package/dist/_internal/constrained-type-at-location.js.map +1 -0
- package/dist/_internal/cycle-safe-linked-search.d.ts +48 -0
- package/dist/_internal/cycle-safe-linked-search.d.ts.map +1 -0
- package/dist/_internal/cycle-safe-linked-search.js +70 -0
- package/dist/_internal/cycle-safe-linked-search.js.map +1 -0
- package/dist/_internal/expression-boolean-memoizer.d.ts +17 -0
- package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -0
- package/dist/_internal/expression-boolean-memoizer.js +23 -0
- package/dist/_internal/expression-boolean-memoizer.js.map +1 -0
- package/dist/_internal/filter-callback.d.ts +56 -0
- package/dist/_internal/filter-callback.d.ts.map +1 -0
- package/dist/_internal/filter-callback.js +100 -0
- package/dist/_internal/filter-callback.js.map +1 -0
- package/dist/_internal/global-identifier-member-call.d.ts +23 -0
- package/dist/_internal/global-identifier-member-call.d.ts.map +1 -0
- package/dist/_internal/global-identifier-member-call.js +25 -0
- package/dist/_internal/global-identifier-member-call.js.map +1 -0
- package/dist/_internal/global-member-call-rule.d.ts +36 -0
- package/dist/_internal/global-member-call-rule.d.ts.map +1 -0
- package/dist/_internal/global-member-call-rule.js +52 -0
- package/dist/_internal/global-member-call-rule.js.map +1 -0
- package/dist/_internal/import-analysis.d.ts +45 -0
- package/dist/_internal/import-analysis.d.ts.map +1 -0
- package/dist/_internal/import-analysis.js +113 -0
- package/dist/_internal/import-analysis.js.map +1 -0
- package/dist/_internal/import-aware-fixes.d.ts +31 -0
- package/dist/_internal/import-aware-fixes.d.ts.map +1 -0
- package/dist/_internal/import-aware-fixes.js +38 -0
- package/dist/_internal/import-aware-fixes.js.map +1 -0
- package/dist/_internal/import-fix-coordinator.d.ts +43 -0
- package/dist/_internal/import-fix-coordinator.d.ts.map +1 -0
- package/dist/_internal/import-fix-coordinator.js +71 -0
- package/dist/_internal/import-fix-coordinator.js.map +1 -0
- package/dist/_internal/import-insertion.d.ts +27 -0
- package/dist/_internal/import-insertion.d.ts.map +1 -0
- package/dist/_internal/import-insertion.js +295 -0
- package/dist/_internal/import-insertion.js.map +1 -0
- package/dist/_internal/imported-type-aliases.d.ts +140 -0
- package/dist/_internal/imported-type-aliases.d.ts.map +1 -0
- package/dist/_internal/imported-type-aliases.js +316 -0
- package/dist/_internal/imported-type-aliases.js.map +1 -0
- package/dist/_internal/imported-value-symbols.d.ts +157 -0
- package/dist/_internal/imported-value-symbols.d.ts.map +1 -0
- package/dist/_internal/imported-value-symbols.js +478 -0
- package/dist/_internal/imported-value-symbols.js.map +1 -0
- package/dist/_internal/member-call.d.ts +53 -0
- package/dist/_internal/member-call.d.ts.map +1 -0
- package/dist/_internal/member-call.js +48 -0
- package/dist/_internal/member-call.js.map +1 -0
- package/dist/_internal/module-source.d.ts +11 -0
- package/dist/_internal/module-source.d.ts.map +1 -0
- package/dist/_internal/module-source.js +11 -0
- package/dist/_internal/module-source.js.map +1 -0
- package/dist/_internal/normalize-expression-text.d.ts +26 -0
- package/dist/_internal/normalize-expression-text.d.ts.map +1 -0
- package/dist/_internal/normalize-expression-text.js +182 -0
- package/dist/_internal/normalize-expression-text.js.map +1 -0
- package/dist/_internal/nullish-comparison.d.ts +43 -0
- package/dist/_internal/nullish-comparison.d.ts.map +1 -0
- package/dist/_internal/nullish-comparison.js +147 -0
- package/dist/_internal/nullish-comparison.js.map +1 -0
- package/dist/_internal/plugin-settings.d.ts +32 -0
- package/dist/_internal/plugin-settings.d.ts.map +1 -0
- package/dist/_internal/plugin-settings.js +118 -0
- package/dist/_internal/plugin-settings.js.map +1 -0
- package/dist/_internal/report-adapter.d.ts +25 -0
- package/dist/_internal/report-adapter.d.ts.map +1 -0
- package/dist/_internal/report-adapter.js +36 -0
- package/dist/_internal/report-adapter.js.map +1 -0
- package/dist/_internal/rule-catalog.d.ts +51 -0
- package/dist/_internal/rule-catalog.d.ts.map +1 -0
- package/dist/_internal/rule-catalog.js +162 -0
- package/dist/_internal/rule-catalog.js.map +1 -0
- package/dist/_internal/rule-docs-metadata.d.ts +37 -0
- package/dist/_internal/rule-docs-metadata.d.ts.map +1 -0
- package/dist/_internal/rule-docs-metadata.js +192 -0
- package/dist/_internal/rule-docs-metadata.js.map +1 -0
- package/dist/_internal/rule-docs-url.d.ts +15 -0
- package/dist/_internal/rule-docs-url.d.ts.map +1 -0
- package/dist/_internal/rule-docs-url.js +15 -0
- package/dist/_internal/rule-docs-url.js.map +1 -0
- package/dist/_internal/rule-reporting.d.ts +71 -0
- package/dist/_internal/rule-reporting.d.ts.map +1 -0
- package/dist/_internal/rule-reporting.js +89 -0
- package/dist/_internal/rule-reporting.js.map +1 -0
- package/dist/_internal/rules-registry.d.ts +14 -0
- package/dist/_internal/rules-registry.d.ts.map +1 -0
- package/dist/_internal/rules-registry.js +165 -0
- package/dist/_internal/rules-registry.js.map +1 -0
- package/dist/_internal/safe-type-operation.d.ts +89 -0
- package/dist/_internal/safe-type-operation.d.ts.map +1 -0
- package/dist/_internal/safe-type-operation.js +147 -0
- package/dist/_internal/safe-type-operation.js.map +1 -0
- package/dist/_internal/scope-resolution.d.ts +20 -0
- package/dist/_internal/scope-resolution.d.ts.map +1 -0
- package/dist/_internal/scope-resolution.js +21 -0
- package/dist/_internal/scope-resolution.js.map +1 -0
- package/dist/_internal/scope-variable.d.ts +17 -0
- package/dist/_internal/scope-variable.d.ts.map +1 -0
- package/dist/_internal/scope-variable.js +30 -0
- package/dist/_internal/scope-variable.js.map +1 -0
- package/dist/_internal/set-membership.d.ts +6 -0
- package/dist/_internal/set-membership.d.ts.map +1 -0
- package/dist/_internal/set-membership.js +11 -0
- package/dist/_internal/set-membership.js.map +1 -0
- package/dist/_internal/text-character.d.ts +18 -0
- package/dist/_internal/text-character.d.ts.map +1 -0
- package/dist/_internal/text-character.js +69 -0
- package/dist/_internal/text-character.js.map +1 -0
- package/dist/_internal/throw-consequent.d.ts +22 -0
- package/dist/_internal/throw-consequent.d.ts.map +1 -0
- package/dist/_internal/throw-consequent.js +48 -0
- package/dist/_internal/throw-consequent.js.map +1 -0
- package/dist/_internal/throw-type-error.d.ts +19 -0
- package/dist/_internal/throw-type-error.d.ts.map +1 -0
- package/dist/_internal/throw-type-error.js +24 -0
- package/dist/_internal/throw-type-error.js.map +1 -0
- package/dist/_internal/type-checker-compat.d.ts +80 -0
- package/dist/_internal/type-checker-compat.d.ts.map +1 -0
- package/dist/_internal/type-checker-compat.js +104 -0
- package/dist/_internal/type-checker-compat.js.map +1 -0
- package/dist/_internal/type-predicate-autofix-safety.d.ts +20 -0
- package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -0
- package/dist/_internal/type-predicate-autofix-safety.js +58 -0
- package/dist/_internal/type-predicate-autofix-safety.js.map +1 -0
- package/dist/_internal/type-reference-node.d.ts +19 -0
- package/dist/_internal/type-reference-node.d.ts.map +1 -0
- package/dist/_internal/type-reference-node.js +14 -0
- package/dist/_internal/type-reference-node.js.map +1 -0
- package/dist/_internal/typed-member-call-rule.d.ts +35 -0
- package/dist/_internal/typed-member-call-rule.d.ts.map +1 -0
- package/dist/_internal/typed-member-call-rule.js +50 -0
- package/dist/_internal/typed-member-call-rule.js.map +1 -0
- package/dist/_internal/typed-path-telemetry.d.ts +58 -0
- package/dist/_internal/typed-path-telemetry.d.ts.map +1 -0
- package/dist/_internal/typed-path-telemetry.js +114 -0
- package/dist/_internal/typed-path-telemetry.js.map +1 -0
- package/dist/_internal/typed-rule.d.ts +142 -0
- package/dist/_internal/typed-rule.d.ts.map +1 -0
- package/dist/_internal/typed-rule.js +197 -0
- package/dist/_internal/typed-rule.js.map +1 -0
- package/dist/_internal/typefest-config-references.d.ts +45 -0
- package/dist/_internal/typefest-config-references.d.ts.map +1 -0
- package/dist/_internal/typefest-config-references.js +98 -0
- package/dist/_internal/typefest-config-references.js.map +1 -0
- package/dist/_internal/typescript-eslint-node-autofix.d.ts +32 -0
- package/dist/_internal/typescript-eslint-node-autofix.d.ts.map +1 -0
- package/dist/_internal/typescript-eslint-node-autofix.js +495 -0
- package/dist/_internal/typescript-eslint-node-autofix.js.map +1 -0
- package/dist/_internal/value-rewrite-autofix-safety.d.ts +33 -0
- package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -0
- package/dist/_internal/value-rewrite-autofix-safety.js +103 -0
- package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -0
- package/dist/plugin.cjs +9718 -0
- package/dist/plugin.cjs.map +7 -0
- package/dist/plugin.d.cts +76 -0
- package/dist/plugin.d.ts +76 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +206 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-at.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-at.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-at.js +66 -0
- package/dist/rules/prefer-ts-extras-array-at.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-concat.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-concat.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-concat.js +66 -0
- package/dist/rules/prefer-ts-extras-array-concat.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find-last-index.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-find-last-index.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find-last-index.js +63 -0
- package/dist/rules/prefer-ts-extras-array-find-last-index.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find-last.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-find-last.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find-last.js +66 -0
- package/dist/rules/prefer-ts-extras-array-find-last.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-find.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-find.js +63 -0
- package/dist/rules/prefer-ts-extras-array-find.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-first.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-first.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-first.js +107 -0
- package/dist/rules/prefer-ts-extras-array-first.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-includes.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-includes.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-includes.js +89 -0
- package/dist/rules/prefer-ts-extras-array-includes.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-join.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-array-join.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-join.js +66 -0
- package/dist/rules/prefer-ts-extras-array-join.js.map +1 -0
- package/dist/rules/prefer-ts-extras-array-last.d.ts +8 -0
- package/dist/rules/prefer-ts-extras-array-last.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-array-last.js +132 -0
- package/dist/rules/prefer-ts-extras-array-last.js.map +1 -0
- package/dist/rules/prefer-ts-extras-as-writable.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-as-writable.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-as-writable.js +110 -0
- package/dist/rules/prefer-ts-extras-as-writable.js.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-defined.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-assert-defined.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-defined.js +182 -0
- package/dist/rules/prefer-ts-extras-assert-defined.js.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-error.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-assert-error.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-error.js +152 -0
- package/dist/rules/prefer-ts-extras-assert-error.js.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-present.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-assert-present.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-assert-present.js +266 -0
- package/dist/rules/prefer-ts-extras-assert-present.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-defined-filter.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-defined-filter.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-defined-filter.js +90 -0
- package/dist/rules/prefer-ts-extras-is-defined-filter.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-defined.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-defined.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-defined.js +179 -0
- package/dist/rules/prefer-ts-extras-is-defined.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-empty.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-empty.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-empty.js +116 -0
- package/dist/rules/prefer-ts-extras-is-empty.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-equal-type.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-equal-type.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-equal-type.js +138 -0
- package/dist/rules/prefer-ts-extras-is-equal-type.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-finite.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-finite.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-finite.js +61 -0
- package/dist/rules/prefer-ts-extras-is-finite.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-infinite.d.ts +8 -0
- package/dist/rules/prefer-ts-extras-is-infinite.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-infinite.js +178 -0
- package/dist/rules/prefer-ts-extras-is-infinite.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-integer.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-integer.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-integer.js +61 -0
- package/dist/rules/prefer-ts-extras-is-integer.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-present-filter.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-present-filter.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-present-filter.js +216 -0
- package/dist/rules/prefer-ts-extras-is-present-filter.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-present.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-present.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-present.js +217 -0
- package/dist/rules/prefer-ts-extras-is-present.js.map +1 -0
- package/dist/rules/prefer-ts-extras-is-safe-integer.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-is-safe-integer.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-is-safe-integer.js +61 -0
- package/dist/rules/prefer-ts-extras-is-safe-integer.js.map +1 -0
- package/dist/rules/prefer-ts-extras-key-in.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-key-in.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-key-in.js +124 -0
- package/dist/rules/prefer-ts-extras-key-in.js.map +1 -0
- package/dist/rules/prefer-ts-extras-not.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-not.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-not.js +136 -0
- package/dist/rules/prefer-ts-extras-not.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-entries.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-entries.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-entries.js +59 -0
- package/dist/rules/prefer-ts-extras-object-entries.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-from-entries.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-from-entries.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-from-entries.js +59 -0
- package/dist/rules/prefer-ts-extras-object-from-entries.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-has-in.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-has-in.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-has-in.js +79 -0
- package/dist/rules/prefer-ts-extras-object-has-in.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-has-own.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-has-own.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-has-own.js +82 -0
- package/dist/rules/prefer-ts-extras-object-has-own.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-keys.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-keys.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-keys.js +59 -0
- package/dist/rules/prefer-ts-extras-object-keys.js.map +1 -0
- package/dist/rules/prefer-ts-extras-object-values.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-object-values.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-object-values.js +59 -0
- package/dist/rules/prefer-ts-extras-object-values.js.map +1 -0
- package/dist/rules/prefer-ts-extras-safe-cast-to.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-safe-cast-to.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-safe-cast-to.js +159 -0
- package/dist/rules/prefer-ts-extras-safe-cast-to.js.map +1 -0
- package/dist/rules/prefer-ts-extras-set-has.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-set-has.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-set-has.js +304 -0
- package/dist/rules/prefer-ts-extras-set-has.js.map +1 -0
- package/dist/rules/prefer-ts-extras-string-split.d.ts +13 -0
- package/dist/rules/prefer-ts-extras-string-split.d.ts.map +1 -0
- package/dist/rules/prefer-ts-extras-string-split.js +166 -0
- package/dist/rules/prefer-ts-extras-string-split.js.map +1 -0
- package/dist/rules/prefer-type-fest-abstract-constructor.d.ts +13 -0
- package/dist/rules/prefer-type-fest-abstract-constructor.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-abstract-constructor.js +65 -0
- package/dist/rules/prefer-type-fest-abstract-constructor.js.map +1 -0
- package/dist/rules/prefer-type-fest-arrayable.d.ts +13 -0
- package/dist/rules/prefer-type-fest-arrayable.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-arrayable.js +123 -0
- package/dist/rules/prefer-type-fest-arrayable.js.map +1 -0
- package/dist/rules/prefer-type-fest-async-return-type.d.ts +13 -0
- package/dist/rules/prefer-type-fest-async-return-type.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-async-return-type.js +92 -0
- package/dist/rules/prefer-type-fest-async-return-type.js.map +1 -0
- package/dist/rules/prefer-type-fest-conditional-pick.d.ts +13 -0
- package/dist/rules/prefer-type-fest-conditional-pick.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-conditional-pick.js +74 -0
- package/dist/rules/prefer-type-fest-conditional-pick.js.map +1 -0
- package/dist/rules/prefer-type-fest-constructor.d.ts +13 -0
- package/dist/rules/prefer-type-fest-constructor.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-constructor.js +67 -0
- package/dist/rules/prefer-type-fest-constructor.js.map +1 -0
- package/dist/rules/prefer-type-fest-except.d.ts +13 -0
- package/dist/rules/prefer-type-fest-except.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-except.js +105 -0
- package/dist/rules/prefer-type-fest-except.js.map +1 -0
- package/dist/rules/prefer-type-fest-if.d.ts +13 -0
- package/dist/rules/prefer-type-fest-if.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-if.js +79 -0
- package/dist/rules/prefer-type-fest-if.js.map +1 -0
- package/dist/rules/prefer-type-fest-iterable-element.d.ts +13 -0
- package/dist/rules/prefer-type-fest-iterable-element.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-iterable-element.js +76 -0
- package/dist/rules/prefer-type-fest-iterable-element.js.map +1 -0
- package/dist/rules/prefer-type-fest-json-array.d.ts +13 -0
- package/dist/rules/prefer-type-fest-json-array.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-json-array.js +164 -0
- package/dist/rules/prefer-type-fest-json-array.js.map +1 -0
- package/dist/rules/prefer-type-fest-json-object.d.ts +13 -0
- package/dist/rules/prefer-type-fest-json-object.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-json-object.js +102 -0
- package/dist/rules/prefer-type-fest-json-object.js.map +1 -0
- package/dist/rules/prefer-type-fest-json-primitive.d.ts +13 -0
- package/dist/rules/prefer-type-fest-json-primitive.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-json-primitive.js +112 -0
- package/dist/rules/prefer-type-fest-json-primitive.js.map +1 -0
- package/dist/rules/prefer-type-fest-json-value.d.ts +13 -0
- package/dist/rules/prefer-type-fest-json-value.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-json-value.js +109 -0
- package/dist/rules/prefer-type-fest-json-value.js.map +1 -0
- package/dist/rules/prefer-type-fest-keys-of-union.d.ts +13 -0
- package/dist/rules/prefer-type-fest-keys-of-union.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-keys-of-union.js +74 -0
- package/dist/rules/prefer-type-fest-keys-of-union.js.map +1 -0
- package/dist/rules/prefer-type-fest-literal-union.d.ts +13 -0
- package/dist/rules/prefer-type-fest-literal-union.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-literal-union.js +181 -0
- package/dist/rules/prefer-type-fest-literal-union.js.map +1 -0
- package/dist/rules/prefer-type-fest-merge-exclusive.d.ts +13 -0
- package/dist/rules/prefer-type-fest-merge-exclusive.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-merge-exclusive.js +63 -0
- package/dist/rules/prefer-type-fest-merge-exclusive.js.map +1 -0
- package/dist/rules/prefer-type-fest-non-empty-tuple.d.ts +13 -0
- package/dist/rules/prefer-type-fest-non-empty-tuple.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-non-empty-tuple.js +133 -0
- package/dist/rules/prefer-type-fest-non-empty-tuple.js.map +1 -0
- package/dist/rules/prefer-type-fest-omit-index-signature.d.ts +13 -0
- package/dist/rules/prefer-type-fest-omit-index-signature.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-omit-index-signature.js +74 -0
- package/dist/rules/prefer-type-fest-omit-index-signature.js.map +1 -0
- package/dist/rules/prefer-type-fest-partial-deep.d.ts +13 -0
- package/dist/rules/prefer-type-fest-partial-deep.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-partial-deep.js +63 -0
- package/dist/rules/prefer-type-fest-partial-deep.js.map +1 -0
- package/dist/rules/prefer-type-fest-primitive.d.ts +13 -0
- package/dist/rules/prefer-type-fest-primitive.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-primitive.js +102 -0
- package/dist/rules/prefer-type-fest-primitive.js.map +1 -0
- package/dist/rules/prefer-type-fest-promisable.d.ts +13 -0
- package/dist/rules/prefer-type-fest-promisable.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-promisable.js +167 -0
- package/dist/rules/prefer-type-fest-promisable.js.map +1 -0
- package/dist/rules/prefer-type-fest-readonly-deep.d.ts +13 -0
- package/dist/rules/prefer-type-fest-readonly-deep.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-readonly-deep.js +63 -0
- package/dist/rules/prefer-type-fest-readonly-deep.js.map +1 -0
- package/dist/rules/prefer-type-fest-require-all-or-none.d.ts +13 -0
- package/dist/rules/prefer-type-fest-require-all-or-none.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-require-all-or-none.js +75 -0
- package/dist/rules/prefer-type-fest-require-all-or-none.js.map +1 -0
- package/dist/rules/prefer-type-fest-require-at-least-one.d.ts +13 -0
- package/dist/rules/prefer-type-fest-require-at-least-one.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-require-at-least-one.js +74 -0
- package/dist/rules/prefer-type-fest-require-at-least-one.js.map +1 -0
- package/dist/rules/prefer-type-fest-require-exactly-one.d.ts +13 -0
- package/dist/rules/prefer-type-fest-require-exactly-one.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-require-exactly-one.js +102 -0
- package/dist/rules/prefer-type-fest-require-exactly-one.js.map +1 -0
- package/dist/rules/prefer-type-fest-require-one-or-none.d.ts +13 -0
- package/dist/rules/prefer-type-fest-require-one-or-none.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-require-one-or-none.js +74 -0
- package/dist/rules/prefer-type-fest-require-one-or-none.js.map +1 -0
- package/dist/rules/prefer-type-fest-required-deep.d.ts +13 -0
- package/dist/rules/prefer-type-fest-required-deep.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-required-deep.js +63 -0
- package/dist/rules/prefer-type-fest-required-deep.js.map +1 -0
- package/dist/rules/prefer-type-fest-schema.d.ts +13 -0
- package/dist/rules/prefer-type-fest-schema.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-schema.js +74 -0
- package/dist/rules/prefer-type-fest-schema.js.map +1 -0
- package/dist/rules/prefer-type-fest-set-non-nullable.d.ts +13 -0
- package/dist/rules/prefer-type-fest-set-non-nullable.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-set-non-nullable.js +74 -0
- package/dist/rules/prefer-type-fest-set-non-nullable.js.map +1 -0
- package/dist/rules/prefer-type-fest-set-optional.d.ts +13 -0
- package/dist/rules/prefer-type-fest-set-optional.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-set-optional.js +74 -0
- package/dist/rules/prefer-type-fest-set-optional.js.map +1 -0
- package/dist/rules/prefer-type-fest-set-readonly.d.ts +13 -0
- package/dist/rules/prefer-type-fest-set-readonly.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-set-readonly.js +74 -0
- package/dist/rules/prefer-type-fest-set-readonly.js.map +1 -0
- package/dist/rules/prefer-type-fest-set-required.d.ts +13 -0
- package/dist/rules/prefer-type-fest-set-required.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-set-required.js +74 -0
- package/dist/rules/prefer-type-fest-set-required.js.map +1 -0
- package/dist/rules/prefer-type-fest-simplify.d.ts +13 -0
- package/dist/rules/prefer-type-fest-simplify.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-simplify.js +75 -0
- package/dist/rules/prefer-type-fest-simplify.js.map +1 -0
- package/dist/rules/prefer-type-fest-tagged-brands.d.ts +13 -0
- package/dist/rules/prefer-type-fest-tagged-brands.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-tagged-brands.js +174 -0
- package/dist/rules/prefer-type-fest-tagged-brands.js.map +1 -0
- package/dist/rules/prefer-type-fest-tuple-of.d.ts +14 -0
- package/dist/rules/prefer-type-fest-tuple-of.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-tuple-of.js +132 -0
- package/dist/rules/prefer-type-fest-tuple-of.js.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-array.d.ts +13 -0
- package/dist/rules/prefer-type-fest-unknown-array.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-array.js +111 -0
- package/dist/rules/prefer-type-fest-unknown-array.js.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-map.d.ts +13 -0
- package/dist/rules/prefer-type-fest-unknown-map.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-map.js +82 -0
- package/dist/rules/prefer-type-fest-unknown-map.js.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-record.d.ts +13 -0
- package/dist/rules/prefer-type-fest-unknown-record.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-record.js +77 -0
- package/dist/rules/prefer-type-fest-unknown-record.js.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-set.d.ts +13 -0
- package/dist/rules/prefer-type-fest-unknown-set.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-unknown-set.js +81 -0
- package/dist/rules/prefer-type-fest-unknown-set.js.map +1 -0
- package/dist/rules/prefer-type-fest-unwrap-tagged.d.ts +13 -0
- package/dist/rules/prefer-type-fest-unwrap-tagged.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-unwrap-tagged.js +74 -0
- package/dist/rules/prefer-type-fest-unwrap-tagged.js.map +1 -0
- package/dist/rules/prefer-type-fest-value-of.d.ts +13 -0
- package/dist/rules/prefer-type-fest-value-of.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-value-of.js +74 -0
- package/dist/rules/prefer-type-fest-value-of.js.map +1 -0
- package/dist/rules/prefer-type-fest-writable-deep.d.ts +13 -0
- package/dist/rules/prefer-type-fest-writable-deep.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-writable-deep.js +64 -0
- package/dist/rules/prefer-type-fest-writable-deep.js.map +1 -0
- package/dist/rules/prefer-type-fest-writable.d.ts +13 -0
- package/dist/rules/prefer-type-fest-writable.d.ts.map +1 -0
- package/dist/rules/prefer-type-fest-writable.js +129 -0
- package/dist/rules/prefer-type-fest-writable.js.map +1 -0
- package/docs/rules/getting-started.md +74 -0
- package/docs/rules/guides/adoption-checklist.md +37 -0
- package/docs/rules/guides/preset-selection-strategy.md +87 -0
- package/docs/rules/guides/rollout-and-fix-safety.md +42 -0
- package/docs/rules/guides/snapshot-testing.md +121 -0
- package/docs/rules/guides/type-aware-linting-readiness.md +105 -0
- package/docs/rules/overview.md +49 -0
- package/docs/rules/prefer-ts-extras-array-at.md +132 -0
- package/docs/rules/prefer-ts-extras-array-concat.md +138 -0
- package/docs/rules/prefer-ts-extras-array-find-last-index.md +108 -0
- package/docs/rules/prefer-ts-extras-array-find-last.md +108 -0
- package/docs/rules/prefer-ts-extras-array-find.md +108 -0
- package/docs/rules/prefer-ts-extras-array-first.md +132 -0
- package/docs/rules/prefer-ts-extras-array-includes.md +135 -0
- package/docs/rules/prefer-ts-extras-array-join.md +132 -0
- package/docs/rules/prefer-ts-extras-array-last.md +132 -0
- package/docs/rules/prefer-ts-extras-as-writable.md +124 -0
- package/docs/rules/prefer-ts-extras-assert-defined.md +140 -0
- package/docs/rules/prefer-ts-extras-assert-error.md +147 -0
- package/docs/rules/prefer-ts-extras-assert-present.md +139 -0
- package/docs/rules/prefer-ts-extras-is-defined-filter.md +125 -0
- package/docs/rules/prefer-ts-extras-is-defined.md +147 -0
- package/docs/rules/prefer-ts-extras-is-empty.md +142 -0
- package/docs/rules/prefer-ts-extras-is-equal-type.md +144 -0
- package/docs/rules/prefer-ts-extras-is-finite.md +116 -0
- package/docs/rules/prefer-ts-extras-is-infinite.md +134 -0
- package/docs/rules/prefer-ts-extras-is-integer.md +116 -0
- package/docs/rules/prefer-ts-extras-is-present-filter.md +125 -0
- package/docs/rules/prefer-ts-extras-is-present.md +143 -0
- package/docs/rules/prefer-ts-extras-is-safe-integer.md +116 -0
- package/docs/rules/prefer-ts-extras-key-in.md +150 -0
- package/docs/rules/prefer-ts-extras-not.md +138 -0
- package/docs/rules/prefer-ts-extras-object-entries.md +130 -0
- package/docs/rules/prefer-ts-extras-object-from-entries.md +131 -0
- package/docs/rules/prefer-ts-extras-object-has-in.md +141 -0
- package/docs/rules/prefer-ts-extras-object-has-own.md +137 -0
- package/docs/rules/prefer-ts-extras-object-keys.md +127 -0
- package/docs/rules/prefer-ts-extras-object-values.md +128 -0
- package/docs/rules/prefer-ts-extras-safe-cast-to.md +130 -0
- package/docs/rules/prefer-ts-extras-set-has.md +203 -0
- package/docs/rules/prefer-ts-extras-string-split.md +133 -0
- package/docs/rules/prefer-type-fest-abstract-constructor.md +87 -0
- package/docs/rules/prefer-type-fest-arrayable.md +127 -0
- package/docs/rules/prefer-type-fest-async-return-type.md +117 -0
- package/docs/rules/prefer-type-fest-conditional-pick.md +140 -0
- package/docs/rules/prefer-type-fest-constructor.md +87 -0
- package/docs/rules/prefer-type-fest-except.md +231 -0
- package/docs/rules/prefer-type-fest-if.md +217 -0
- package/docs/rules/prefer-type-fest-iterable-element.md +170 -0
- package/docs/rules/prefer-type-fest-json-array.md +107 -0
- package/docs/rules/prefer-type-fest-json-object.md +107 -0
- package/docs/rules/prefer-type-fest-json-primitive.md +105 -0
- package/docs/rules/prefer-type-fest-json-value.md +107 -0
- package/docs/rules/prefer-type-fest-keys-of-union.md +139 -0
- package/docs/rules/prefer-type-fest-literal-union.md +118 -0
- package/docs/rules/prefer-type-fest-merge-exclusive.md +118 -0
- package/docs/rules/prefer-type-fest-non-empty-tuple.md +115 -0
- package/docs/rules/prefer-type-fest-omit-index-signature.md +196 -0
- package/docs/rules/prefer-type-fest-partial-deep.md +133 -0
- package/docs/rules/prefer-type-fest-primitive.md +106 -0
- package/docs/rules/prefer-type-fest-promisable.md +246 -0
- package/docs/rules/prefer-type-fest-readonly-deep.md +151 -0
- package/docs/rules/prefer-type-fest-require-all-or-none.md +149 -0
- package/docs/rules/prefer-type-fest-require-at-least-one.md +155 -0
- package/docs/rules/prefer-type-fest-require-exactly-one.md +240 -0
- package/docs/rules/prefer-type-fest-require-one-or-none.md +165 -0
- package/docs/rules/prefer-type-fest-required-deep.md +123 -0
- package/docs/rules/prefer-type-fest-schema.md +161 -0
- package/docs/rules/prefer-type-fest-set-non-nullable.md +145 -0
- package/docs/rules/prefer-type-fest-set-optional.md +133 -0
- package/docs/rules/prefer-type-fest-set-readonly.md +136 -0
- package/docs/rules/prefer-type-fest-set-required.md +140 -0
- package/docs/rules/prefer-type-fest-simplify.md +168 -0
- package/docs/rules/prefer-type-fest-tagged-brands.md +278 -0
- package/docs/rules/prefer-type-fest-tuple-of.md +250 -0
- package/docs/rules/prefer-type-fest-unknown-array.md +126 -0
- package/docs/rules/prefer-type-fest-unknown-map.md +123 -0
- package/docs/rules/prefer-type-fest-unknown-record.md +130 -0
- package/docs/rules/prefer-type-fest-unknown-set.md +123 -0
- package/docs/rules/prefer-type-fest-unwrap-tagged.md +133 -0
- package/docs/rules/prefer-type-fest-value-of.md +121 -0
- package/docs/rules/prefer-type-fest-writable-deep.md +113 -0
- package/docs/rules/prefer-type-fest-writable.md +139 -0
- package/docs/rules/presets/all.md +102 -0
- package/docs/rules/presets/index.md +124 -0
- package/docs/rules/presets/minimal.md +37 -0
- package/docs/rules/presets/recommended-type-checked.md +37 -0
- package/docs/rules/presets/recommended.md +116 -0
- package/docs/rules/presets/strict.md +98 -0
- package/docs/rules/presets/ts-extras-type-guards.md +45 -0
- package/docs/rules/presets/type-fest-types.md +68 -0
- package/package.json +574 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalog metadata for a single rule.
|
|
3
|
+
*/
|
|
4
|
+
export type TypefestRuleCatalogEntry = Readonly<{
|
|
5
|
+
ruleId: TypefestRuleCatalogId;
|
|
6
|
+
ruleName: TypefestRuleNamePattern;
|
|
7
|
+
ruleNumber: number;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Stable machine-friendly rule id format (for example: `R001`).
|
|
11
|
+
*/
|
|
12
|
+
export type TypefestRuleCatalogId = `R${string}`;
|
|
13
|
+
/** Pattern for unqualified rule names supported by eslint-plugin-typefest. */
|
|
14
|
+
type TypefestRuleNamePattern = `prefer-${string}`;
|
|
15
|
+
/**
|
|
16
|
+
* Canonical catalog metadata entries in stable display/order form.
|
|
17
|
+
*/
|
|
18
|
+
export declare const typefestRuleCatalogEntries: readonly TypefestRuleCatalogEntry[];
|
|
19
|
+
/**
|
|
20
|
+
* Fast lookup map for rule catalog metadata by rule name.
|
|
21
|
+
*/
|
|
22
|
+
export declare const typefestRuleCatalogByRuleName: Readonly<Partial<Record<TypefestRuleNamePattern, TypefestRuleCatalogEntry>>>;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve stable catalog metadata for a rule name.
|
|
25
|
+
*
|
|
26
|
+
* @throws When the rule is missing from the catalog.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Resolve stable catalog metadata for a rule name when available.
|
|
30
|
+
*/
|
|
31
|
+
export declare const getRuleCatalogEntryForRuleNameOrNull: (ruleName: string) => null | TypefestRuleCatalogEntry;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve stable catalog metadata for a rule name.
|
|
34
|
+
*
|
|
35
|
+
* @throws When the rule is missing from the catalog.
|
|
36
|
+
*/
|
|
37
|
+
export declare const getRuleCatalogEntryForRuleName: (ruleName: string) => TypefestRuleCatalogEntry;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve stable catalog metadata by rule id.
|
|
40
|
+
*/
|
|
41
|
+
export declare const typefestRuleCatalogByRuleId: ReadonlyMap<TypefestRuleCatalogId, TypefestRuleCatalogEntry>;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve stable catalog metadata for a catalog id.
|
|
44
|
+
*/
|
|
45
|
+
export declare const getRuleCatalogEntryForRuleId: (ruleId: TypefestRuleCatalogId) => TypefestRuleCatalogEntry | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Validate that catalog IDs are unique and sequential.
|
|
48
|
+
*/
|
|
49
|
+
export declare const validateRuleCatalogIntegrity: () => boolean;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=rule-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-catalog.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC5C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAC;AAEjD,8EAA8E;AAC9E,KAAK,uBAAuB,GAAG,UAAU,MAAM,EAAE,CAAC;AA8FlD;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,wBAAwB,EASpE,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAChD,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC,CAGrE,CAAC;AAEF;;;;GAIG;AACH;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,UAAU,MAAM,KACjB,IAAI,GAAG,wBAMT,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACvC,UAAU,MAAM,KACjB,wBAUF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,WAAW,CACjD,qBAAqB,EACrB,wBAAwB,CACiD,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,QAAQ,qBAAqB,KAC9B,wBAAwB,GAAG,SACa,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,OAsB/C,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Stable catalog IDs for all plugin rules.
|
|
4
|
+
*/
|
|
5
|
+
import { objectFromEntries, setHas } from "ts-extras";
|
|
6
|
+
/**
|
|
7
|
+
* Stable global ordering used for rule catalog IDs.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Append new rules to preserve existing IDs.
|
|
11
|
+
*/
|
|
12
|
+
const orderedRuleNames = [
|
|
13
|
+
"prefer-ts-extras-array-at",
|
|
14
|
+
"prefer-ts-extras-array-concat",
|
|
15
|
+
"prefer-ts-extras-array-find",
|
|
16
|
+
"prefer-ts-extras-array-find-last",
|
|
17
|
+
"prefer-ts-extras-array-find-last-index",
|
|
18
|
+
"prefer-ts-extras-array-first",
|
|
19
|
+
"prefer-ts-extras-array-includes",
|
|
20
|
+
"prefer-ts-extras-array-join",
|
|
21
|
+
"prefer-ts-extras-array-last",
|
|
22
|
+
"prefer-ts-extras-as-writable",
|
|
23
|
+
"prefer-ts-extras-assert-defined",
|
|
24
|
+
"prefer-ts-extras-assert-error",
|
|
25
|
+
"prefer-ts-extras-assert-present",
|
|
26
|
+
"prefer-ts-extras-is-defined",
|
|
27
|
+
"prefer-ts-extras-is-defined-filter",
|
|
28
|
+
"prefer-ts-extras-is-empty",
|
|
29
|
+
"prefer-ts-extras-is-equal-type",
|
|
30
|
+
"prefer-ts-extras-is-finite",
|
|
31
|
+
"prefer-ts-extras-is-infinite",
|
|
32
|
+
"prefer-ts-extras-is-integer",
|
|
33
|
+
"prefer-ts-extras-is-present",
|
|
34
|
+
"prefer-ts-extras-is-present-filter",
|
|
35
|
+
"prefer-ts-extras-is-safe-integer",
|
|
36
|
+
"prefer-ts-extras-key-in",
|
|
37
|
+
"prefer-ts-extras-not",
|
|
38
|
+
"prefer-ts-extras-object-entries",
|
|
39
|
+
"prefer-ts-extras-object-from-entries",
|
|
40
|
+
"prefer-ts-extras-object-has-in",
|
|
41
|
+
"prefer-ts-extras-object-has-own",
|
|
42
|
+
"prefer-ts-extras-object-keys",
|
|
43
|
+
"prefer-ts-extras-object-values",
|
|
44
|
+
"prefer-ts-extras-safe-cast-to",
|
|
45
|
+
"prefer-ts-extras-set-has",
|
|
46
|
+
"prefer-ts-extras-string-split",
|
|
47
|
+
"prefer-type-fest-abstract-constructor",
|
|
48
|
+
"prefer-type-fest-arrayable",
|
|
49
|
+
"prefer-type-fest-async-return-type",
|
|
50
|
+
"prefer-type-fest-conditional-pick",
|
|
51
|
+
"prefer-type-fest-constructor",
|
|
52
|
+
"prefer-type-fest-except",
|
|
53
|
+
"prefer-type-fest-if",
|
|
54
|
+
"prefer-type-fest-iterable-element",
|
|
55
|
+
"prefer-type-fest-json-array",
|
|
56
|
+
"prefer-type-fest-json-object",
|
|
57
|
+
"prefer-type-fest-json-primitive",
|
|
58
|
+
"prefer-type-fest-json-value",
|
|
59
|
+
"prefer-type-fest-keys-of-union",
|
|
60
|
+
"prefer-type-fest-literal-union",
|
|
61
|
+
"prefer-type-fest-merge-exclusive",
|
|
62
|
+
"prefer-type-fest-non-empty-tuple",
|
|
63
|
+
"prefer-type-fest-omit-index-signature",
|
|
64
|
+
"prefer-type-fest-partial-deep",
|
|
65
|
+
"prefer-type-fest-primitive",
|
|
66
|
+
"prefer-type-fest-promisable",
|
|
67
|
+
"prefer-type-fest-readonly-deep",
|
|
68
|
+
"prefer-type-fest-require-all-or-none",
|
|
69
|
+
"prefer-type-fest-require-at-least-one",
|
|
70
|
+
"prefer-type-fest-require-exactly-one",
|
|
71
|
+
"prefer-type-fest-require-one-or-none",
|
|
72
|
+
"prefer-type-fest-required-deep",
|
|
73
|
+
"prefer-type-fest-schema",
|
|
74
|
+
"prefer-type-fest-set-non-nullable",
|
|
75
|
+
"prefer-type-fest-set-optional",
|
|
76
|
+
"prefer-type-fest-set-readonly",
|
|
77
|
+
"prefer-type-fest-set-required",
|
|
78
|
+
"prefer-type-fest-simplify",
|
|
79
|
+
"prefer-type-fest-tagged-brands",
|
|
80
|
+
"prefer-type-fest-tuple-of",
|
|
81
|
+
"prefer-type-fest-unknown-array",
|
|
82
|
+
"prefer-type-fest-unknown-map",
|
|
83
|
+
"prefer-type-fest-unknown-record",
|
|
84
|
+
"prefer-type-fest-unknown-set",
|
|
85
|
+
"prefer-type-fest-unwrap-tagged",
|
|
86
|
+
"prefer-type-fest-value-of",
|
|
87
|
+
"prefer-type-fest-writable",
|
|
88
|
+
"prefer-type-fest-writable-deep",
|
|
89
|
+
];
|
|
90
|
+
const toRuleCatalogId = (ruleNumber) => `R${String(ruleNumber).padStart(3, "0")}`;
|
|
91
|
+
const isTypefestRuleNamePattern = (ruleName) => ruleName.startsWith("prefer-");
|
|
92
|
+
/**
|
|
93
|
+
* Canonical catalog metadata entries in stable display/order form.
|
|
94
|
+
*/
|
|
95
|
+
export const typefestRuleCatalogEntries = orderedRuleNames.map((ruleName, index) => {
|
|
96
|
+
const ruleNumber = index + 1;
|
|
97
|
+
return {
|
|
98
|
+
ruleId: toRuleCatalogId(ruleNumber),
|
|
99
|
+
ruleName,
|
|
100
|
+
ruleNumber,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Fast lookup map for rule catalog metadata by rule name.
|
|
105
|
+
*/
|
|
106
|
+
export const typefestRuleCatalogByRuleName = objectFromEntries(typefestRuleCatalogEntries.map((entry) => [entry.ruleName, entry]));
|
|
107
|
+
/**
|
|
108
|
+
* Resolve stable catalog metadata for a rule name.
|
|
109
|
+
*
|
|
110
|
+
* @throws When the rule is missing from the catalog.
|
|
111
|
+
*/
|
|
112
|
+
/**
|
|
113
|
+
* Resolve stable catalog metadata for a rule name when available.
|
|
114
|
+
*/
|
|
115
|
+
export const getRuleCatalogEntryForRuleNameOrNull = (ruleName) => {
|
|
116
|
+
if (!isTypefestRuleNamePattern(ruleName)) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return typefestRuleCatalogByRuleName[ruleName] ?? null;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Resolve stable catalog metadata for a rule name.
|
|
123
|
+
*
|
|
124
|
+
* @throws When the rule is missing from the catalog.
|
|
125
|
+
*/
|
|
126
|
+
export const getRuleCatalogEntryForRuleName = (ruleName) => {
|
|
127
|
+
const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(ruleName);
|
|
128
|
+
if (catalogEntry === null) {
|
|
129
|
+
throw new TypeError(`Rule '${ruleName}' is missing from the stable rule catalog.`);
|
|
130
|
+
}
|
|
131
|
+
return catalogEntry;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Resolve stable catalog metadata by rule id.
|
|
135
|
+
*/
|
|
136
|
+
export const typefestRuleCatalogByRuleId = new Map(typefestRuleCatalogEntries.map((entry) => [entry.ruleId, entry]));
|
|
137
|
+
/**
|
|
138
|
+
* Resolve stable catalog metadata for a catalog id.
|
|
139
|
+
*/
|
|
140
|
+
export const getRuleCatalogEntryForRuleId = (ruleId) => typefestRuleCatalogByRuleId.get(ruleId);
|
|
141
|
+
/**
|
|
142
|
+
* Validate that catalog IDs are unique and sequential.
|
|
143
|
+
*/
|
|
144
|
+
export const validateRuleCatalogIntegrity = () => {
|
|
145
|
+
const entries = typefestRuleCatalogEntries;
|
|
146
|
+
const seenRuleIds = new Set();
|
|
147
|
+
for (const [index, entry] of entries.entries()) {
|
|
148
|
+
if (setHas(seenRuleIds, entry.ruleId)) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
seenRuleIds.add(entry.ruleId);
|
|
152
|
+
const expectedRuleNumber = index + 1;
|
|
153
|
+
if (entry.ruleNumber !== expectedRuleNumber) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
if (entry.ruleId !== toRuleCatalogId(expectedRuleNumber)) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=rule-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Derivation helpers for canonical rule docs metadata.
|
|
4
|
+
*/
|
|
5
|
+
import type { TSESLint } from "@typescript-eslint/utils";
|
|
6
|
+
import type { UnknownArray } from "type-fest";
|
|
7
|
+
import type { TypefestRuleNamePattern } from "./rules-registry.js";
|
|
8
|
+
import { type TypefestConfigName, type TypefestConfigReference } from "./typefest-config-references.js";
|
|
9
|
+
/** Normalized docs metadata derived for each rule. */
|
|
10
|
+
export type RuleDocsMetadata = Readonly<{
|
|
11
|
+
description: string;
|
|
12
|
+
recommended: boolean;
|
|
13
|
+
requiresTypeChecking: boolean;
|
|
14
|
+
ruleId: string;
|
|
15
|
+
ruleNumber: number;
|
|
16
|
+
typefestConfigNames: readonly TypefestConfigName[];
|
|
17
|
+
typefestConfigReferences: readonly TypefestConfigReference[];
|
|
18
|
+
url: string;
|
|
19
|
+
}>;
|
|
20
|
+
/** Rule-name keyed metadata map derived from static docs contracts. */
|
|
21
|
+
export type RuleDocsMetadataByName = Readonly<Record<TypefestRuleNamePattern, RuleDocsMetadata>>;
|
|
22
|
+
/** Rule-map contract accepted by docs metadata derivation helpers. */
|
|
23
|
+
type RuleMap = Readonly<Record<TypefestRuleNamePattern, TSESLint.RuleModule<string, Readonly<UnknownArray>>>>;
|
|
24
|
+
/**
|
|
25
|
+
* Derive normalized docs metadata for all plugin rules.
|
|
26
|
+
*/
|
|
27
|
+
export declare const deriveRuleDocsMetadataByName: (rules: RuleMap) => RuleDocsMetadataByName;
|
|
28
|
+
/**
|
|
29
|
+
* Derive a typed-rule set from normalized docs metadata.
|
|
30
|
+
*/
|
|
31
|
+
export declare const deriveTypeCheckedRuleNameSet: (ruleDocsMetadataByName: RuleDocsMetadataByName) => ReadonlySet<TypefestRuleNamePattern>;
|
|
32
|
+
/**
|
|
33
|
+
* Derive canonical preset-membership map from normalized docs metadata.
|
|
34
|
+
*/
|
|
35
|
+
export declare const deriveRulePresetMembershipByRuleName: (ruleDocsMetadataByName: RuleDocsMetadataByName) => Readonly<Record<TypefestRuleNamePattern, readonly TypefestConfigName[]>>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=rule-docs-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-docs-metadata.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,WAAW,CAAC;AAU7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAE/B,MAAM,iCAAiC,CAAC;AAEzC,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,wBAAwB,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC7D,GAAG,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CACzC,MAAM,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CACpD,CAAC;AAEF,sEAAsE;AACtE,KAAK,OAAO,GAAG,QAAQ,CACnB,MAAM,CACF,uBAAuB,EACvB,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CACtD,CACJ,CAAC;AAiOF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,OAAO,OAAO,KACf,sBAmCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,wBAAwB,sBAAsB,KAC/C,WAAW,CAAC,uBAAuB,CAkBrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,wBAAwB,sBAAsB,KAC/C,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAuBzE,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { arrayIncludes, isDefined, isEmpty, isInteger, objectEntries, } from "ts-extras";
|
|
2
|
+
import { createRuleDocsUrl } from "./rule-docs-url.js";
|
|
3
|
+
import { isTypefestConfigReference, typefestConfigReferenceToName, } from "./typefest-config-references.js";
|
|
4
|
+
const RULE_ID_PREFIX = "R";
|
|
5
|
+
const RULE_ID_LENGTH = 4;
|
|
6
|
+
const RULE_ID_DIGIT_START_INDEX = 1;
|
|
7
|
+
const RULE_ID_DIGIT_END_INDEX = 4;
|
|
8
|
+
const ASCII_ZERO_CODE_POINT = 48;
|
|
9
|
+
const ASCII_NINE_CODE_POINT = 57;
|
|
10
|
+
/**
|
|
11
|
+
* Guard dynamic rule ids to the canonical `R###` identifier contract.
|
|
12
|
+
*/
|
|
13
|
+
const isRuleIdInCanonicalFormat = (value) => {
|
|
14
|
+
if (value.length !== RULE_ID_LENGTH || !value.startsWith(RULE_ID_PREFIX)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
for (let index = RULE_ID_DIGIT_START_INDEX; index < RULE_ID_DIGIT_END_INDEX; index += 1) {
|
|
18
|
+
const codePoint = value.codePointAt(index);
|
|
19
|
+
if (!isDefined(codePoint)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (codePoint < ASCII_ZERO_CODE_POINT ||
|
|
23
|
+
codePoint > ASCII_NINE_CODE_POINT) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Guard dynamic values to object-shaped records.
|
|
31
|
+
*/
|
|
32
|
+
const isUnknownRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33
|
+
/**
|
|
34
|
+
* Guard dynamic rule ids to the plugin naming contract.
|
|
35
|
+
*/
|
|
36
|
+
const isTypefestRuleNamePattern = (value) => value.startsWith("prefer-");
|
|
37
|
+
/**
|
|
38
|
+
* Convert rule docs `typefestConfigs` into a normalized, deduped reference
|
|
39
|
+
* list.
|
|
40
|
+
*/
|
|
41
|
+
const normalizeTypefestConfigReferences = (ruleName, typefestConfigs) => {
|
|
42
|
+
const candidates = typeof typefestConfigs === "string"
|
|
43
|
+
? [typefestConfigs]
|
|
44
|
+
: [...typefestConfigs];
|
|
45
|
+
const references = [];
|
|
46
|
+
for (const candidate of candidates) {
|
|
47
|
+
if (!isTypefestConfigReference(candidate)) {
|
|
48
|
+
throw new TypeError(`Rule '${ruleName}' has invalid docs.typefestConfigs reference '${String(candidate)}'.`);
|
|
49
|
+
}
|
|
50
|
+
if (arrayIncludes(references, candidate)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
references.push(candidate);
|
|
54
|
+
}
|
|
55
|
+
if (isEmpty(references)) {
|
|
56
|
+
throw new TypeError(`Rule '${ruleName}' must declare at least one docs.typefestConfigs reference.`);
|
|
57
|
+
}
|
|
58
|
+
return references;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Validate and narrow dynamic `meta.docs` values to the plugin docs contract.
|
|
62
|
+
*/
|
|
63
|
+
const getRuleDocsContract = (ruleName, docs) => {
|
|
64
|
+
if (!isUnknownRecord(docs)) {
|
|
65
|
+
throw new TypeError(`Rule '${ruleName}' must declare meta.docs.`);
|
|
66
|
+
}
|
|
67
|
+
const description = docs["description"];
|
|
68
|
+
const recommended = docs["recommended"];
|
|
69
|
+
const requiresTypeChecking = docs["requiresTypeChecking"];
|
|
70
|
+
const ruleId = docs["ruleId"];
|
|
71
|
+
const ruleNumber = docs["ruleNumber"];
|
|
72
|
+
const typefestConfigs = docs["typefestConfigs"];
|
|
73
|
+
const url = docs["url"];
|
|
74
|
+
if (typeof description !== "string" || description.trim().length === 0) {
|
|
75
|
+
throw new TypeError(`Rule '${ruleName}' must declare a non-empty docs.description.`);
|
|
76
|
+
}
|
|
77
|
+
if (typeof url !== "string" || url.trim().length === 0) {
|
|
78
|
+
throw new TypeError(`Rule '${ruleName}' must declare a non-empty docs.url.`);
|
|
79
|
+
}
|
|
80
|
+
const expectedRuleDocsUrl = createRuleDocsUrl(ruleName);
|
|
81
|
+
if (url !== expectedRuleDocsUrl) {
|
|
82
|
+
throw new TypeError(`Rule '${ruleName}' must declare docs.url as '${expectedRuleDocsUrl}'.`);
|
|
83
|
+
}
|
|
84
|
+
if (typeof recommended !== "boolean") {
|
|
85
|
+
throw new TypeError(`Rule '${ruleName}' must declare boolean docs.recommended.`);
|
|
86
|
+
}
|
|
87
|
+
if (typeof requiresTypeChecking !== "boolean") {
|
|
88
|
+
throw new TypeError(`Rule '${ruleName}' must declare boolean docs.requiresTypeChecking.`);
|
|
89
|
+
}
|
|
90
|
+
if (typeof ruleId !== "string" ||
|
|
91
|
+
!isRuleIdInCanonicalFormat(ruleId) ||
|
|
92
|
+
ruleId.trim().length === 0) {
|
|
93
|
+
throw new TypeError(`Rule '${ruleName}' must declare docs.ruleId using the 'R###' format.`);
|
|
94
|
+
}
|
|
95
|
+
if (typeof ruleNumber !== "number" ||
|
|
96
|
+
!isInteger(ruleNumber) ||
|
|
97
|
+
ruleNumber < 1) {
|
|
98
|
+
throw new TypeError(`Rule '${ruleName}' must declare positive integer docs.ruleNumber.`);
|
|
99
|
+
}
|
|
100
|
+
if (typeof typefestConfigs === "string") {
|
|
101
|
+
if (!isTypefestConfigReference(typefestConfigs)) {
|
|
102
|
+
throw new TypeError(`Rule '${ruleName}' has invalid docs.typefestConfigs reference '${typefestConfigs}'.`);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
description,
|
|
106
|
+
recommended,
|
|
107
|
+
requiresTypeChecking,
|
|
108
|
+
ruleId,
|
|
109
|
+
ruleNumber,
|
|
110
|
+
typefestConfigs,
|
|
111
|
+
url,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (!Array.isArray(typefestConfigs)) {
|
|
115
|
+
throw new TypeError(`Rule '${ruleName}' must declare docs.typefestConfigs as a preset reference or array.`);
|
|
116
|
+
}
|
|
117
|
+
const normalizedTypefestConfigs = [];
|
|
118
|
+
for (const candidate of typefestConfigs) {
|
|
119
|
+
if (typeof candidate !== "string" ||
|
|
120
|
+
!isTypefestConfigReference(candidate)) {
|
|
121
|
+
throw new TypeError(`Rule '${ruleName}' has invalid docs.typefestConfigs reference '${String(candidate)}'.`);
|
|
122
|
+
}
|
|
123
|
+
normalizedTypefestConfigs.push(candidate);
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
description,
|
|
127
|
+
recommended,
|
|
128
|
+
requiresTypeChecking,
|
|
129
|
+
ruleId,
|
|
130
|
+
ruleNumber,
|
|
131
|
+
typefestConfigs: normalizedTypefestConfigs,
|
|
132
|
+
url,
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Derive normalized docs metadata for all plugin rules.
|
|
137
|
+
*/
|
|
138
|
+
export const deriveRuleDocsMetadataByName = (rules) => {
|
|
139
|
+
const metadataByRuleName = {};
|
|
140
|
+
for (const [ruleName, ruleModule] of objectEntries(rules)) {
|
|
141
|
+
if (!isTypefestRuleNamePattern(ruleName)) {
|
|
142
|
+
throw new TypeError(`Unexpected rule id '${ruleName}' while deriving docs metadata.`);
|
|
143
|
+
}
|
|
144
|
+
const ruleDocs = getRuleDocsContract(ruleName, ruleModule.meta?.docs);
|
|
145
|
+
const typefestConfigReferences = normalizeTypefestConfigReferences(ruleName, ruleDocs.typefestConfigs);
|
|
146
|
+
const typefestConfigNames = typefestConfigReferences.map((reference) => typefestConfigReferenceToName[reference]);
|
|
147
|
+
metadataByRuleName[ruleName] = {
|
|
148
|
+
description: ruleDocs.description,
|
|
149
|
+
recommended: ruleDocs.recommended,
|
|
150
|
+
requiresTypeChecking: ruleDocs.requiresTypeChecking,
|
|
151
|
+
ruleId: ruleDocs.ruleId,
|
|
152
|
+
ruleNumber: ruleDocs.ruleNumber,
|
|
153
|
+
typefestConfigNames,
|
|
154
|
+
typefestConfigReferences,
|
|
155
|
+
url: ruleDocs.url,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return metadataByRuleName;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Derive a typed-rule set from normalized docs metadata.
|
|
162
|
+
*/
|
|
163
|
+
export const deriveTypeCheckedRuleNameSet = (ruleDocsMetadataByName) => {
|
|
164
|
+
const ruleNames = [];
|
|
165
|
+
for (const [ruleName, metadata] of objectEntries(ruleDocsMetadataByName)) {
|
|
166
|
+
if (!metadata.requiresTypeChecking) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (!isTypefestRuleNamePattern(ruleName)) {
|
|
170
|
+
throw new TypeError(`Unexpected rule id '${ruleName}' while deriving typed-rule metadata.`);
|
|
171
|
+
}
|
|
172
|
+
ruleNames.push(ruleName);
|
|
173
|
+
}
|
|
174
|
+
return new Set(ruleNames);
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Derive canonical preset-membership map from normalized docs metadata.
|
|
178
|
+
*/
|
|
179
|
+
export const deriveRulePresetMembershipByRuleName = (ruleDocsMetadataByName) => {
|
|
180
|
+
const membershipByRuleName = {};
|
|
181
|
+
for (const [ruleName, metadata] of objectEntries(ruleDocsMetadataByName)) {
|
|
182
|
+
if (!isTypefestRuleNamePattern(ruleName)) {
|
|
183
|
+
throw new TypeError(`Unexpected rule id '${ruleName}' while deriving preset membership.`);
|
|
184
|
+
}
|
|
185
|
+
membershipByRuleName[ruleName] = metadata.typefestConfigNames;
|
|
186
|
+
}
|
|
187
|
+
if (isEmpty(objectEntries(membershipByRuleName))) {
|
|
188
|
+
throw new TypeError("Rule metadata derivation produced no membership entries.");
|
|
189
|
+
}
|
|
190
|
+
return membershipByRuleName;
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=rule-docs-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-docs-metadata.js","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Canonical rule documentation URL helpers.
|
|
4
|
+
*/
|
|
5
|
+
/** Stable docs host/prefix for generated rule docs links. */
|
|
6
|
+
export declare const RULE_DOCS_URL_BASE: "https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/";
|
|
7
|
+
/**
|
|
8
|
+
* Build the canonical documentation URL for one rule id.
|
|
9
|
+
*
|
|
10
|
+
* @param ruleName - Rule id (for example `prefer-ts-extras-array-at`).
|
|
11
|
+
*
|
|
12
|
+
* @returns Canonical docs URL for the rule page.
|
|
13
|
+
*/
|
|
14
|
+
export declare const createRuleDocsUrl: (ruleName: string) => string;
|
|
15
|
+
//# sourceMappingURL=rule-docs-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-docs-url.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-docs-url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,EAC3B,iEAA0E,CAAC;AAE/E;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,MACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Canonical rule documentation URL helpers.
|
|
4
|
+
*/
|
|
5
|
+
/** Stable docs host/prefix for generated rule docs links. */
|
|
6
|
+
export const RULE_DOCS_URL_BASE = "https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/";
|
|
7
|
+
/**
|
|
8
|
+
* Build the canonical documentation URL for one rule id.
|
|
9
|
+
*
|
|
10
|
+
* @param ruleName - Rule id (for example `prefer-ts-extras-array-at`).
|
|
11
|
+
*
|
|
12
|
+
* @returns Canonical docs URL for the rule page.
|
|
13
|
+
*/
|
|
14
|
+
export const createRuleDocsUrl = (ruleName) => `${RULE_DOCS_URL_BASE}${ruleName}`;
|
|
15
|
+
//# sourceMappingURL=rule-docs-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-docs-url.js","sourceRoot":"","sources":["../../src/_internal/rule-docs-url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAC3B,iEAA0E,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC1D,GAAG,kBAAkB,GAAG,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared helpers for consistent rule reporting with optional fixes and
|
|
4
|
+
* suggestion fallbacks.
|
|
5
|
+
*/
|
|
6
|
+
import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
|
|
7
|
+
import type { UnknownArray } from "type-fest";
|
|
8
|
+
/**
|
|
9
|
+
* Resolution result for optional fix/suggestion reporting.
|
|
10
|
+
*/
|
|
11
|
+
export type AutofixOrSuggestionOutcome = Readonly<{
|
|
12
|
+
fix: TSESLint.ReportFixFunction;
|
|
13
|
+
kind: "autofix";
|
|
14
|
+
}> | Readonly<{
|
|
15
|
+
fix: TSESLint.ReportFixFunction;
|
|
16
|
+
kind: "suggestion";
|
|
17
|
+
}> | Readonly<{
|
|
18
|
+
kind: "no-fix";
|
|
19
|
+
}>;
|
|
20
|
+
/** Input shape for {@link resolveAutofixOrSuggestionOutcome}. */
|
|
21
|
+
type AutofixOrSuggestionResolutionInput = Readonly<{
|
|
22
|
+
canAutofix: boolean;
|
|
23
|
+
fix: null | TSESLint.ReportFixFunction;
|
|
24
|
+
}>;
|
|
25
|
+
/** Concrete report descriptor type for a rule context. */
|
|
26
|
+
type ReportDescriptor<MessageIds extends string, Options extends Readonly<UnknownArray>> = Parameters<TSESLint.RuleContext<MessageIds, Options>["report"]>[0];
|
|
27
|
+
/**
|
|
28
|
+
* Report using plugin-aware autofix policy handling.
|
|
29
|
+
*/
|
|
30
|
+
export declare const reportWithTypefestPolicy: <MessageIds extends string, Options extends Readonly<UnknownArray>>({ context, descriptor, }: Readonly<{
|
|
31
|
+
context: Readonly<TSESLint.RuleContext<MessageIds, Options>>;
|
|
32
|
+
descriptor: ReportDescriptor<MessageIds, Options>;
|
|
33
|
+
}>) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Report a diagnostic with an optional direct fix.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* When `fix` is absent this reports only `messageId` + `node`.
|
|
39
|
+
*/
|
|
40
|
+
export declare const reportWithOptionalFix: <MessageIds extends string, Options extends Readonly<UnknownArray>>({ context, data, fix, messageId, node, }: Readonly<{
|
|
41
|
+
context: Readonly<TSESLint.RuleContext<MessageIds, Options>>;
|
|
42
|
+
data?: ReportDescriptor<MessageIds, Options>["data"];
|
|
43
|
+
fix: null | TSESLint.ReportFixFunction;
|
|
44
|
+
messageId: MessageIds;
|
|
45
|
+
node: TSESTree.Node;
|
|
46
|
+
}>) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve one of three standardized reporting outcomes:
|
|
49
|
+
*
|
|
50
|
+
* - No fix (`messageId` only),
|
|
51
|
+
* - Direct autofix (`fix`), or
|
|
52
|
+
* - Suggestion-only (`suggest`).
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveAutofixOrSuggestionOutcome({ canAutofix, fix, }: AutofixOrSuggestionResolutionInput): AutofixOrSuggestionOutcome;
|
|
55
|
+
/**
|
|
56
|
+
* Report a previously resolved autofix/suggestion outcome.
|
|
57
|
+
*
|
|
58
|
+
* @remarks
|
|
59
|
+
* - Suggestion outcomes are reported with a single `suggest` entry.
|
|
60
|
+
* - Autofix and no-fix outcomes are delegated to {@link reportWithOptionalFix}.
|
|
61
|
+
*/
|
|
62
|
+
export declare const reportResolvedAutofixOrSuggestionOutcome: <MessageIds extends string, Options extends Readonly<UnknownArray>>({ context, data, messageId, node, outcome, suggestionMessageId, }: Readonly<{
|
|
63
|
+
context: Readonly<TSESLint.RuleContext<MessageIds, Options>>;
|
|
64
|
+
data?: ReportDescriptor<MessageIds, Options>["data"];
|
|
65
|
+
messageId: MessageIds;
|
|
66
|
+
node: TSESTree.Node;
|
|
67
|
+
outcome: AutofixOrSuggestionOutcome;
|
|
68
|
+
suggestionMessageId: MessageIds;
|
|
69
|
+
}>) => void;
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=rule-reporting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-reporting.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-reporting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAK9C;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAChC,QAAQ,CAAC;IAAE,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAC9D,QAAQ,CAAC;IAAE,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GACjE,QAAQ,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAEnC,iEAAiE;AACjE,KAAK,kCAAkC,GAAG,QAAQ,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC;CAC1C,CAAC,CAAC;AAEH,0DAA0D;AAC1D,KAAK,gBAAgB,CACjB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,IACtC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,wBAAwB,GACjC,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,EACxC,0BAGC,QAAQ,CAAC;IACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;CACrD,CAAC,KAAG,IAUJ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAC9B,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,EACxC,0CAMC,QAAQ,CAAC;IACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,GAAG,EAAE,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACvC,SAAS,EAAE,UAAU,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;CACvB,CAAC,KAAG,IAYJ,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAAC,EAC9C,UAAU,EACV,GAAG,GACN,EAAE,kCAAkC,GAAG,0BAA0B,CAkBjE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wCAAwC,GACjD,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,EACxC,mEAOC,QAAQ,CAAC;IACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,SAAS,EAAE,UAAU,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,EAAE,0BAA0B,CAAC;IACpC,mBAAmB,EAAE,UAAU,CAAC;CACnC,CAAC,KAAG,IA2BJ,CAAC"}
|