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,316 @@
|
|
|
1
|
+
import { keyIn } from "ts-extras";
|
|
2
|
+
import { getParentNode } from "./ast-node.js";
|
|
3
|
+
import { isAnyLinkedStructureNodeMatching } from "./cycle-safe-linked-search.js";
|
|
4
|
+
import { collectNamedImportLocalNamesByImportedNameFromSource, collectNamedImportSpecifierBindingsFromSource, collectNamespaceImportLocalNamesFromSourceModule, } from "./import-analysis.js";
|
|
5
|
+
import { createImportAwareFixes } from "./import-aware-fixes.js";
|
|
6
|
+
import { resolveImportInsertionDecisionForReportFix, } from "./import-fix-coordinator.js";
|
|
7
|
+
import { createImportInsertionFix } from "./import-insertion.js";
|
|
8
|
+
import { TYPE_FEST_MODULE_SOURCE } from "./module-source.js";
|
|
9
|
+
import { setContainsValue } from "./set-membership.js";
|
|
10
|
+
/** Utility wrapper used to preserve explicit readonly semantics in fixes. */
|
|
11
|
+
const READONLY_UTILITY_TYPE_NAME = "Readonly";
|
|
12
|
+
/**
|
|
13
|
+
* Container type references that semantically encode readonly wrappers.
|
|
14
|
+
*/
|
|
15
|
+
const READONLY_CONTAINER_TYPE_NAMES = new Set([
|
|
16
|
+
"ReadonlyArray",
|
|
17
|
+
"ReadonlyMap",
|
|
18
|
+
"ReadonlySet",
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Determine whether a node exposes an optional `typeParameters` property.
|
|
22
|
+
*/
|
|
23
|
+
const hasOptionalTypeParametersProperty = (node) => keyIn(node, "typeParameters");
|
|
24
|
+
/**
|
|
25
|
+
* Collects imported canonical type alias names that should be replaced by
|
|
26
|
+
* preferred type-fest utility names.
|
|
27
|
+
*
|
|
28
|
+
* @param sourceCode - Source code object for the current file.
|
|
29
|
+
* @param replacementsByImportedName - Mapping from imported symbol names to
|
|
30
|
+
* preferred replacement names.
|
|
31
|
+
*
|
|
32
|
+
* @returns Map keyed by canonical imported alias name with replacement
|
|
33
|
+
* metadata.
|
|
34
|
+
*/
|
|
35
|
+
export const collectImportedTypeAliasMatches = (sourceCode, replacementsByImportedName) => {
|
|
36
|
+
const aliasMatches = new Map();
|
|
37
|
+
for (const binding of collectNamedImportSpecifierBindingsFromSource({
|
|
38
|
+
sourceCode,
|
|
39
|
+
})) {
|
|
40
|
+
if (binding.localName !== binding.importedName) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const replacementName = replacementsByImportedName[binding.importedName];
|
|
44
|
+
if (typeof replacementName !== "string" ||
|
|
45
|
+
replacementName.length === 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const sourceValue = typeof binding.declaration.source.value === "string"
|
|
49
|
+
? binding.declaration.source.value
|
|
50
|
+
: "";
|
|
51
|
+
aliasMatches.set(binding.importedName, {
|
|
52
|
+
importedName: binding.importedName,
|
|
53
|
+
replacementName,
|
|
54
|
+
sourceValue,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return aliasMatches;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Collect direct (non-renamed) named imports for a specific source module.
|
|
61
|
+
*
|
|
62
|
+
* @param sourceCode - Source code object for the current file.
|
|
63
|
+
* @param expectedSourceValue - Module source string to match.
|
|
64
|
+
*
|
|
65
|
+
* @returns Set of imported identifier names.
|
|
66
|
+
*/
|
|
67
|
+
export const collectDirectNamedImportsFromSource = (sourceCode, expectedSourceValue) => {
|
|
68
|
+
const localNamesByImportedName = collectNamedImportLocalNamesByImportedNameFromSource({
|
|
69
|
+
sourceCode,
|
|
70
|
+
sourceModuleName: expectedSourceValue,
|
|
71
|
+
});
|
|
72
|
+
const namedImports = new Set();
|
|
73
|
+
for (const [importedName, localNames] of localNamesByImportedName) {
|
|
74
|
+
if (!setContainsValue(localNames, importedName)) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
namedImports.add(importedName);
|
|
78
|
+
}
|
|
79
|
+
return namedImports;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Collect local identifier names for a specific named import from a selected
|
|
83
|
+
* module source.
|
|
84
|
+
*
|
|
85
|
+
* @param sourceCode - Source code object for the current file.
|
|
86
|
+
* @param expectedSourceValue - Module source string to match.
|
|
87
|
+
* @param expectedImportedName - Imported symbol name to match.
|
|
88
|
+
*
|
|
89
|
+
* @returns Set of local identifier names (including aliased locals).
|
|
90
|
+
*/
|
|
91
|
+
export const collectNamedImportLocalNamesFromSource = (sourceCode, expectedSourceValue, expectedImportedName) => new Set(collectNamedImportLocalNamesByImportedNameFromSource({
|
|
92
|
+
sourceCode,
|
|
93
|
+
sourceModuleName: expectedSourceValue,
|
|
94
|
+
}).get(expectedImportedName));
|
|
95
|
+
/**
|
|
96
|
+
* Collect local identifier names for namespace imports from a selected module
|
|
97
|
+
* source.
|
|
98
|
+
*
|
|
99
|
+
* @param sourceCode - Source code object for the current file.
|
|
100
|
+
* @param expectedSourceValue - Module source string to match.
|
|
101
|
+
*
|
|
102
|
+
* @returns Set of namespace import local names.
|
|
103
|
+
*/
|
|
104
|
+
export const collectNamespaceImportLocalNamesFromSource = (sourceCode, expectedSourceValue) => collectNamespaceImportLocalNamesFromSourceModule(sourceCode, expectedSourceValue);
|
|
105
|
+
/**
|
|
106
|
+
* Builds an import-insertion fix for missing named type replacements.
|
|
107
|
+
*
|
|
108
|
+
* @param options - Fixer context and replacement import metadata.
|
|
109
|
+
*
|
|
110
|
+
* @returns Import insertion fix when a safe insertion point is found; otherwise
|
|
111
|
+
* `null`.
|
|
112
|
+
*/
|
|
113
|
+
const getInsertionFixForMissingNamedTypeImport = ({ fixer, node, replacementName, sourceModuleName, }) => {
|
|
114
|
+
const importDeclarationText = `import type { ${replacementName} } from "${sourceModuleName}";`;
|
|
115
|
+
return createImportInsertionFix({
|
|
116
|
+
fixer,
|
|
117
|
+
importDeclarationText,
|
|
118
|
+
moduleSpecifierHint: sourceModuleName,
|
|
119
|
+
referenceNode: node,
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Checks whether an ancestor node declares a type parameter with a specific
|
|
124
|
+
* name.
|
|
125
|
+
*
|
|
126
|
+
* @param ancestor - Ancestor node to inspect.
|
|
127
|
+
* @param parameterName - Type parameter name to detect.
|
|
128
|
+
*
|
|
129
|
+
* @returns `true` when the ancestor declares a matching type parameter.
|
|
130
|
+
*/
|
|
131
|
+
const ancestorDefinesTypeParameterNamed = (ancestor, parameterName) => {
|
|
132
|
+
if (!hasOptionalTypeParametersProperty(ancestor)) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
const typeParameterDeclaration = ancestor.typeParameters;
|
|
136
|
+
if (!typeParameterDeclaration) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return typeParameterDeclaration.params.some((parameter) => parameter.name.name === parameterName);
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Determine whether a type parameter name is shadowed by any enclosing generic
|
|
143
|
+
* declaration.
|
|
144
|
+
*
|
|
145
|
+
* @param node - Node used as the starting point for ancestor traversal.
|
|
146
|
+
* @param parameterName - Type parameter name to detect.
|
|
147
|
+
*
|
|
148
|
+
* @returns `true` when an ancestor declares a matching type parameter.
|
|
149
|
+
*/
|
|
150
|
+
export function isTypeParameterNameShadowed(node, parameterName) {
|
|
151
|
+
return isAnyLinkedStructureNodeMatching({
|
|
152
|
+
getNextNode: (currentNode) => getParentNode(currentNode) ?? null,
|
|
153
|
+
isMatch: (currentNode) => ancestorDefinesTypeParameterNamed(currentNode, parameterName),
|
|
154
|
+
startNode: node,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Build a replacement fixer that optionally inserts a missing named type import
|
|
159
|
+
* before applying the replacement.
|
|
160
|
+
*
|
|
161
|
+
* @param options - Replacement strategy plus import/scope safety inputs.
|
|
162
|
+
*
|
|
163
|
+
* @returns Report fixer when replacement is scope-safe; otherwise `null`.
|
|
164
|
+
*/
|
|
165
|
+
const createTypeReplacementFix = ({ applyReplacement, availableReplacementNames, node, replacementName, reportFixIntent, sourceModuleName, }) => {
|
|
166
|
+
if (isTypeParameterNameShadowed(node, replacementName)) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
const requiresImportInsertion = !setContainsValue(availableReplacementNames, replacementName);
|
|
170
|
+
if (!requiresImportInsertion) {
|
|
171
|
+
return (fixer) => applyReplacement(fixer);
|
|
172
|
+
}
|
|
173
|
+
const importInsertionDecision = resolveImportInsertionDecisionForReportFix({
|
|
174
|
+
importBindingKind: "type",
|
|
175
|
+
importedName: replacementName,
|
|
176
|
+
referenceNode: node,
|
|
177
|
+
reportFixIntent,
|
|
178
|
+
sourceModuleName,
|
|
179
|
+
});
|
|
180
|
+
return (fixer) => createImportAwareFixes({
|
|
181
|
+
createImportFix: (importFixer) => getInsertionFixForMissingNamedTypeImport({
|
|
182
|
+
fixer: importFixer,
|
|
183
|
+
node,
|
|
184
|
+
replacementName,
|
|
185
|
+
sourceModuleName,
|
|
186
|
+
}),
|
|
187
|
+
createReplacementFix: applyReplacement,
|
|
188
|
+
fixer,
|
|
189
|
+
importInsertionDecision,
|
|
190
|
+
requiresImportInsertion,
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Build a safe type-reference replacement fixer.
|
|
195
|
+
*
|
|
196
|
+
* @param node - Type reference node to potentially fix.
|
|
197
|
+
* @param replacementName - Replacement identifier text.
|
|
198
|
+
* @param availableReplacementNames - Available direct imported replacement
|
|
199
|
+
* names.
|
|
200
|
+
* @param sourceModuleName - Module source used when validating/adding imports.
|
|
201
|
+
*
|
|
202
|
+
* @returns Fix function when replacement/import insertion is scope-safe;
|
|
203
|
+
* otherwise `null`.
|
|
204
|
+
*/
|
|
205
|
+
export const createSafeTypeReferenceReplacementFix = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => {
|
|
206
|
+
if (node.typeName.type !== "Identifier") {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
return createTypeReplacementFix({
|
|
210
|
+
applyReplacement: (fixer) => fixer.replaceText(node.typeName, replacementName),
|
|
211
|
+
availableReplacementNames,
|
|
212
|
+
node,
|
|
213
|
+
replacementName,
|
|
214
|
+
reportFixIntent,
|
|
215
|
+
sourceModuleName,
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Build a safe whole-type-node replacement fixer with custom replacement text.
|
|
220
|
+
*
|
|
221
|
+
* @param node - Type node to potentially replace.
|
|
222
|
+
* @param replacementName - Replacement symbol name used for import/scope safety
|
|
223
|
+
* checks.
|
|
224
|
+
* @param replacementText - Final replacement text to emit.
|
|
225
|
+
* @param availableReplacementNames - Available direct imported replacement
|
|
226
|
+
* names.
|
|
227
|
+
* @param sourceModuleName - Module source used when validating/adding imports.
|
|
228
|
+
*
|
|
229
|
+
* @returns Fix function when replacement/import insertion is scope-safe;
|
|
230
|
+
* otherwise `null`.
|
|
231
|
+
*/
|
|
232
|
+
export const createSafeTypeNodeTextReplacementFix = (node, replacementName, replacementText, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createTypeReplacementFix({
|
|
233
|
+
applyReplacement: (fixer) => fixer.replaceText(node, replacementText),
|
|
234
|
+
availableReplacementNames,
|
|
235
|
+
node,
|
|
236
|
+
replacementName,
|
|
237
|
+
reportFixIntent,
|
|
238
|
+
sourceModuleName,
|
|
239
|
+
});
|
|
240
|
+
/**
|
|
241
|
+
* Build a safe whole-type-node replacement fixer.
|
|
242
|
+
*
|
|
243
|
+
* @param node - Type node to potentially replace.
|
|
244
|
+
* @param replacementName - Replacement identifier text.
|
|
245
|
+
* @param availableReplacementNames - Available direct imported replacement
|
|
246
|
+
* names.
|
|
247
|
+
* @param sourceModuleName - Module source used when validating/adding imports.
|
|
248
|
+
*
|
|
249
|
+
* @returns Fix function when replacement/import insertion is scope-safe;
|
|
250
|
+
* otherwise `null`.
|
|
251
|
+
*/
|
|
252
|
+
export const createSafeTypeNodeReplacementFix = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createSafeTypeNodeTextReplacementFix(node, replacementName, replacementName, availableReplacementNames, sourceModuleName, reportFixIntent);
|
|
253
|
+
/**
|
|
254
|
+
* Detects type nodes that explicitly encode readonly semantics.
|
|
255
|
+
*
|
|
256
|
+
* @param node - Type node to inspect.
|
|
257
|
+
*
|
|
258
|
+
* @returns `true` for `readonly` type operators and known readonly container
|
|
259
|
+
* references.
|
|
260
|
+
*/
|
|
261
|
+
const isExplicitReadonlyTypeNode = (node) => {
|
|
262
|
+
if (node.type === "TSTypeOperator") {
|
|
263
|
+
return node.operator === "readonly";
|
|
264
|
+
}
|
|
265
|
+
if (node.type !== "TSTypeReference" ||
|
|
266
|
+
node.typeName.type !== "Identifier") {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
return setContainsValue(READONLY_CONTAINER_TYPE_NAMES, node.typeName.name);
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* Checks whether replacement text is already wrapped with `Readonly<...>`.
|
|
273
|
+
*/
|
|
274
|
+
const isReadonlyUtilityWrappedText = (replacementText) => replacementText.trimStart().startsWith(`${READONLY_UTILITY_TYPE_NAME}<`);
|
|
275
|
+
/**
|
|
276
|
+
* Wraps replacement text in `Readonly<...>`.
|
|
277
|
+
*/
|
|
278
|
+
const toReadonlyUtilityWrappedText = (replacementText) => `${READONLY_UTILITY_TYPE_NAME}<${replacementText}>`;
|
|
279
|
+
/**
|
|
280
|
+
* Build a safe whole-type-node replacement fixer that preserves explicit
|
|
281
|
+
* readonly wrappers/operators from the original node.
|
|
282
|
+
*
|
|
283
|
+
* @param node - Type node to potentially replace.
|
|
284
|
+
* @param replacementName - Replacement symbol name used for import/scope safety
|
|
285
|
+
* checks.
|
|
286
|
+
* @param replacementText - Final replacement text before readonly-preservation
|
|
287
|
+
* adjustment.
|
|
288
|
+
* @param availableReplacementNames - Available direct imported replacement
|
|
289
|
+
* names.
|
|
290
|
+
* @param sourceModuleName - Module source used when validating/adding imports.
|
|
291
|
+
*
|
|
292
|
+
* @returns Fix function when replacement/import insertion is scope-safe;
|
|
293
|
+
* otherwise `null`.
|
|
294
|
+
*/
|
|
295
|
+
export const createSafeTypeNodeTextReplacementFixPreservingReadonly = (node, replacementName, replacementText, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => {
|
|
296
|
+
const replacementTextWithReadonlyPreservation = isExplicitReadonlyTypeNode(node) &&
|
|
297
|
+
!isReadonlyUtilityWrappedText(replacementText)
|
|
298
|
+
? toReadonlyUtilityWrappedText(replacementText)
|
|
299
|
+
: replacementText;
|
|
300
|
+
return createSafeTypeNodeTextReplacementFix(node, replacementName, replacementTextWithReadonlyPreservation, availableReplacementNames, sourceModuleName, reportFixIntent);
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Build a safe whole-type-node replacement fixer that preserves explicit
|
|
304
|
+
* readonly wrappers/operators from the original node.
|
|
305
|
+
*
|
|
306
|
+
* @param node - Type node to potentially replace.
|
|
307
|
+
* @param replacementName - Replacement identifier text.
|
|
308
|
+
* @param availableReplacementNames - Available direct imported replacement
|
|
309
|
+
* names.
|
|
310
|
+
* @param sourceModuleName - Module source used when validating/adding imports.
|
|
311
|
+
*
|
|
312
|
+
* @returns Fix function when replacement/import insertion is scope-safe;
|
|
313
|
+
* otherwise `null`.
|
|
314
|
+
*/
|
|
315
|
+
export const createSafeTypeNodeReplacementFixPreservingReadonly = (node, replacementName, availableReplacementNames, sourceModuleName = TYPE_FEST_MODULE_SOURCE, reportFixIntent = "autofix") => createSafeTypeNodeTextReplacementFixPreservingReadonly(node, replacementName, replacementName, availableReplacementNames, sourceModuleName, reportFixIntent);
|
|
316
|
+
//# sourceMappingURL=imported-type-aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imported-type-aliases.js","sourceRoot":"","sources":["../../src/_internal/imported-type-aliases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Utilities for collecting and safely resolving direct named value imports.
|
|
4
|
+
*/
|
|
5
|
+
import type { TSESLint, TSESTree } from "@typescript-eslint/utils";
|
|
6
|
+
import type { UnknownArray } from "type-fest";
|
|
7
|
+
import { type AutofixImportInsertionStrategy } from "./import-aware-fixes.js";
|
|
8
|
+
import { type ImportFixIntent } from "./import-fix-coordinator.js";
|
|
9
|
+
/**
|
|
10
|
+
* Immutable mapping of imported symbol names to directly imported local
|
|
11
|
+
* aliases.
|
|
12
|
+
*/
|
|
13
|
+
export type ImportedValueAliasMap = ReadonlyMap<string, ReadonlySet<string>>;
|
|
14
|
+
/**
|
|
15
|
+
* Parameters for creating a safe member-expression to function-call fixer.
|
|
16
|
+
*/
|
|
17
|
+
type MemberToFunctionCallFixParams = Readonly<{
|
|
18
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
19
|
+
importedName: string;
|
|
20
|
+
imports: ImportedValueAliasMap;
|
|
21
|
+
memberNode: TSESTree.MemberExpression;
|
|
22
|
+
reportFixIntent?: ImportFixIntent;
|
|
23
|
+
sourceModuleName: string;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Parameters for creating a safe method-call to function-call fixer.
|
|
27
|
+
*/
|
|
28
|
+
type MethodToFunctionCallFixParams = Readonly<{
|
|
29
|
+
callNode: TSESTree.CallExpression;
|
|
30
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
31
|
+
importedName: string;
|
|
32
|
+
imports: ImportedValueAliasMap;
|
|
33
|
+
reportFixIntent?: ImportFixIntent;
|
|
34
|
+
sourceModuleName: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Parameters for resolving a safe local alias for an imported value symbol.
|
|
38
|
+
*/
|
|
39
|
+
type SafeImportedValueNameParams = Readonly<{
|
|
40
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
41
|
+
importedName: string;
|
|
42
|
+
imports: ImportedValueAliasMap;
|
|
43
|
+
referenceNode: TSESTree.Node;
|
|
44
|
+
sourceModuleName: string;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Parameters for creating a safe replacement fixer with custom replacement text
|
|
48
|
+
* derived from the resolved helper local name.
|
|
49
|
+
*/
|
|
50
|
+
type SafeValueNodeTextReplacementFixParams = Readonly<{
|
|
51
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
52
|
+
importedName: string;
|
|
53
|
+
imports: ImportedValueAliasMap;
|
|
54
|
+
replacementTextFactory: (replacementName: string) => string;
|
|
55
|
+
reportFixIntent?: ImportFixIntent;
|
|
56
|
+
sourceModuleName: string;
|
|
57
|
+
targetNode: TSESTree.Node;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Parameters for creating a safe replacement fixer for a value reference.
|
|
61
|
+
*/
|
|
62
|
+
type SafeValueReplacementFixParams = Readonly<{
|
|
63
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
64
|
+
importedName: string;
|
|
65
|
+
imports: ImportedValueAliasMap;
|
|
66
|
+
reportFixIntent?: ImportFixIntent;
|
|
67
|
+
sourceModuleName: string;
|
|
68
|
+
targetNode: TSESTree.Node;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Parameters for creating a safe function-call replacement fixer.
|
|
72
|
+
*/
|
|
73
|
+
type ValueArgumentFunctionCallFixParams = Readonly<{
|
|
74
|
+
argumentNode: TSESTree.Node;
|
|
75
|
+
autofixImportInsertionStrategy?: AutofixImportInsertionStrategy;
|
|
76
|
+
context: Readonly<TSESLint.RuleContext<string, UnknownArray>>;
|
|
77
|
+
importedName: string;
|
|
78
|
+
imports: ImportedValueAliasMap;
|
|
79
|
+
negated?: boolean;
|
|
80
|
+
reportFixIntent?: ImportFixIntent;
|
|
81
|
+
sourceModuleName: string;
|
|
82
|
+
targetNode: TSESTree.Node;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Collect direct named value imports from a specific module.
|
|
86
|
+
*
|
|
87
|
+
* @param sourceCode - Source code object for the current file.
|
|
88
|
+
* @param sourceModuleName - Module source string to match.
|
|
89
|
+
*
|
|
90
|
+
* @returns Readonly map of imported symbol names to local aliases.
|
|
91
|
+
*/
|
|
92
|
+
export declare const collectDirectNamedValueImportsFromSource: (sourceCode: Readonly<TSESLint.SourceCode>, sourceModuleName: string) => ImportedValueAliasMap;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve a safe local alias for a required imported value at one reference.
|
|
95
|
+
*
|
|
96
|
+
* @param options - Rule context, import alias map, and target reference
|
|
97
|
+
* metadata.
|
|
98
|
+
*
|
|
99
|
+
* @returns Local alias when the current scope binds it to the expected module;
|
|
100
|
+
* otherwise `null`.
|
|
101
|
+
*/
|
|
102
|
+
export declare const getSafeLocalNameForImportedValue: ({ context, importedName, imports, referenceNode, sourceModuleName, }: Readonly<SafeImportedValueNameParams>) => null | string;
|
|
103
|
+
/**
|
|
104
|
+
* Serialize a call argument node to text, preserving sequence-expression
|
|
105
|
+
* semantics with parentheses when required.
|
|
106
|
+
*
|
|
107
|
+
* @param options - Argument node and source-code accessor.
|
|
108
|
+
*
|
|
109
|
+
* @returns Trimmed argument text suitable for function-call insertion, or
|
|
110
|
+
* `null` when no text can be produced.
|
|
111
|
+
*/
|
|
112
|
+
export declare const getFunctionCallArgumentText: ({ argumentNode, sourceCode, }: Readonly<{
|
|
113
|
+
argumentNode: Readonly<TSESTree.Node>;
|
|
114
|
+
sourceCode: Readonly<TSESLint.SourceCode>;
|
|
115
|
+
}>) => null | string;
|
|
116
|
+
/**
|
|
117
|
+
* Create a fixer that safely replaces a target node with a resolved local
|
|
118
|
+
* import alias.
|
|
119
|
+
*
|
|
120
|
+
* @param options - Inputs used to resolve replacement/import insertion safety.
|
|
121
|
+
*
|
|
122
|
+
* @returns A report fixer when safe; otherwise `null`.
|
|
123
|
+
*/
|
|
124
|
+
export declare const createSafeValueReferenceReplacementFix: ({ context, importedName, imports, reportFixIntent, sourceModuleName, targetNode, }: Readonly<SafeValueReplacementFixParams>) => null | TSESLint.ReportFixFunction;
|
|
125
|
+
/**
|
|
126
|
+
* Create a fixer that safely rewrites a target node using custom replacement
|
|
127
|
+
* text derived from a resolved helper local name.
|
|
128
|
+
*
|
|
129
|
+
* @param options - Inputs for safe helper-name resolution and replacement-text
|
|
130
|
+
* generation.
|
|
131
|
+
*
|
|
132
|
+
* @returns A report fixer when safe; otherwise `null`.
|
|
133
|
+
*/
|
|
134
|
+
export declare const createSafeValueNodeTextReplacementFix: ({ context, importedName, imports, replacementTextFactory, reportFixIntent, sourceModuleName, targetNode, }: Readonly<SafeValueNodeTextReplacementFixParams>) => null | TSESLint.ReportFixFunction;
|
|
135
|
+
/**
|
|
136
|
+
* Create a fixer that rewrites `receiver.method(args...)` to
|
|
137
|
+
* `importedFn(receiver, args...)`.
|
|
138
|
+
*
|
|
139
|
+
* @returns A report fixer when safe; otherwise `null`.
|
|
140
|
+
*/
|
|
141
|
+
export declare const createMethodToFunctionCallFix: ({ callNode, context, importedName, imports, reportFixIntent, sourceModuleName, }: Readonly<MethodToFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
|
|
142
|
+
/**
|
|
143
|
+
* Create a fixer that rewrites `receiver[member]` to `importedFn(receiver)`.
|
|
144
|
+
*
|
|
145
|
+
* @returns A report fixer when safe; otherwise `null`.
|
|
146
|
+
*/
|
|
147
|
+
export declare const createMemberToFunctionCallFix: ({ context, importedName, imports, memberNode, reportFixIntent, sourceModuleName, }: Readonly<MemberToFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
|
|
148
|
+
/**
|
|
149
|
+
* Create a fixer that rewrites a target node to an imported helper invocation.
|
|
150
|
+
*
|
|
151
|
+
* @param options - Target/argument nodes and import metadata for call
|
|
152
|
+
*
|
|
153
|
+
* @returns A report fixer when safe; otherwise `null`.
|
|
154
|
+
*/
|
|
155
|
+
export declare const createSafeValueArgumentFunctionCallFix: ({ argumentNode, autofixImportInsertionStrategy, context, importedName, imports, negated, reportFixIntent, sourceModuleName, targetNode, }: Readonly<ValueArgumentFunctionCallFixParams>) => null | TSESLint.ReportFixFunction;
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=imported-value-symbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imported-value-symbols.d.ts","sourceRoot":"","sources":["../../src/_internal/imported-value-symbols.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAQ9C,OAAO,EACH,KAAK,8BAA8B,EAEtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,KAAK,eAAe,EAGvB,MAAM,6BAA6B,CAAC;AAKrC;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7E;;GAEG;AACH,KAAK,6BAA6B,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IACtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,KAAK,6BAA6B,GAAG,QAAQ,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC;IAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,KAAK,2BAA2B,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;;GAGG;AACH,KAAK,qCAAqC,GAAG,QAAQ,CAAC;IAClD,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,sBAAsB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAC;AAEH;;GAEG;AACH,KAAK,6BAA6B,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAC;AAKH;;GAEG;AACH,KAAK,kCAAkC,GAAG,QAAQ,CAAC;IAC/C,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC;IAC5B,8BAA8B,CAAC,EAAE,8BAA8B,CAAC;IAChE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAC;AAmEH;;;;;;;GAOG;AACH,eAAO,MAAM,wCAAwC,GACjD,YAAY,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EACzC,kBAAkB,MAAM,KACzB,qBAMG,CAAC;AA0KP;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,GAAI,sEAM9C,QAAQ,CAAC,2BAA2B,CAAC,KAAG,IAAI,GAAG,MAmBjD,CAAC;AAgLF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GAAI,+BAGzC,QAAQ,CAAC;IACR,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;CAC7C,CAAC,KAAG,IAAI,GAAG,MAeX,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,GAAI,oFAOpD,QAAQ,CAAC,6BAA6B,CAAC,KAAG,IAAI,GAAG,QAAQ,CAAC,iBAmB5D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC,GAAI,4GAQnD,QAAQ,CAAC,qCAAqC,CAAC,KAAG,IAAI,GAAG,QAAQ,CAAC,iBAsBpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GAAI,kFAO3C,QAAQ,CAAC,6BAA6B,CAAC,KAAG,IAAI,GAAG,QAAQ,CAAC,iBA8D5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAI,oFAO3C,QAAQ,CAAC,6BAA6B,CAAC,KAAG,IAAI,GAAG,QAAQ,CAAC,iBAqC5D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sCAAsC,GAAI,2IAUpD,QAAQ,CAAC,kCAAkC,CAAC,KAAG,IAAI,GAAG,QAAQ,CAAC,iBA+BjE,CAAC"}
|