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,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Public plugin entrypoint for eslint-plugin-typefest exports and preset wiring.
|
|
4
|
+
*/
|
|
5
|
+
import type { ESLint, Linter } from "eslint";
|
|
6
|
+
import type { Except } from "type-fest";
|
|
7
|
+
import { typefestRules } from "./_internal/rules-registry.js";
|
|
8
|
+
import { type TypefestConfigName as InternalTypefestConfigName } from "./_internal/typefest-config-references.js";
|
|
9
|
+
/**
|
|
10
|
+
* Canonical flat-config preset keys exposed through `plugin.configs`.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* These names are used by consumers when composing presets in ESLint flat
|
|
14
|
+
* config arrays.
|
|
15
|
+
*/
|
|
16
|
+
export type TypefestConfigName = InternalTypefestConfigName;
|
|
17
|
+
/**
|
|
18
|
+
* Flat-config preset shape produced by this plugin.
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* The `rules` map is required so preset composition can always merge concrete
|
|
22
|
+
* rule severity entries without additional null checks.
|
|
23
|
+
*/
|
|
24
|
+
export type TypefestPresetConfig = Linter.Config & {
|
|
25
|
+
rules: NonNullable<Linter.Config["rules"]>;
|
|
26
|
+
};
|
|
27
|
+
/** Contract for the `configs` object exported by this plugin. */
|
|
28
|
+
type TypefestConfigsContract = Record<TypefestConfigName, TypefestPresetConfig>;
|
|
29
|
+
/** Fully assembled plugin contract used by the runtime default export. */
|
|
30
|
+
type TypefestPluginContract = Except<ESLint.Plugin, "configs" | "rules"> & {
|
|
31
|
+
configs: TypefestConfigsContract;
|
|
32
|
+
meta: {
|
|
33
|
+
name: string;
|
|
34
|
+
namespace: string;
|
|
35
|
+
version: string;
|
|
36
|
+
};
|
|
37
|
+
processors: NonNullable<ESLint.Plugin["processors"]>;
|
|
38
|
+
rules: NonNullable<ESLint.Plugin["rules"]>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Fully-qualified ESLint rule id used by this plugin.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* Consumers typically use this when building strongly typed rule maps or helper
|
|
45
|
+
* utilities that require namespaced rule identifiers.
|
|
46
|
+
*/
|
|
47
|
+
export type TypefestRuleId = `typefest/${TypefestRuleName}`;
|
|
48
|
+
/** Unqualified rule name supported by `eslint-plugin-typefest`. */
|
|
49
|
+
export type TypefestRuleName = keyof typeof typefestRules;
|
|
50
|
+
/** Finalized typed view of all exported preset configurations. */
|
|
51
|
+
declare const typefestConfigs: TypefestConfigsContract;
|
|
52
|
+
/**
|
|
53
|
+
* Runtime type for the plugin's generated config presets.
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* Mirrors `plugin.configs` and is useful when composing typed preset-aware
|
|
57
|
+
* tooling in external integrations.
|
|
58
|
+
*/
|
|
59
|
+
export type TypefestConfigs = typeof typefestConfigs;
|
|
60
|
+
/**
|
|
61
|
+
* Main plugin object exported for ESLint consumption.
|
|
62
|
+
*/
|
|
63
|
+
declare const typefestPlugin: TypefestPluginContract;
|
|
64
|
+
/**
|
|
65
|
+
* Runtime type for the plugin object exported as default.
|
|
66
|
+
*
|
|
67
|
+
* @remarks
|
|
68
|
+
* Includes resolved `meta`, `rules`, and `configs` contracts after plugin
|
|
69
|
+
* assembly.
|
|
70
|
+
*/
|
|
71
|
+
export type TypefestPlugin = typeof typefestPlugin;
|
|
72
|
+
/**
|
|
73
|
+
* Default plugin export consumed by ESLint flat config.
|
|
74
|
+
*/
|
|
75
|
+
export default typefestPlugin;
|
|
76
|
+
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Public plugin entrypoint for eslint-plugin-typefest exports and preset wiring.
|
|
4
|
+
*/
|
|
5
|
+
import type { ESLint, Linter } from "eslint";
|
|
6
|
+
import type { Except } from "type-fest";
|
|
7
|
+
import { typefestRules } from "./_internal/rules-registry.js";
|
|
8
|
+
import { type TypefestConfigName as InternalTypefestConfigName } from "./_internal/typefest-config-references.js";
|
|
9
|
+
/**
|
|
10
|
+
* Canonical flat-config preset keys exposed through `plugin.configs`.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* These names are used by consumers when composing presets in ESLint flat
|
|
14
|
+
* config arrays.
|
|
15
|
+
*/
|
|
16
|
+
export type TypefestConfigName = InternalTypefestConfigName;
|
|
17
|
+
/**
|
|
18
|
+
* Flat-config preset shape produced by this plugin.
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* The `rules` map is required so preset composition can always merge concrete
|
|
22
|
+
* rule severity entries without additional null checks.
|
|
23
|
+
*/
|
|
24
|
+
export type TypefestPresetConfig = Linter.Config & {
|
|
25
|
+
rules: NonNullable<Linter.Config["rules"]>;
|
|
26
|
+
};
|
|
27
|
+
/** Contract for the `configs` object exported by this plugin. */
|
|
28
|
+
type TypefestConfigsContract = Record<TypefestConfigName, TypefestPresetConfig>;
|
|
29
|
+
/** Fully assembled plugin contract used by the runtime default export. */
|
|
30
|
+
type TypefestPluginContract = Except<ESLint.Plugin, "configs" | "rules"> & {
|
|
31
|
+
configs: TypefestConfigsContract;
|
|
32
|
+
meta: {
|
|
33
|
+
name: string;
|
|
34
|
+
namespace: string;
|
|
35
|
+
version: string;
|
|
36
|
+
};
|
|
37
|
+
processors: NonNullable<ESLint.Plugin["processors"]>;
|
|
38
|
+
rules: NonNullable<ESLint.Plugin["rules"]>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Fully-qualified ESLint rule id used by this plugin.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* Consumers typically use this when building strongly typed rule maps or helper
|
|
45
|
+
* utilities that require namespaced rule identifiers.
|
|
46
|
+
*/
|
|
47
|
+
export type TypefestRuleId = `typefest/${TypefestRuleName}`;
|
|
48
|
+
/** Unqualified rule name supported by `eslint-plugin-typefest`. */
|
|
49
|
+
export type TypefestRuleName = keyof typeof typefestRules;
|
|
50
|
+
/** Finalized typed view of all exported preset configurations. */
|
|
51
|
+
declare const typefestConfigs: TypefestConfigsContract;
|
|
52
|
+
/**
|
|
53
|
+
* Runtime type for the plugin's generated config presets.
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* Mirrors `plugin.configs` and is useful when composing typed preset-aware
|
|
57
|
+
* tooling in external integrations.
|
|
58
|
+
*/
|
|
59
|
+
export type TypefestConfigs = typeof typefestConfigs;
|
|
60
|
+
/**
|
|
61
|
+
* Main plugin object exported for ESLint consumption.
|
|
62
|
+
*/
|
|
63
|
+
declare const typefestPlugin: TypefestPluginContract;
|
|
64
|
+
/**
|
|
65
|
+
* Runtime type for the plugin object exported as default.
|
|
66
|
+
*
|
|
67
|
+
* @remarks
|
|
68
|
+
* Includes resolved `meta`, `rules`, and `configs` contracts after plugin
|
|
69
|
+
* assembly.
|
|
70
|
+
*/
|
|
71
|
+
export type TypefestPlugin = typeof typefestPlugin;
|
|
72
|
+
/**
|
|
73
|
+
* Default plugin export consumed by ESLint flat config.
|
|
74
|
+
*/
|
|
75
|
+
export default typefestPlugin;
|
|
76
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAkBxC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EACH,KAAK,kBAAkB,IAAI,0BAA0B,EAGxD,MAAM,2CAA2C,CAAC;AAQnD;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,GAAG;IAC/C,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAcF,iEAAiE;AACjE,KAAK,uBAAuB,GAAG,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;AAEhF,0EAA0E;AAC1E,KAAK,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IACvE,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AA2CF;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,gBAAgB,EAAE,CAAC;AAE5D,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,aAAa,CAAC;AAoO1D,kEAAkE;AAClE,QAAA,MAAM,eAAe,EAAE,uBAAmD,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD;;GAEG;AACH,QAAA,MAAM,cAAc,EAAE,sBASrB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;GAEG;AACH,eAAe,cAAc,CAAC"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import typeScriptParser from "@typescript-eslint/parser";
|
|
2
|
+
import { isDefined, isEmpty, objectEntries, objectHasIn, safeCastTo, setHas, } from "ts-extras";
|
|
3
|
+
import packageJson from "../package.json" with { type: "json" };
|
|
4
|
+
import { deriveRuleDocsMetadataByName, deriveRulePresetMembershipByRuleName, deriveTypeCheckedRuleNameSet, } from "./_internal/rule-docs-metadata.js";
|
|
5
|
+
import { typefestRules } from "./_internal/rules-registry.js";
|
|
6
|
+
import { typefestConfigMetadataByName, typefestConfigNames, } from "./_internal/typefest-config-references.js";
|
|
7
|
+
/** ESLint severity used by generated preset rule maps. */
|
|
8
|
+
const ERROR_SEVERITY = "error";
|
|
9
|
+
/** Default file globs targeted by plugin presets when `files` is omitted. */
|
|
10
|
+
const TYPE_SCRIPT_FILES = ["**/*.{ts,tsx,mts,cts}"];
|
|
11
|
+
/**
|
|
12
|
+
* Resolve package version from package.json data.
|
|
13
|
+
*
|
|
14
|
+
* @param pkg - Parsed package metadata value.
|
|
15
|
+
*
|
|
16
|
+
* @returns The package version, or `0.0.0` when unavailable.
|
|
17
|
+
*/
|
|
18
|
+
function getPackageVersion(pkg) {
|
|
19
|
+
if (typeof pkg !== "object" || pkg === null) {
|
|
20
|
+
return "0.0.0";
|
|
21
|
+
}
|
|
22
|
+
const version = Reflect.get(pkg, "version");
|
|
23
|
+
return typeof version === "string" ? version : "0.0.0";
|
|
24
|
+
}
|
|
25
|
+
/** Package metadata used to populate plugin runtime `meta.version`. */
|
|
26
|
+
const packageJsonValue = safeCastTo(packageJson);
|
|
27
|
+
/** Parser module reused across preset construction. */
|
|
28
|
+
const typeScriptParserValue = typeScriptParser;
|
|
29
|
+
/** Default parser options applied when a preset omits parser options. */
|
|
30
|
+
const defaultParserOptions = {
|
|
31
|
+
ecmaVersion: "latest",
|
|
32
|
+
sourceType: "module",
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Normalize unknown parser options into a mutable parser-options object.
|
|
36
|
+
*/
|
|
37
|
+
const normalizeParserOptions = (parserOptions) => parserOptions !== null &&
|
|
38
|
+
typeof parserOptions === "object" &&
|
|
39
|
+
!Array.isArray(parserOptions)
|
|
40
|
+
? { ...parserOptions }
|
|
41
|
+
: { ...defaultParserOptions };
|
|
42
|
+
/**
|
|
43
|
+
* ESLint-compatible rule map view of the strongly typed internal rule record.
|
|
44
|
+
*/
|
|
45
|
+
const typefestEslintRules = typefestRules;
|
|
46
|
+
const isTypefestRuleName = (value) => objectHasIn(typefestRules, value);
|
|
47
|
+
const typefestRuleEntries = (() => {
|
|
48
|
+
const entries = [];
|
|
49
|
+
for (const [ruleName] of objectEntries(typefestRules)) {
|
|
50
|
+
if (!isTypefestRuleName(ruleName)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const ruleDefinition = typefestRules[ruleName];
|
|
54
|
+
if (ruleDefinition === undefined) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
entries.push([ruleName, ruleDefinition]);
|
|
58
|
+
}
|
|
59
|
+
return entries;
|
|
60
|
+
})();
|
|
61
|
+
const ruleDocsMetadataByRuleName = deriveRuleDocsMetadataByName(typefestRules);
|
|
62
|
+
const rulePresetMembership = deriveRulePresetMembershipByRuleName(ruleDocsMetadataByRuleName);
|
|
63
|
+
const typeCheckedRuleNames = deriveTypeCheckedRuleNameSet(ruleDocsMetadataByRuleName);
|
|
64
|
+
const createEmptyPresetRuleMap = () => {
|
|
65
|
+
const presetRuleMap = {};
|
|
66
|
+
for (const configName of typefestConfigNames) {
|
|
67
|
+
presetRuleMap[configName] = [];
|
|
68
|
+
}
|
|
69
|
+
return presetRuleMap;
|
|
70
|
+
};
|
|
71
|
+
const dedupeRuleNames = (ruleNames) => [...new Set(ruleNames)];
|
|
72
|
+
const derivePresetRuleNamesByConfig = () => {
|
|
73
|
+
const presetRuleNamesByConfig = createEmptyPresetRuleMap();
|
|
74
|
+
for (const [ruleName] of typefestRuleEntries) {
|
|
75
|
+
const configNames = rulePresetMembership[ruleName];
|
|
76
|
+
if (!isDefined(configNames) || isEmpty(configNames)) {
|
|
77
|
+
throw new TypeError(`Rule '${ruleName}' is missing preset membership metadata.`);
|
|
78
|
+
}
|
|
79
|
+
for (const configName of configNames) {
|
|
80
|
+
presetRuleNamesByConfig[configName].push(ruleName);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
all: dedupeRuleNames(presetRuleNamesByConfig.all),
|
|
85
|
+
minimal: dedupeRuleNames(presetRuleNamesByConfig.minimal),
|
|
86
|
+
recommended: dedupeRuleNames(presetRuleNamesByConfig.recommended),
|
|
87
|
+
"recommended-type-checked": dedupeRuleNames(presetRuleNamesByConfig["recommended-type-checked"]),
|
|
88
|
+
strict: dedupeRuleNames(presetRuleNamesByConfig.strict),
|
|
89
|
+
"ts-extras/type-guards": dedupeRuleNames(presetRuleNamesByConfig["ts-extras/type-guards"]),
|
|
90
|
+
"type-fest/types": dedupeRuleNames(presetRuleNamesByConfig["type-fest/types"]),
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Build an ESLint rules map that enables each provided rule at error level.
|
|
95
|
+
*
|
|
96
|
+
* @param ruleNames - Rule names to enable.
|
|
97
|
+
*
|
|
98
|
+
* @returns Rules config object compatible with flat config.
|
|
99
|
+
*/
|
|
100
|
+
function errorRulesFor(ruleNames) {
|
|
101
|
+
const rules = {};
|
|
102
|
+
for (const ruleName of ruleNames) {
|
|
103
|
+
rules[`typefest/${ruleName}`] = ERROR_SEVERITY;
|
|
104
|
+
}
|
|
105
|
+
return rules;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Remove duplicates while preserving first-seen ordering.
|
|
109
|
+
*
|
|
110
|
+
* @param ruleNames - Candidate rule list.
|
|
111
|
+
*
|
|
112
|
+
* @returns Deduplicated rule list.
|
|
113
|
+
*/
|
|
114
|
+
const presetRuleNamesByConfig = derivePresetRuleNamesByConfig();
|
|
115
|
+
/** Recommended preset rule list for zero-type-info usage. */
|
|
116
|
+
const recommendedRuleNames = [];
|
|
117
|
+
for (const ruleName of presetRuleNamesByConfig.recommended) {
|
|
118
|
+
if (setHas(typeCheckedRuleNames, ruleName)) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
recommendedRuleNames.push(ruleName);
|
|
122
|
+
}
|
|
123
|
+
/** Type-aware recommended preset rule list. */
|
|
124
|
+
const recommendedTypeCheckedRuleNames = dedupeRuleNames([
|
|
125
|
+
...recommendedRuleNames,
|
|
126
|
+
...presetRuleNamesByConfig["recommended-type-checked"],
|
|
127
|
+
]);
|
|
128
|
+
/** Effective per-preset rule lists after applying derived policy overlays. */
|
|
129
|
+
const effectivePresetRuleNamesByConfig = {
|
|
130
|
+
...presetRuleNamesByConfig,
|
|
131
|
+
recommended: recommendedRuleNames,
|
|
132
|
+
"recommended-type-checked": recommendedTypeCheckedRuleNames,
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Apply parser and plugin metadata required by all plugin presets.
|
|
136
|
+
*
|
|
137
|
+
* @param config - Preset-specific config fragment.
|
|
138
|
+
* @param plugin - Plugin object registered under the `typefest` namespace.
|
|
139
|
+
* @param options - Preset-level wiring options.
|
|
140
|
+
*
|
|
141
|
+
* @returns Normalized preset config.
|
|
142
|
+
*/
|
|
143
|
+
function withTypefestPlugin(config, plugin, options) {
|
|
144
|
+
const existingLanguageOptions = config.languageOptions ?? {};
|
|
145
|
+
const existingParserOptions = existingLanguageOptions["parserOptions"];
|
|
146
|
+
const parserOptions = normalizeParserOptions(existingParserOptions);
|
|
147
|
+
if (options.requiresTypeChecking &&
|
|
148
|
+
!objectHasIn(parserOptions, "projectService")) {
|
|
149
|
+
Reflect.set(parserOptions, "projectService", true);
|
|
150
|
+
}
|
|
151
|
+
const languageOptions = {
|
|
152
|
+
...existingLanguageOptions,
|
|
153
|
+
parser: existingLanguageOptions["parser"] ?? typeScriptParserValue,
|
|
154
|
+
parserOptions,
|
|
155
|
+
};
|
|
156
|
+
return {
|
|
157
|
+
...config,
|
|
158
|
+
files: config.files ?? [...TYPE_SCRIPT_FILES],
|
|
159
|
+
languageOptions,
|
|
160
|
+
plugins: {
|
|
161
|
+
...config.plugins,
|
|
162
|
+
typefest: plugin,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** Minimal plugin object used when assembling flat-config presets. */
|
|
167
|
+
const pluginForConfigs = {
|
|
168
|
+
rules: typefestEslintRules,
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Flat config presets distributed by eslint-plugin-typefest.
|
|
172
|
+
*/
|
|
173
|
+
const createTypefestConfigsDefinition = () => {
|
|
174
|
+
const configs = {};
|
|
175
|
+
for (const configName of typefestConfigNames) {
|
|
176
|
+
const configMetadata = typefestConfigMetadataByName[configName];
|
|
177
|
+
configs[configName] = withTypefestPlugin({
|
|
178
|
+
name: configMetadata.presetName,
|
|
179
|
+
rules: errorRulesFor(effectivePresetRuleNamesByConfig[configName]),
|
|
180
|
+
}, pluginForConfigs, {
|
|
181
|
+
requiresTypeChecking: configMetadata.requiresTypeChecking,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return configs;
|
|
185
|
+
};
|
|
186
|
+
const typefestConfigsDefinition = createTypefestConfigsDefinition();
|
|
187
|
+
/** Finalized typed view of all exported preset configurations. */
|
|
188
|
+
const typefestConfigs = typefestConfigsDefinition;
|
|
189
|
+
/**
|
|
190
|
+
* Main plugin object exported for ESLint consumption.
|
|
191
|
+
*/
|
|
192
|
+
const typefestPlugin = {
|
|
193
|
+
configs: typefestConfigs,
|
|
194
|
+
meta: {
|
|
195
|
+
name: "eslint-plugin-typefest",
|
|
196
|
+
namespace: "typefest",
|
|
197
|
+
version: getPackageVersion(packageJsonValue),
|
|
198
|
+
},
|
|
199
|
+
processors: {},
|
|
200
|
+
rules: typefestEslintRules,
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* Default plugin export consumed by ESLint flat config.
|
|
204
|
+
*/
|
|
205
|
+
export default typefestPlugin;
|
|
206
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createTypedRule } from "../_internal/typed-rule.js";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition for `prefer-ts-extras-array-at`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
7
|
+
*/
|
|
8
|
+
declare const preferTsExtrasArrayAtRule: ReturnType<typeof createTypedRule>;
|
|
9
|
+
/**
|
|
10
|
+
* Default export for the `prefer-ts-extras-array-at` rule module.
|
|
11
|
+
*/
|
|
12
|
+
export default preferTsExtrasArrayAtRule;
|
|
13
|
+
//# sourceMappingURL=prefer-ts-extras-array-at.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-at.d.ts","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-at.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,QAAA,MAAM,yBAAyB,EAAE,UAAU,CAAC,OAAO,eAAe,CAuD5D,CAAC;AAEP;;GAEG;AACH,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* ESLint rule implementation for `prefer-ts-extras-array-at`.
|
|
4
|
+
*/
|
|
5
|
+
import { createIsArrayLikeExpressionChecker } from "../_internal/array-like-expression.js";
|
|
6
|
+
import { reportTsExtrasArrayMethodCall } from "../_internal/array-method-call-rule.js";
|
|
7
|
+
import { collectDirectNamedValueImportsFromSource } from "../_internal/imported-value-symbols.js";
|
|
8
|
+
import { TS_EXTRAS_MODULE_SOURCE } from "../_internal/module-source.js";
|
|
9
|
+
import { createTypedRule, getTypedRuleServices, } from "../_internal/typed-rule.js";
|
|
10
|
+
/**
|
|
11
|
+
* ESLint rule definition for `prefer-ts-extras-array-at`.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
15
|
+
*/
|
|
16
|
+
const preferTsExtrasArrayAtRule = createTypedRule({
|
|
17
|
+
create(context) {
|
|
18
|
+
const tsExtrasImports = collectDirectNamedValueImportsFromSource(context.sourceCode, TS_EXTRAS_MODULE_SOURCE);
|
|
19
|
+
const { checker, parserServices } = getTypedRuleServices(context);
|
|
20
|
+
const isArrayLikeExpression = createIsArrayLikeExpressionChecker({
|
|
21
|
+
checker,
|
|
22
|
+
parserServices,
|
|
23
|
+
telemetryFilePath: context.physicalFilename,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
'CallExpression[callee.type="MemberExpression"][callee.computed=false][callee.property.type="Identifier"][callee.property.name="at"]'(node) {
|
|
27
|
+
reportTsExtrasArrayMethodCall({
|
|
28
|
+
context,
|
|
29
|
+
importedName: "arrayAt",
|
|
30
|
+
imports: tsExtrasImports,
|
|
31
|
+
isArrayLikeExpression,
|
|
32
|
+
memberName: "at",
|
|
33
|
+
messageId: "preferTsExtrasArrayAt",
|
|
34
|
+
node,
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
defaultOptions: [],
|
|
40
|
+
meta: {
|
|
41
|
+
deprecated: false,
|
|
42
|
+
docs: {
|
|
43
|
+
description: "require ts-extras arrayAt over Array#at for stronger element inference.",
|
|
44
|
+
frozen: false,
|
|
45
|
+
recommended: false,
|
|
46
|
+
requiresTypeChecking: true,
|
|
47
|
+
typefestConfigs: [
|
|
48
|
+
"typefest.configs.strict",
|
|
49
|
+
"typefest.configs.all",
|
|
50
|
+
],
|
|
51
|
+
url: "https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-at",
|
|
52
|
+
},
|
|
53
|
+
fixable: "code",
|
|
54
|
+
messages: {
|
|
55
|
+
preferTsExtrasArrayAt: "Prefer `arrayAt` from `ts-extras` over `array.at(...)` for stronger element inference.",
|
|
56
|
+
},
|
|
57
|
+
schema: [],
|
|
58
|
+
type: "suggestion",
|
|
59
|
+
},
|
|
60
|
+
name: "prefer-ts-extras-array-at",
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Default export for the `prefer-ts-extras-array-at` rule module.
|
|
64
|
+
*/
|
|
65
|
+
export default preferTsExtrasArrayAtRule;
|
|
66
|
+
//# sourceMappingURL=prefer-ts-extras-array-at.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-at.js","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-at.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kCAAkC,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EACH,eAAe,EACf,oBAAoB,GACvB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,yBAAyB,GAC3B,eAAe,CAAC;IACZ,MAAM,CAAC,OAAO;QACV,MAAM,eAAe,GAAG,wCAAwC,CAC5D,OAAO,CAAC,UAAU,EAClB,uBAAuB,CAC1B,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;YAC7D,OAAO;YACP,cAAc;YACd,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;SAC9C,CAAC,CAAC;QAEH,OAAO;YACH,qIAAqI,CACjI,IAAI;gBAEJ,6BAA6B,CAAC;oBAC1B,OAAO;oBACP,YAAY,EAAE,SAAS;oBACvB,OAAO,EAAE,eAAe;oBACxB,qBAAqB;oBACrB,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,uBAAuB;oBAClC,IAAI;iBACP,CAAC,CAAC;YACP,CAAC;SACJ,CAAC;IACN,CAAC;IACD,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,WAAW,EACP,yEAAyE;YAC7E,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,oBAAoB,EAAE,IAAI;YAC1B,eAAe,EAAE;gBACb,yBAAyB;gBACzB,sBAAsB;aACzB;YACD,GAAG,EAAE,0FAA0F;SAClG;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACN,qBAAqB,EACjB,wFAAwF;SAC/F;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;KACrB;IACD,IAAI,EAAE,2BAA2B;CACpC,CAAC,CAAC;AAEP;;GAEG;AACH,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createTypedRule } from "../_internal/typed-rule.js";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition for `prefer-ts-extras-array-concat`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
7
|
+
*/
|
|
8
|
+
declare const preferTsExtrasArrayConcatRule: ReturnType<typeof createTypedRule>;
|
|
9
|
+
/**
|
|
10
|
+
* Default export for the `prefer-ts-extras-array-concat` rule module.
|
|
11
|
+
*/
|
|
12
|
+
export default preferTsExtrasArrayConcatRule;
|
|
13
|
+
//# sourceMappingURL=prefer-ts-extras-array-concat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-concat.d.ts","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-concat.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,QAAA,MAAM,6BAA6B,EAAE,UAAU,CAAC,OAAO,eAAe,CAuDhE,CAAC;AAEP;;GAEG;AACH,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* ESLint rule implementation for `prefer-ts-extras-array-concat`.
|
|
4
|
+
*/
|
|
5
|
+
import { createIsArrayLikeExpressionChecker } from "../_internal/array-like-expression.js";
|
|
6
|
+
import { reportTsExtrasArrayMethodCall } from "../_internal/array-method-call-rule.js";
|
|
7
|
+
import { collectDirectNamedValueImportsFromSource } from "../_internal/imported-value-symbols.js";
|
|
8
|
+
import { TS_EXTRAS_MODULE_SOURCE } from "../_internal/module-source.js";
|
|
9
|
+
import { createTypedRule, getTypedRuleServices, } from "../_internal/typed-rule.js";
|
|
10
|
+
/**
|
|
11
|
+
* ESLint rule definition for `prefer-ts-extras-array-concat`.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
15
|
+
*/
|
|
16
|
+
const preferTsExtrasArrayConcatRule = createTypedRule({
|
|
17
|
+
create(context) {
|
|
18
|
+
const tsExtrasImports = collectDirectNamedValueImportsFromSource(context.sourceCode, TS_EXTRAS_MODULE_SOURCE);
|
|
19
|
+
const { checker, parserServices } = getTypedRuleServices(context);
|
|
20
|
+
const isArrayLikeExpression = createIsArrayLikeExpressionChecker({
|
|
21
|
+
checker,
|
|
22
|
+
parserServices,
|
|
23
|
+
telemetryFilePath: context.physicalFilename,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
'CallExpression[callee.type="MemberExpression"][callee.computed=false][callee.property.type="Identifier"][callee.property.name="concat"]'(node) {
|
|
27
|
+
reportTsExtrasArrayMethodCall({
|
|
28
|
+
context,
|
|
29
|
+
importedName: "arrayConcat",
|
|
30
|
+
imports: tsExtrasImports,
|
|
31
|
+
isArrayLikeExpression,
|
|
32
|
+
memberName: "concat",
|
|
33
|
+
messageId: "preferTsExtrasArrayConcat",
|
|
34
|
+
node,
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
defaultOptions: [],
|
|
40
|
+
meta: {
|
|
41
|
+
deprecated: false,
|
|
42
|
+
docs: {
|
|
43
|
+
description: "require ts-extras arrayConcat over Array#concat for stronger tuple and readonly-array typing.",
|
|
44
|
+
frozen: false,
|
|
45
|
+
recommended: false,
|
|
46
|
+
requiresTypeChecking: true,
|
|
47
|
+
typefestConfigs: [
|
|
48
|
+
"typefest.configs.strict",
|
|
49
|
+
"typefest.configs.all",
|
|
50
|
+
],
|
|
51
|
+
url: "https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-concat",
|
|
52
|
+
},
|
|
53
|
+
fixable: "code",
|
|
54
|
+
messages: {
|
|
55
|
+
preferTsExtrasArrayConcat: "Prefer `arrayConcat` from `ts-extras` over `array.concat(...)` for stronger tuple and readonly-array typing.",
|
|
56
|
+
},
|
|
57
|
+
schema: [],
|
|
58
|
+
type: "suggestion",
|
|
59
|
+
},
|
|
60
|
+
name: "prefer-ts-extras-array-concat",
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Default export for the `prefer-ts-extras-array-concat` rule module.
|
|
64
|
+
*/
|
|
65
|
+
export default preferTsExtrasArrayConcatRule;
|
|
66
|
+
//# sourceMappingURL=prefer-ts-extras-array-concat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-concat.js","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-concat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kCAAkC,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EACH,eAAe,EACf,oBAAoB,GACvB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,6BAA6B,GAC/B,eAAe,CAAC;IACZ,MAAM,CAAC,OAAO;QACV,MAAM,eAAe,GAAG,wCAAwC,CAC5D,OAAO,CAAC,UAAU,EAClB,uBAAuB,CAC1B,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;YAC7D,OAAO;YACP,cAAc;YACd,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;SAC9C,CAAC,CAAC;QAEH,OAAO;YACH,yIAAyI,CACrI,IAAI;gBAEJ,6BAA6B,CAAC;oBAC1B,OAAO;oBACP,YAAY,EAAE,aAAa;oBAC3B,OAAO,EAAE,eAAe;oBACxB,qBAAqB;oBACrB,UAAU,EAAE,QAAQ;oBACpB,SAAS,EAAE,2BAA2B;oBACtC,IAAI;iBACP,CAAC,CAAC;YACP,CAAC;SACJ,CAAC;IACN,CAAC;IACD,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,WAAW,EACP,+FAA+F;YACnG,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,oBAAoB,EAAE,IAAI;YAC1B,eAAe,EAAE;gBACb,yBAAyB;gBACzB,sBAAsB;aACzB;YACD,GAAG,EAAE,8FAA8F;SACtG;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACN,yBAAyB,EACrB,8GAA8G;SACrH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;KACrB;IACD,IAAI,EAAE,+BAA+B;CACxC,CAAC,CAAC;AAEP;;GAEG;AACH,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createTypedRule } from "../_internal/typed-rule.js";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition for `prefer-ts-extras-array-find-last-index`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
7
|
+
*/
|
|
8
|
+
declare const preferTsExtrasArrayFindLastIndexRule: ReturnType<typeof createTypedRule>;
|
|
9
|
+
/**
|
|
10
|
+
* Default export for the `prefer-ts-extras-array-find-last-index` rule module.
|
|
11
|
+
*/
|
|
12
|
+
export default preferTsExtrasArrayFindLastIndexRule;
|
|
13
|
+
//# sourceMappingURL=prefer-ts-extras-array-find-last-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-find-last-index.d.ts","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-find-last-index.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,QAAA,MAAM,oCAAoC,EAAE,UAAU,CAAC,OAAO,eAAe,CAoDvE,CAAC;AAEP;;GAEG;AACH,eAAe,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* ESLint rule implementation for `prefer-ts-extras-array-find-last-index`.
|
|
4
|
+
*/
|
|
5
|
+
import { createIsArrayLikeExpressionChecker } from "../_internal/array-like-expression.js";
|
|
6
|
+
import { reportTsExtrasArrayMethodCall } from "../_internal/array-method-call-rule.js";
|
|
7
|
+
import { collectDirectNamedValueImportsFromSource } from "../_internal/imported-value-symbols.js";
|
|
8
|
+
import { TS_EXTRAS_MODULE_SOURCE } from "../_internal/module-source.js";
|
|
9
|
+
import { createTypedRule, getTypedRuleServices, } from "../_internal/typed-rule.js";
|
|
10
|
+
/**
|
|
11
|
+
* ESLint rule definition for `prefer-ts-extras-array-find-last-index`.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
15
|
+
*/
|
|
16
|
+
const preferTsExtrasArrayFindLastIndexRule = createTypedRule({
|
|
17
|
+
create(context) {
|
|
18
|
+
const tsExtrasImports = collectDirectNamedValueImportsFromSource(context.sourceCode, TS_EXTRAS_MODULE_SOURCE);
|
|
19
|
+
const { checker, parserServices } = getTypedRuleServices(context);
|
|
20
|
+
const isArrayLikeExpression = createIsArrayLikeExpressionChecker({
|
|
21
|
+
checker,
|
|
22
|
+
parserServices,
|
|
23
|
+
telemetryFilePath: context.physicalFilename,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
'CallExpression[callee.type="MemberExpression"][callee.computed=false][callee.property.type="Identifier"][callee.property.name="findLastIndex"]'(node) {
|
|
27
|
+
reportTsExtrasArrayMethodCall({
|
|
28
|
+
context,
|
|
29
|
+
importedName: "arrayFindLastIndex",
|
|
30
|
+
imports: tsExtrasImports,
|
|
31
|
+
isArrayLikeExpression,
|
|
32
|
+
memberName: "findLastIndex",
|
|
33
|
+
messageId: "preferTsExtrasArrayFindLastIndex",
|
|
34
|
+
node,
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
defaultOptions: [],
|
|
40
|
+
meta: {
|
|
41
|
+
deprecated: false,
|
|
42
|
+
docs: {
|
|
43
|
+
description: "require ts-extras arrayFindLastIndex over Array#findLastIndex for stronger predicate inference.",
|
|
44
|
+
frozen: false,
|
|
45
|
+
recommended: false,
|
|
46
|
+
requiresTypeChecking: true,
|
|
47
|
+
typefestConfigs: "typefest.configs.all",
|
|
48
|
+
url: "https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-find-last-index",
|
|
49
|
+
},
|
|
50
|
+
fixable: "code",
|
|
51
|
+
messages: {
|
|
52
|
+
preferTsExtrasArrayFindLastIndex: "Prefer `arrayFindLastIndex` from `ts-extras` over `array.findLastIndex(...)` for stronger predicate inference.",
|
|
53
|
+
},
|
|
54
|
+
schema: [],
|
|
55
|
+
type: "suggestion",
|
|
56
|
+
},
|
|
57
|
+
name: "prefer-ts-extras-array-find-last-index",
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Default export for the `prefer-ts-extras-array-find-last-index` rule module.
|
|
61
|
+
*/
|
|
62
|
+
export default preferTsExtrasArrayFindLastIndexRule;
|
|
63
|
+
//# sourceMappingURL=prefer-ts-extras-array-find-last-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-find-last-index.js","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-find-last-index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kCAAkC,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,wCAAwC,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EACH,eAAe,EACf,oBAAoB,GACvB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,oCAAoC,GACtC,eAAe,CAAC;IACZ,MAAM,CAAC,OAAO;QACV,MAAM,eAAe,GAAG,wCAAwC,CAC5D,OAAO,CAAC,UAAU,EAClB,uBAAuB,CAC1B,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;YAC7D,OAAO;YACP,cAAc;YACd,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;SAC9C,CAAC,CAAC;QAEH,OAAO;YACH,gJAAgJ,CAC5I,IAAI;gBAEJ,6BAA6B,CAAC;oBAC1B,OAAO;oBACP,YAAY,EAAE,oBAAoB;oBAClC,OAAO,EAAE,eAAe;oBACxB,qBAAqB;oBACrB,UAAU,EAAE,eAAe;oBAC3B,SAAS,EAAE,kCAAkC;oBAC7C,IAAI;iBACP,CAAC,CAAC;YACP,CAAC;SACJ,CAAC;IACN,CAAC;IACD,cAAc,EAAE,EAAE;IAClB,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,WAAW,EACP,iGAAiG;YACrG,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,oBAAoB,EAAE,IAAI;YAC1B,eAAe,EAAE,sBAAsB;YACvC,GAAG,EAAE,uGAAuG;SAC/G;QACD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE;YACN,gCAAgC,EAC5B,gHAAgH;SACvH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;KACrB;IACD,IAAI,EAAE,wCAAwC;CACjD,CAAC,CAAC;AAEP;;GAEG;AACH,eAAe,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createTypedRule } from "../_internal/typed-rule.js";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition for `prefer-ts-extras-array-find-last`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Defines metadata, diagnostics, and suggestions/fixes for this rule.
|
|
7
|
+
*/
|
|
8
|
+
declare const preferTsExtrasArrayFindLastRule: ReturnType<typeof createTypedRule>;
|
|
9
|
+
/**
|
|
10
|
+
* Default export for the `prefer-ts-extras-array-find-last` rule module.
|
|
11
|
+
*/
|
|
12
|
+
export default preferTsExtrasArrayFindLastRule;
|
|
13
|
+
//# sourceMappingURL=prefer-ts-extras-array-find-last.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer-ts-extras-array-find-last.d.ts","sourceRoot":"","sources":["../../src/rules/prefer-ts-extras-array-find-last.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,eAAe,EAElB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,QAAA,MAAM,+BAA+B,EAAE,UAAU,CAAC,OAAO,eAAe,CAuDlE,CAAC;AAEP;;GAEG;AACH,eAAe,+BAA+B,CAAC"}
|