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,50 @@
|
|
|
1
|
+
import { createMethodToFunctionCallFix, } from "./imported-value-symbols.js";
|
|
2
|
+
import { getIdentifierPropertyMemberCall } from "./member-call.js";
|
|
3
|
+
import { TS_EXTRAS_MODULE_SOURCE } from "./module-source.js";
|
|
4
|
+
import { reportResolvedAutofixOrSuggestionOutcome, resolveAutofixOrSuggestionOutcome, } from "./rule-reporting.js";
|
|
5
|
+
/**
|
|
6
|
+
* Match `<expr>.<memberName>(...)` and report a standardized ts-extras helper
|
|
7
|
+
* replacement when the receiver expression satisfies a caller-provided type
|
|
8
|
+
* predicate.
|
|
9
|
+
*/
|
|
10
|
+
export const reportTsExtrasTypedMemberCall = ({ canAutofix, context, importedName, imports, isMatchingObjectExpression, memberName, messageId, node, reportSuggestion, suggestionMessageId, }) => {
|
|
11
|
+
const memberCall = getIdentifierPropertyMemberCall({
|
|
12
|
+
memberName,
|
|
13
|
+
node,
|
|
14
|
+
});
|
|
15
|
+
if (memberCall === null) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!isMatchingObjectExpression(memberCall.callee.object)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const fix = createMethodToFunctionCallFix({
|
|
22
|
+
callNode: node,
|
|
23
|
+
context,
|
|
24
|
+
importedName,
|
|
25
|
+
imports,
|
|
26
|
+
sourceModuleName: TS_EXTRAS_MODULE_SOURCE,
|
|
27
|
+
});
|
|
28
|
+
const shouldAutofix = canAutofix?.(node) ?? true;
|
|
29
|
+
const outcome = resolveAutofixOrSuggestionOutcome({
|
|
30
|
+
canAutofix: shouldAutofix,
|
|
31
|
+
fix,
|
|
32
|
+
});
|
|
33
|
+
if (outcome.kind === "suggestion" && reportSuggestion !== undefined) {
|
|
34
|
+
reportSuggestion({
|
|
35
|
+
fix: outcome.fix,
|
|
36
|
+
messageId,
|
|
37
|
+
node,
|
|
38
|
+
suggestionMessageId: suggestionMessageId ?? messageId,
|
|
39
|
+
});
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
reportResolvedAutofixOrSuggestionOutcome({
|
|
43
|
+
context,
|
|
44
|
+
messageId,
|
|
45
|
+
node,
|
|
46
|
+
outcome,
|
|
47
|
+
suggestionMessageId: suggestionMessageId ?? messageId,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=typed-member-call-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-member-call-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-member-call-rule.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,6BAA6B,GAEhC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACH,wCAAwC,EACxC,iCAAiC,GACpC,MAAM,qBAAqB,CAAC;AAU7B;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAA2B,EACpE,UAAU,EACV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,0BAA0B,EAC1B,UAAU,EACV,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,mBAAmB,GAqBrB,EAAQ,EAAE;IACR,MAAM,UAAU,GAAG,+BAA+B,CAAC;QAC/C,UAAU;QACV,IAAI;KACP,CAAC,CAAC;IAEH,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,OAAO;IACX,CAAC;IAED,MAAM,GAAG,GAAG,6BAA6B,CAAC;QACtC,QAAQ,EAAE,IAAI;QACd,OAAO;QACP,YAAY;QACZ,OAAO;QACP,gBAAgB,EAAE,uBAAuB;KAC5C,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAEjD,MAAM,OAAO,GAAG,iCAAiC,CAAC;QAC9C,UAAU,EAAE,aAAa;QACzB,GAAG;KACN,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAClE,gBAAgB,CAAC;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS;YACT,IAAI;YACJ,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;SACxD,CAAC,CAAC;QAEH,OAAO;IACX,CAAC;IAED,wCAAwC,CAAC;QACrC,OAAO;QACP,SAAS;QACT,IAAI;QACJ,OAAO;QACP,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;KACxD,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Immutable typed-path counter view exposed to consumers. */
|
|
2
|
+
export type TypedPathCounters = Readonly<{
|
|
3
|
+
expensiveTypeCalls: number;
|
|
4
|
+
fallbackInvocations: number;
|
|
5
|
+
prefilterChecks: number;
|
|
6
|
+
prefilterHits: number;
|
|
7
|
+
}>;
|
|
8
|
+
/**
|
|
9
|
+
* Point-in-time telemetry snapshot grouped by file path.
|
|
10
|
+
*/
|
|
11
|
+
export type TypedPathTelemetrySnapshot = Readonly<{
|
|
12
|
+
files: readonly Readonly<{
|
|
13
|
+
counters: TypedPathCounters;
|
|
14
|
+
filePath: string;
|
|
15
|
+
}>[];
|
|
16
|
+
totals: Readonly<TypedPathCounters & {
|
|
17
|
+
averageExpensiveCallsPerFileInput: Readonly<{
|
|
18
|
+
expensiveTypeCalls: number;
|
|
19
|
+
fileCount: number;
|
|
20
|
+
}>;
|
|
21
|
+
fallbackInvocationRateInput: Readonly<{
|
|
22
|
+
expensiveTypeCalls: number;
|
|
23
|
+
fallbackInvocations: number;
|
|
24
|
+
}>;
|
|
25
|
+
fileCount: number;
|
|
26
|
+
prefilterHitRateInput: Readonly<{
|
|
27
|
+
prefilterChecks: number;
|
|
28
|
+
prefilterHits: number;
|
|
29
|
+
}>;
|
|
30
|
+
}>;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Record one prefilter evaluation.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Telemetry file key plus whether prefilter short-circuited.
|
|
36
|
+
*/
|
|
37
|
+
export declare const recordTypedPathPrefilterEvaluation: ({ filePath, prefilterHit, }: Readonly<{
|
|
38
|
+
filePath: null | string | undefined;
|
|
39
|
+
prefilterHit: boolean;
|
|
40
|
+
}>) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Record one expensive type-resolution invocation.
|
|
43
|
+
*/
|
|
44
|
+
export declare const recordTypedPathExpensiveTypeCall: (filePath: null | string | undefined) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Record one fallback invocation after constrained resolution was unavailable
|
|
47
|
+
* or failed.
|
|
48
|
+
*/
|
|
49
|
+
export declare const recordTypedPathFallbackInvocation: (filePath: null | string | undefined) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Read a deterministic telemetry snapshot for assertions and profiling.
|
|
52
|
+
*/
|
|
53
|
+
export declare const getTypedPathTelemetrySnapshot: () => TypedPathTelemetrySnapshot;
|
|
54
|
+
/**
|
|
55
|
+
* Clear all process-local telemetry counters.
|
|
56
|
+
*/
|
|
57
|
+
export declare const resetTypedPathTelemetry: () => void;
|
|
58
|
+
//# sourceMappingURL=typed-path-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-path-telemetry.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-path-telemetry.ts"],"names":[],"mappings":"AAUA,8DAA8D;AAC9D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAC9C,KAAK,EAAE,SAAS,QAAQ,CAAC;QACrB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC,EAAE,CAAC;IACL,MAAM,EAAE,QAAQ,CACZ,iBAAiB,GAAG;QAChB,iCAAiC,EAAE,QAAQ,CAAC;YACxC,kBAAkB,EAAE,MAAM,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,2BAA2B,EAAE,QAAQ,CAAC;YAClC,kBAAkB,EAAE,MAAM,CAAC;YAC3B,mBAAmB,EAAE,MAAM,CAAC;SAC/B,CAAC,CAAC;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,qBAAqB,EAAE,QAAQ,CAAC;YAC5B,eAAe,EAAE,MAAM,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC;SACzB,CAAC,CAAC;KACN,CACJ,CAAC;CACL,CAAC,CAAC;AAkDH;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAI,6BAGhD,QAAQ,CAAC;IACR,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC,KAAG,IAQJ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gCAAgC,GACzC,UAAU,IAAI,GAAG,MAAM,GAAG,SAAS,KACpC,IAIF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iCAAiC,GAC1C,UAAU,IAAI,GAAG,MAAM,GAAG,SAAS,KACpC,IAIF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,QAAO,0BAwDhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,IAE1C,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @remarks
|
|
3
|
+
* Counters are intentionally process-local and best-effort. They are designed
|
|
4
|
+
* for benchmarks/tests, not for user-facing diagnostics.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* Lightweight runtime telemetry for typed-rule hot paths.
|
|
8
|
+
*/
|
|
9
|
+
import { isDefined } from "ts-extras";
|
|
10
|
+
const UNKNOWN_FILE_PATH = "<unknown>";
|
|
11
|
+
const typedPathCountersByFilePath = new Map();
|
|
12
|
+
const createEmptyCounters = () => ({
|
|
13
|
+
expensiveTypeCalls: 0,
|
|
14
|
+
fallbackInvocations: 0,
|
|
15
|
+
prefilterChecks: 0,
|
|
16
|
+
prefilterHits: 0,
|
|
17
|
+
});
|
|
18
|
+
const normalizeTelemetryFilePath = (filePath) => {
|
|
19
|
+
if (typeof filePath !== "string") {
|
|
20
|
+
return UNKNOWN_FILE_PATH;
|
|
21
|
+
}
|
|
22
|
+
const trimmedPath = filePath.trim();
|
|
23
|
+
return trimmedPath.length > 0 ? trimmedPath : UNKNOWN_FILE_PATH;
|
|
24
|
+
};
|
|
25
|
+
const getCountersForFilePath = (filePath) => {
|
|
26
|
+
const normalizedFilePath = normalizeTelemetryFilePath(filePath);
|
|
27
|
+
const existingCounters = typedPathCountersByFilePath.get(normalizedFilePath);
|
|
28
|
+
if (isDefined(existingCounters)) {
|
|
29
|
+
return existingCounters;
|
|
30
|
+
}
|
|
31
|
+
const createdCounters = createEmptyCounters();
|
|
32
|
+
typedPathCountersByFilePath.set(normalizedFilePath, createdCounters);
|
|
33
|
+
return createdCounters;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Record one prefilter evaluation.
|
|
37
|
+
*
|
|
38
|
+
* @param options - Telemetry file key plus whether prefilter short-circuited.
|
|
39
|
+
*/
|
|
40
|
+
export const recordTypedPathPrefilterEvaluation = ({ filePath, prefilterHit, }) => {
|
|
41
|
+
const counters = getCountersForFilePath(filePath);
|
|
42
|
+
counters.prefilterChecks += 1;
|
|
43
|
+
if (prefilterHit) {
|
|
44
|
+
counters.prefilterHits += 1;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Record one expensive type-resolution invocation.
|
|
49
|
+
*/
|
|
50
|
+
export const recordTypedPathExpensiveTypeCall = (filePath) => {
|
|
51
|
+
const counters = getCountersForFilePath(filePath);
|
|
52
|
+
counters.expensiveTypeCalls += 1;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Record one fallback invocation after constrained resolution was unavailable
|
|
56
|
+
* or failed.
|
|
57
|
+
*/
|
|
58
|
+
export const recordTypedPathFallbackInvocation = (filePath) => {
|
|
59
|
+
const counters = getCountersForFilePath(filePath);
|
|
60
|
+
counters.fallbackInvocations += 1;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Read a deterministic telemetry snapshot for assertions and profiling.
|
|
64
|
+
*/
|
|
65
|
+
export const getTypedPathTelemetrySnapshot = () => {
|
|
66
|
+
const sortedEntries = [...typedPathCountersByFilePath.entries()];
|
|
67
|
+
sortedEntries.sort(([leftPath], [rightPath]) => leftPath.localeCompare(rightPath));
|
|
68
|
+
const files = [];
|
|
69
|
+
const totals = createEmptyCounters();
|
|
70
|
+
for (const [filePath, counters] of sortedEntries) {
|
|
71
|
+
const immutableCounters = Object.freeze({
|
|
72
|
+
expensiveTypeCalls: counters.expensiveTypeCalls,
|
|
73
|
+
fallbackInvocations: counters.fallbackInvocations,
|
|
74
|
+
prefilterChecks: counters.prefilterChecks,
|
|
75
|
+
prefilterHits: counters.prefilterHits,
|
|
76
|
+
});
|
|
77
|
+
files.push(Object.freeze({
|
|
78
|
+
counters: immutableCounters,
|
|
79
|
+
filePath,
|
|
80
|
+
}));
|
|
81
|
+
totals.expensiveTypeCalls += immutableCounters.expensiveTypeCalls;
|
|
82
|
+
totals.fallbackInvocations += immutableCounters.fallbackInvocations;
|
|
83
|
+
totals.prefilterChecks += immutableCounters.prefilterChecks;
|
|
84
|
+
totals.prefilterHits += immutableCounters.prefilterHits;
|
|
85
|
+
}
|
|
86
|
+
const frozenFiles = Object.freeze([...files]);
|
|
87
|
+
const fileCount = frozenFiles.length;
|
|
88
|
+
return {
|
|
89
|
+
files: frozenFiles,
|
|
90
|
+
totals: Object.freeze({
|
|
91
|
+
...totals,
|
|
92
|
+
averageExpensiveCallsPerFileInput: Object.freeze({
|
|
93
|
+
expensiveTypeCalls: totals.expensiveTypeCalls,
|
|
94
|
+
fileCount,
|
|
95
|
+
}),
|
|
96
|
+
fallbackInvocationRateInput: Object.freeze({
|
|
97
|
+
expensiveTypeCalls: totals.expensiveTypeCalls,
|
|
98
|
+
fallbackInvocations: totals.fallbackInvocations,
|
|
99
|
+
}),
|
|
100
|
+
fileCount,
|
|
101
|
+
prefilterHitRateInput: Object.freeze({
|
|
102
|
+
prefilterChecks: totals.prefilterChecks,
|
|
103
|
+
prefilterHits: totals.prefilterHits,
|
|
104
|
+
}),
|
|
105
|
+
}),
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Clear all process-local telemetry counters.
|
|
110
|
+
*/
|
|
111
|
+
export const resetTypedPathTelemetry = () => {
|
|
112
|
+
typedPathCountersByFilePath.clear();
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=typed-path-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-path-telemetry.js","sourceRoot":"","sources":["../../src/_internal/typed-path-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Internal shared utilities used by eslint-plugin-typefest rule modules and
|
|
4
|
+
* plugin wiring.
|
|
5
|
+
*/
|
|
6
|
+
import type { Except, UnknownArray } from "type-fest";
|
|
7
|
+
import type ts from "typescript";
|
|
8
|
+
import { ESLintUtils, type TSESLint, type TSESTree } from "@typescript-eslint/utils";
|
|
9
|
+
import type { TypefestConfigReference } from "./typefest-config-references.js";
|
|
10
|
+
/**
|
|
11
|
+
* Parser services and type checker bundle used by typed rules.
|
|
12
|
+
*/
|
|
13
|
+
export type TypedRuleServices = {
|
|
14
|
+
checker: ts.TypeChecker;
|
|
15
|
+
parserServices: ReturnType<typeof ESLintUtils.getParserServices>;
|
|
16
|
+
};
|
|
17
|
+
/** Shared typed-rule context contract used by helper utilities. */
|
|
18
|
+
type TypedRuleContext = Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
19
|
+
export type { TypedRuleContext };
|
|
20
|
+
type TypefestRuleCreator = ReturnType<typeof ESLintUtils.RuleCreator<TypefestRuleInputDocs>>;
|
|
21
|
+
/**
|
|
22
|
+
* Plugin-specific metadata extensions for `meta.docs`.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* `eslint-plugin/require-meta-docs-recommended` expects `meta.docs.recommended`
|
|
26
|
+
* to be boolean. Preset membership is tracked separately via
|
|
27
|
+
* `meta.docs.typefestConfigs`.
|
|
28
|
+
*/
|
|
29
|
+
type TypefestRuleDocs = {
|
|
30
|
+
recommended?: boolean;
|
|
31
|
+
requiresTypeChecking?: boolean;
|
|
32
|
+
ruleCatalogId: string;
|
|
33
|
+
ruleId?: string;
|
|
34
|
+
ruleNumber?: number;
|
|
35
|
+
typefestConfigs?: readonly TypefestConfigReference[] | TypefestConfigReference;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Rule authoring metadata contract accepted by `RuleCreator`.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* `ruleCatalogId` is injected centrally by `createTypedRule`, so authored rule
|
|
42
|
+
* modules are not required to provide it.
|
|
43
|
+
*/
|
|
44
|
+
type TypefestRuleInputDocs = Except<TypefestRuleDocs, "ruleCatalogId"> & {
|
|
45
|
+
ruleCatalogId?: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Rule-creator wrapper used by all plugin rules.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* This wrapper automatically registers per-program plugin settings.
|
|
52
|
+
*
|
|
53
|
+
* @param ruleDefinition - Rule module definition passed to
|
|
54
|
+
* `ESLintUtils.RuleCreator`.
|
|
55
|
+
*
|
|
56
|
+
* @returns Rule module factory output that auto-registers program settings and
|
|
57
|
+
* preserves the authored rule contract.
|
|
58
|
+
*/
|
|
59
|
+
export declare const createTypedRule: TypefestRuleCreator;
|
|
60
|
+
/**
|
|
61
|
+
* Retrieve parser services and type checker for typed rules.
|
|
62
|
+
*
|
|
63
|
+
* @param context - Rule context from the current lint evaluation.
|
|
64
|
+
*
|
|
65
|
+
* @returns Parser services and type checker references bound to the current
|
|
66
|
+
* program.
|
|
67
|
+
*
|
|
68
|
+
* @throws Throws when `parserServices.program` is unavailable, which indicates
|
|
69
|
+
* the current lint run is not configured for type-aware analysis.
|
|
70
|
+
*/
|
|
71
|
+
export declare const getTypedRuleServices: (context: TypedRuleContext) => TypedRuleServices;
|
|
72
|
+
/**
|
|
73
|
+
* Determine whether the current lint context has full type information.
|
|
74
|
+
*
|
|
75
|
+
* @param context - Rule context from the current lint evaluation.
|
|
76
|
+
*
|
|
77
|
+
* @returns `true` when parser services and `program` are available.
|
|
78
|
+
*/
|
|
79
|
+
export declare const hasTypeServices: (context: TypedRuleContext) => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Retrieve typed services when available, otherwise return `undefined`.
|
|
82
|
+
*
|
|
83
|
+
* @param context - Rule context from the current lint evaluation.
|
|
84
|
+
*
|
|
85
|
+
* @returns Typed services when parser services include a TypeScript program.
|
|
86
|
+
*/
|
|
87
|
+
export declare const getTypedRuleServicesOrUndefined: (context: TypedRuleContext) => TypedRuleServices | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Determine whether one TypeScript type is assignable to another.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* Uses `checker.isTypeAssignableTo` when available and falls back to strict
|
|
93
|
+
* reference equality if the checker API is unavailable or throws.
|
|
94
|
+
*
|
|
95
|
+
* @param checker - TypeScript type checker.
|
|
96
|
+
* @param sourceType - Candidate source type.
|
|
97
|
+
* @param targetType - Candidate target type.
|
|
98
|
+
*
|
|
99
|
+
* @returns `true` when assignable; otherwise `false`.
|
|
100
|
+
*/
|
|
101
|
+
export declare const isTypeAssignableTo: (checker: Readonly<ts.TypeChecker>, sourceType: Readonly<ts.Type>, targetType: Readonly<ts.Type>) => boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve the type of a signature parameter by index.
|
|
104
|
+
*
|
|
105
|
+
* @param options - Signature parameter lookup options.
|
|
106
|
+
*
|
|
107
|
+
* - `checker`: TypeScript type checker.
|
|
108
|
+
* - `index`: Parameter index in the signature.
|
|
109
|
+
* - `location`: Source location used for contextual type lookup.
|
|
110
|
+
* - `signature`: Candidate call signature.
|
|
111
|
+
*
|
|
112
|
+
* @returns Parameter type when available; otherwise `undefined`.
|
|
113
|
+
*/
|
|
114
|
+
export declare const getSignatureParameterTypeAt: (options: Readonly<{
|
|
115
|
+
checker: ts.TypeChecker;
|
|
116
|
+
index: number;
|
|
117
|
+
location: ts.Node;
|
|
118
|
+
signature: null | ts.Signature | undefined;
|
|
119
|
+
}>) => ts.Type | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Determine whether an expression references an unshadowed global identifier.
|
|
122
|
+
*
|
|
123
|
+
* @param context - Rule context used for scope resolution.
|
|
124
|
+
* @param expression - Expression to inspect.
|
|
125
|
+
* @param identifierName - Expected identifier name.
|
|
126
|
+
*
|
|
127
|
+
* @returns `true` when the expression is an Identifier with the expected name
|
|
128
|
+
* and resolves to the global binding.
|
|
129
|
+
*/
|
|
130
|
+
export declare const isGlobalIdentifierNamed: <MessageIds extends string, Options extends Readonly<UnknownArray>>(context: Readonly<TSESLint.RuleContext<MessageIds, Options>>, expression: Readonly<TSESTree.Expression>, identifierName: string) => expression is TSESTree.Identifier;
|
|
131
|
+
/**
|
|
132
|
+
* Determine whether an expression references the global `undefined` binding
|
|
133
|
+
* (not a shadowed user-defined symbol).
|
|
134
|
+
*
|
|
135
|
+
* @param context - Rule context used for scope resolution.
|
|
136
|
+
* @param expression - Expression to inspect.
|
|
137
|
+
*
|
|
138
|
+
* @returns `true` when the expression is an Identifier named `undefined` that
|
|
139
|
+
* resolves to the global binding.
|
|
140
|
+
*/
|
|
141
|
+
export declare const isGlobalUndefinedIdentifier: <MessageIds extends string, Options extends Readonly<UnknownArray>>(context: Readonly<TSESLint.RuleContext<MessageIds, Options>>, expression: Readonly<TSESTree.Expression>) => expression is TSESTree.Identifier;
|
|
142
|
+
//# sourceMappingURL=typed-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { ESLintUtils, } from "@typescript-eslint/utils";
|
|
2
|
+
import { assertDefined, isDefined } from "ts-extras";
|
|
3
|
+
import { registerProgramSettingsForContext } from "./plugin-settings.js";
|
|
4
|
+
import { getRuleCatalogEntryForRuleNameOrNull } from "./rule-catalog.js";
|
|
5
|
+
import { createRuleDocsUrl } from "./rule-docs-url.js";
|
|
6
|
+
import { safeTypeOperation } from "./safe-type-operation.js";
|
|
7
|
+
import { getScopeFromContextSourceCode } from "./scope-resolution.js";
|
|
8
|
+
import { getVariableInScopeChain } from "./scope-variable.js";
|
|
9
|
+
import { getTypeCheckerIsTypeAssignableToResult } from "./type-checker-compat.js";
|
|
10
|
+
/**
|
|
11
|
+
* Current rule-catalog revision identifier stamped into `meta.docs`.
|
|
12
|
+
*/
|
|
13
|
+
const RULE_CATALOG_ID = "R002";
|
|
14
|
+
/**
|
|
15
|
+
* Rule-creator wrapper used by all plugin rules.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* This wrapper automatically registers per-program plugin settings.
|
|
19
|
+
*
|
|
20
|
+
* @param ruleDefinition - Rule module definition passed to
|
|
21
|
+
* `ESLintUtils.RuleCreator`.
|
|
22
|
+
*
|
|
23
|
+
* @returns Rule module factory output that auto-registers program settings and
|
|
24
|
+
* preserves the authored rule contract.
|
|
25
|
+
*/
|
|
26
|
+
export const createTypedRule = (ruleDefinition) => {
|
|
27
|
+
const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(ruleDefinition.name);
|
|
28
|
+
const createdRule = ESLintUtils.RuleCreator.withoutDocs(ruleDefinition);
|
|
29
|
+
const ruleDocs = createdRule.meta.docs;
|
|
30
|
+
assertDefined(ruleDocs);
|
|
31
|
+
const canonicalDocsUrl = createRuleDocsUrl(ruleDefinition.name);
|
|
32
|
+
if (typeof ruleDocs.url === "string" && ruleDocs.url !== canonicalDocsUrl) {
|
|
33
|
+
throw new TypeError(`Rule '${ruleDefinition.name}' has non-canonical docs.url '${ruleDocs.url}'. Expected '${canonicalDocsUrl}'.`);
|
|
34
|
+
}
|
|
35
|
+
if (ruleDefinition.name.startsWith("prefer-") && catalogEntry === null) {
|
|
36
|
+
throw new TypeError(`Rule '${ruleDefinition.name}' is missing from the stable rule catalog.`);
|
|
37
|
+
}
|
|
38
|
+
const docsWithCatalog = catalogEntry === null
|
|
39
|
+
? {
|
|
40
|
+
...ruleDocs,
|
|
41
|
+
ruleCatalogId: RULE_CATALOG_ID,
|
|
42
|
+
url: canonicalDocsUrl,
|
|
43
|
+
}
|
|
44
|
+
: {
|
|
45
|
+
...ruleDocs,
|
|
46
|
+
ruleCatalogId: RULE_CATALOG_ID,
|
|
47
|
+
ruleId: catalogEntry.ruleId,
|
|
48
|
+
ruleNumber: catalogEntry.ruleNumber,
|
|
49
|
+
url: canonicalDocsUrl,
|
|
50
|
+
};
|
|
51
|
+
const metaDefaultOptions = createdRule.meta.defaultOptions;
|
|
52
|
+
return {
|
|
53
|
+
...createdRule,
|
|
54
|
+
create(context) {
|
|
55
|
+
registerProgramSettingsForContext(context);
|
|
56
|
+
return createdRule.create(context);
|
|
57
|
+
},
|
|
58
|
+
meta: {
|
|
59
|
+
...createdRule.meta,
|
|
60
|
+
...(isDefined(metaDefaultOptions)
|
|
61
|
+
? { defaultOptions: metaDefaultOptions }
|
|
62
|
+
: {}),
|
|
63
|
+
docs: docsWithCatalog,
|
|
64
|
+
},
|
|
65
|
+
name: ruleDefinition.name,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Retrieve parser services and type checker for typed rules.
|
|
70
|
+
*
|
|
71
|
+
* @param context - Rule context from the current lint evaluation.
|
|
72
|
+
*
|
|
73
|
+
* @returns Parser services and type checker references bound to the current
|
|
74
|
+
* program.
|
|
75
|
+
*
|
|
76
|
+
* @throws Throws when `parserServices.program` is unavailable, which indicates
|
|
77
|
+
* the current lint run is not configured for type-aware analysis.
|
|
78
|
+
*/
|
|
79
|
+
export const getTypedRuleServices = (context) => {
|
|
80
|
+
const parserServices = ESLintUtils.getParserServices(context, true);
|
|
81
|
+
const program = parserServices.program;
|
|
82
|
+
if (program === null) {
|
|
83
|
+
throw new Error("Typed rule requires parserServices.program; ensure projectService is enabled for this lint run.");
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
checker: program.getTypeChecker(),
|
|
87
|
+
parserServices,
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Determine whether the current lint context has full type information.
|
|
92
|
+
*
|
|
93
|
+
* @param context - Rule context from the current lint evaluation.
|
|
94
|
+
*
|
|
95
|
+
* @returns `true` when parser services and `program` are available.
|
|
96
|
+
*/
|
|
97
|
+
export const hasTypeServices = (context) => {
|
|
98
|
+
const parserServicesResult = safeTypeOperation({
|
|
99
|
+
operation: () => ESLintUtils.getParserServices(context, true),
|
|
100
|
+
reason: "typed-rule-services-check-failed",
|
|
101
|
+
});
|
|
102
|
+
return (parserServicesResult.ok && parserServicesResult.value.program !== null);
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Retrieve typed services when available, otherwise return `undefined`.
|
|
106
|
+
*
|
|
107
|
+
* @param context - Rule context from the current lint evaluation.
|
|
108
|
+
*
|
|
109
|
+
* @returns Typed services when parser services include a TypeScript program.
|
|
110
|
+
*/
|
|
111
|
+
export const getTypedRuleServicesOrUndefined = (context) => hasTypeServices(context) ? getTypedRuleServices(context) : undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Determine whether one TypeScript type is assignable to another.
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* Uses `checker.isTypeAssignableTo` when available and falls back to strict
|
|
117
|
+
* reference equality if the checker API is unavailable or throws.
|
|
118
|
+
*
|
|
119
|
+
* @param checker - TypeScript type checker.
|
|
120
|
+
* @param sourceType - Candidate source type.
|
|
121
|
+
* @param targetType - Candidate target type.
|
|
122
|
+
*
|
|
123
|
+
* @returns `true` when assignable; otherwise `false`.
|
|
124
|
+
*/
|
|
125
|
+
export const isTypeAssignableTo = (checker, sourceType, targetType) => {
|
|
126
|
+
const result = safeTypeOperation({
|
|
127
|
+
operation: () => getTypeCheckerIsTypeAssignableToResult(checker, sourceType, targetType),
|
|
128
|
+
reason: "type-assignability-check-failed",
|
|
129
|
+
});
|
|
130
|
+
if (!result.ok || typeof result.value !== "boolean") {
|
|
131
|
+
return sourceType === targetType;
|
|
132
|
+
}
|
|
133
|
+
return result.value;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Resolve the type of a signature parameter by index.
|
|
137
|
+
*
|
|
138
|
+
* @param options - Signature parameter lookup options.
|
|
139
|
+
*
|
|
140
|
+
* - `checker`: TypeScript type checker.
|
|
141
|
+
* - `index`: Parameter index in the signature.
|
|
142
|
+
* - `location`: Source location used for contextual type lookup.
|
|
143
|
+
* - `signature`: Candidate call signature.
|
|
144
|
+
*
|
|
145
|
+
* @returns Parameter type when available; otherwise `undefined`.
|
|
146
|
+
*/
|
|
147
|
+
export const getSignatureParameterTypeAt = (options) => {
|
|
148
|
+
const { checker, index, location, signature } = options;
|
|
149
|
+
const symbol = signature?.parameters[index];
|
|
150
|
+
if (!symbol) {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
return checker.getTypeOfSymbolAtLocation(symbol, location);
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* Determine whether an expression references an unshadowed global identifier.
|
|
157
|
+
*
|
|
158
|
+
* @param context - Rule context used for scope resolution.
|
|
159
|
+
* @param expression - Expression to inspect.
|
|
160
|
+
* @param identifierName - Expected identifier name.
|
|
161
|
+
*
|
|
162
|
+
* @returns `true` when the expression is an Identifier with the expected name
|
|
163
|
+
* and resolves to the global binding.
|
|
164
|
+
*/
|
|
165
|
+
export const isGlobalIdentifierNamed = (context, expression, identifierName) => {
|
|
166
|
+
if (expression.type !== "Identifier" ||
|
|
167
|
+
expression.name !== identifierName) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
const result = safeTypeOperation({
|
|
171
|
+
operation: () => {
|
|
172
|
+
const initialScope = getScopeFromContextSourceCode(context, expression);
|
|
173
|
+
if (initialScope === null) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
const variable = getVariableInScopeChain(initialScope, identifierName);
|
|
177
|
+
return variable === null || variable.defs.length === 0;
|
|
178
|
+
},
|
|
179
|
+
reason: "scope-resolution-failed",
|
|
180
|
+
});
|
|
181
|
+
if (!result.ok) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
return result.value;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Determine whether an expression references the global `undefined` binding
|
|
188
|
+
* (not a shadowed user-defined symbol).
|
|
189
|
+
*
|
|
190
|
+
* @param context - Rule context used for scope resolution.
|
|
191
|
+
* @param expression - Expression to inspect.
|
|
192
|
+
*
|
|
193
|
+
* @returns `true` when the expression is an Identifier named `undefined` that
|
|
194
|
+
* resolves to the global binding.
|
|
195
|
+
*/
|
|
196
|
+
export const isGlobalUndefinedIdentifier = (context, expression) => isGlobalIdentifierNamed(context, expression, "undefined");
|
|
197
|
+
//# sourceMappingURL=typed-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Canonical flat-config preset keys exposed through `plugin.configs`. */
|
|
2
|
+
export declare const typefestConfigNames: readonly ["all", "minimal", "recommended", "recommended-type-checked", "strict", "ts-extras/type-guards", "type-fest/types"];
|
|
3
|
+
/** Metadata contract shared across preset wiring, docs, and README rendering. */
|
|
4
|
+
export type TypefestConfigMetadata = Readonly<{
|
|
5
|
+
icon: string;
|
|
6
|
+
presetName: `typefest:${TypefestConfigName}`;
|
|
7
|
+
readmeOrder: number;
|
|
8
|
+
requiresTypeChecking: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
/** Canonical flat-config preset key type exposed through `plugin.configs`. */
|
|
11
|
+
export type TypefestConfigName = (typeof typefestConfigNames)[number];
|
|
12
|
+
/**
|
|
13
|
+
* Canonical metadata for every exported `typefest` preset key.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* This is the single source of truth for:
|
|
17
|
+
*
|
|
18
|
+
* - Preset display order in generated README tables,
|
|
19
|
+
* - Preset icon mapping,
|
|
20
|
+
* - Preset runtime flat-config names, and
|
|
21
|
+
* - Preset type-checking requirements.
|
|
22
|
+
*/
|
|
23
|
+
export declare const typefestConfigMetadataByName: Readonly<Record<TypefestConfigName, TypefestConfigMetadata>>;
|
|
24
|
+
/** Stable README legend/rendering order for preset icons. */
|
|
25
|
+
export declare const typefestConfigNamesByReadmeOrder: readonly TypefestConfigName[];
|
|
26
|
+
/** Metadata references supported in `meta.docs.recommended`. */
|
|
27
|
+
export declare const typefestConfigReferenceToName: Readonly<{
|
|
28
|
+
"typefest.configs.all": "all";
|
|
29
|
+
"typefest.configs.minimal": "minimal";
|
|
30
|
+
"typefest.configs.recommended": "recommended";
|
|
31
|
+
"typefest.configs.recommended-type-checked": "recommended-type-checked";
|
|
32
|
+
"typefest.configs.strict": "strict";
|
|
33
|
+
"typefest.configs.ts-extras/type-guards": "ts-extras/type-guards";
|
|
34
|
+
"typefest.configs.type-fest/types": "type-fest/types";
|
|
35
|
+
'typefest.configs["recommended-type-checked"]': "recommended-type-checked";
|
|
36
|
+
'typefest.configs["ts-extras/type-guards"]': "ts-extras/type-guards";
|
|
37
|
+
'typefest.configs["type-fest/types"]': "type-fest/types";
|
|
38
|
+
}>;
|
|
39
|
+
/** Fully-qualified preset reference type accepted in docs metadata. */
|
|
40
|
+
export type TypefestConfigReference = keyof typeof typefestConfigReferenceToName;
|
|
41
|
+
/**
|
|
42
|
+
* Check whether a string is a supported `meta.docs.recommended` reference.
|
|
43
|
+
*/
|
|
44
|
+
export declare const isTypefestConfigReference: (value: string) => value is TypefestConfigReference;
|
|
45
|
+
//# sourceMappingURL=typefest-config-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typefest-config-references.d.ts","sourceRoot":"","sources":["../../src/_internal/typefest-config-references.ts"],"names":[],"mappings":"AAMA,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,8HAQtB,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,kBAAkB,EAAE,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAC/C,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CA4CrD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,gCAAgC,EAAE,SAAS,kBAAkB,EAQzE,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC;IACjD,sBAAsB,EAAE,KAAK,CAAC;IAC9B,0BAA0B,EAAE,SAAS,CAAC;IACtC,8BAA8B,EAAE,aAAa,CAAC;IAC9C,2CAA2C,EAAE,0BAA0B,CAAC;IACxE,yBAAyB,EAAE,QAAQ,CAAC;IACpC,wCAAwC,EAAE,uBAAuB,CAAC;IAClE,kCAAkC,EAAE,iBAAiB,CAAC;IACtD,8CAA8C,EAAE,0BAA0B,CAAC;IAC3E,2CAA2C,EAAE,uBAAuB,CAAC;IACrE,qCAAqC,EAAE,iBAAiB,CAAC;CAC5D,CAWA,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,uBAAuB,GAC/B,MAAM,OAAO,6BAA6B,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAClC,OAAO,MAAM,KACd,KAAK,IAAI,uBAC0C,CAAC"}
|