@ttsc/lint 0.13.1 → 0.14.0-dev.20260528.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/README.md +948 -69
- package/lib/defaultFormat.d.ts +9 -6
- package/lib/defaultFormat.js +9 -6
- package/lib/defaultFormat.js.map +1 -1
- package/lib/index.d.ts +46 -0
- package/lib/index.js +35 -10
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +12 -6
- package/lib/structures/{ITtscLintFormatConfig.d.ts → ITtscLintFormat.d.ts} +2 -2
- package/lib/structures/{TtscLintRuleMap.js → ITtscLintFormat.js} +1 -1
- package/lib/structures/ITtscLintFormat.js.map +1 -0
- package/lib/structures/TtscLintRuleSetting.d.ts +49 -0
- package/lib/structures/{TtscLintRuleOptions.js → TtscLintRuleSetting.js} +1 -1
- package/lib/structures/TtscLintRuleSetting.js.map +1 -0
- package/lib/structures/index.d.ts +3 -4
- package/lib/structures/index.js +3 -4
- package/lib/structures/index.js.map +1 -1
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +104 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js +14 -0
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +79 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js +3 -0
- package/lib/structures/rules/ITtscLintBoundariesRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +17 -0
- package/lib/structures/rules/ITtscLintContributorRules.js +3 -0
- package/lib/structures/rules/ITtscLintContributorRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +1257 -0
- package/lib/structures/{ITtscLintFormatConfig.js → rules/ITtscLintCoreRules.js} +1 -1
- package/lib/structures/rules/ITtscLintCoreRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.d.ts +17 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintCypressRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintCypressRules.d.ts +129 -0
- package/lib/structures/rules/ITtscLintCypressRules.js +3 -0
- package/lib/structures/rules/ITtscLintCypressRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.d.ts +157 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js +13 -0
- package/lib/structures/rules/ITtscLintFunctionalRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.d.ts +167 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js +3 -0
- package/lib/structures/rules/ITtscLintFunctionalRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJestRules.d.ts +201 -0
- package/lib/structures/rules/ITtscLintJestRules.js +3 -0
- package/lib/structures/rules/ITtscLintJestRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsdocRules.d.ts +140 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsdocRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.d.ts +302 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js +3 -0
- package/lib/structures/rules/ITtscLintJsxA11yRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintNextjsRules.d.ts +185 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js +3 -0
- package/lib/structures/rules/ITtscLintNextjsRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.d.ts +330 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js +3 -0
- package/lib/structures/rules/ITtscLintPlaywrightRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintPromiseRules.d.ts +188 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js +3 -0
- package/lib/structures/rules/ITtscLintPromiseRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.d.ts +18 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js +8 -0
- package/lib/structures/rules/ITtscLintReactPerfRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.d.ts +51 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactPerfRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.d.ts +39 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js +12 -0
- package/lib/structures/rules/ITtscLintReactRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintReactRules.d.ts +289 -0
- package/lib/structures/rules/ITtscLintReactRules.js +3 -0
- package/lib/structures/rules/ITtscLintReactRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +190 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js +3 -0
- package/lib/structures/rules/ITtscLintRegexpRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +66 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js +3 -0
- package/lib/structures/rules/ITtscLintRuleOptionsMap.js.map +1 -0
- package/lib/structures/rules/ITtscLintRules.d.ts +55 -0
- package/lib/structures/{TtscLintRule.js → rules/ITtscLintRules.js} +1 -1
- package/lib/structures/rules/ITtscLintRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSecurityRules.d.ts +148 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js +3 -0
- package/lib/structures/rules/ITtscLintSecurityRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +181 -0
- package/lib/structures/rules/ITtscLintSolidRules.js +3 -0
- package/lib/structures/rules/ITtscLintSolidRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.d.ts +21 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js +9 -0
- package/lib/structures/rules/ITtscLintStorybookRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintStorybookRules.d.ts +174 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js +3 -0
- package/lib/structures/rules/ITtscLintStorybookRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.d.ts +94 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTanstackQueryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.d.ts +22 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js +10 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.d.ts +310 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js +3 -0
- package/lib/structures/rules/ITtscLintTestingLibraryRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +1132 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js +3 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintUnicornRules.d.ts +997 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js +3 -0
- package/lib/structures/rules/ITtscLintUnicornRules.js.map +1 -0
- package/lib/structures/rules/ITtscLintVitestRules.d.ts +141 -0
- package/lib/structures/rules/ITtscLintVitestRules.js +3 -0
- package/lib/structures/rules/ITtscLintVitestRules.js.map +1 -0
- package/lib/structures/rules/index.d.ts +31 -0
- package/lib/structures/rules/index.js +48 -0
- package/lib/structures/rules/index.js.map +1 -0
- package/linthost/ast_helpers.go +30 -5
- package/linthost/config.go +48 -17
- package/linthost/config_format.go +9 -9
- package/linthost/directives.go +67 -25
- package/linthost/dispatch.go +14 -3
- package/linthost/engine.go +152 -31
- package/linthost/fix.go +2 -2
- package/linthost/lsp.go +747 -0
- package/linthost/print_dispatch.go +2 -2
- package/linthost/print_nodes_function.go +2 -2
- package/linthost/print_nodes_object.go +1 -1
- package/linthost/rule_names.go +14 -0
- package/linthost/rules_arrays.go +2 -2
- package/linthost/rules_boundaries.go +532 -0
- package/linthost/rules_camelcase.go +133 -0
- package/linthost/rules_complexity.go +94 -0
- package/linthost/rules_consistent_return.go +130 -0
- package/linthost/rules_console.go +1 -1
- package/linthost/rules_core_extra.go +739 -0
- package/linthost/rules_curly.go +70 -0
- package/linthost/rules_cypress.go +608 -0
- package/linthost/rules_debugger.go +2 -2
- package/linthost/rules_default_case.go +39 -0
- package/linthost/rules_default_case_last.go +46 -0
- package/linthost/rules_dupes.go +3 -3
- package/linthost/rules_empty.go +3 -3
- package/linthost/rules_escape.go +44 -24
- package/linthost/rules_eval.go +2 -2
- package/linthost/rules_finally.go +2 -2
- package/linthost/rules_format_jsdoc.go +1 -1
- package/linthost/rules_format_print_width.go +9 -9
- package/linthost/rules_format_quotes.go +1 -1
- package/linthost/rules_format_semi.go +1 -1
- package/linthost/rules_format_sort_imports.go +1 -1
- package/linthost/rules_format_trailing_comma.go +1 -1
- package/linthost/rules_functional.go +967 -0
- package/linthost/rules_gap.go +24 -45
- package/linthost/rules_grouped_accessor_pairs.go +87 -0
- package/linthost/rules_guard_for_in.go +198 -0
- package/linthost/rules_id_length.go +77 -0
- package/linthost/rules_imports.go +70 -2
- package/linthost/rules_init_declarations.go +53 -0
- package/linthost/rules_jest.go +618 -0
- package/linthost/rules_jsdoc.go +502 -0
- package/linthost/rules_jsx_a11y.go +1264 -0
- package/linthost/rules_logic.go +12 -12
- package/linthost/rules_loops.go +1 -1
- package/linthost/rules_max_classes_per_file.go +58 -0
- package/linthost/rules_max_depth.go +83 -0
- package/linthost/rules_max_lines.go +101 -0
- package/linthost/rules_max_lines_per_function.go +57 -0
- package/linthost/rules_max_nested_callbacks.go +61 -0
- package/linthost/rules_max_params.go +49 -0
- package/linthost/rules_max_statements.go +59 -0
- package/linthost/rules_misc.go +1 -1
- package/linthost/rules_nextjs.go +697 -0
- package/linthost/rules_no_else_return.go +75 -0
- package/linthost/rules_no_empty_named_blocks.go +91 -0
- package/linthost/rules_no_extend_native.go +51 -0
- package/linthost/rules_no_import_assign.go +140 -0
- package/linthost/rules_no_invalid_this.go +52 -0
- package/linthost/rules_no_loop_func.go +85 -0
- package/linthost/rules_no_magic_numbers.go +123 -0
- package/linthost/rules_no_mixed_operators.go +80 -0
- package/linthost/rules_no_param_reassign.go +98 -0
- package/linthost/rules_no_redeclare.go +270 -0
- package/linthost/rules_no_restricted_imports.go +105 -0
- package/linthost/rules_no_restricted_syntax.go +49 -0
- package/linthost/rules_no_shadow.go +147 -0
- package/linthost/rules_no_unreachable.go +77 -0
- package/linthost/rules_no_useless_assignment.go +120 -0
- package/linthost/rules_no_useless_constructor.go +245 -0
- package/linthost/rules_no_useless_return.go +51 -0
- package/linthost/rules_params.go +1 -1
- package/linthost/rules_playwright.go +788 -0
- package/linthost/rules_prefer_arrow_callback.go +124 -0
- package/linthost/rules_prefer_destructuring.go +98 -0
- package/linthost/rules_prefer_named_capture_group.go +129 -0
- package/linthost/rules_prefer_rest_params.go +94 -0
- package/linthost/rules_problems.go +41 -30
- package/linthost/rules_promise.go +1128 -73
- package/linthost/rules_protos.go +2 -2
- package/linthost/rules_react.go +773 -0
- package/linthost/rules_react_extras.go +227 -0
- package/linthost/rules_react_hooks.go +848 -0
- package/linthost/rules_react_perf.go +293 -0
- package/linthost/rules_react_refresh.go +583 -0
- package/linthost/rules_regexp.go +410 -0
- package/linthost/rules_security.go +830 -0
- package/linthost/rules_self.go +2 -2
- package/linthost/rules_solid.go +1073 -0
- package/linthost/rules_sort_imports.go +69 -0
- package/linthost/rules_sort_keys.go +134 -0
- package/linthost/rules_storybook.go +1176 -0
- package/linthost/rules_strings.go +4 -4
- package/linthost/rules_suggestions.go +38 -38
- package/linthost/rules_tanstack_query.go +844 -0
- package/linthost/rules_testing_library.go +1204 -0
- package/linthost/rules_throw.go +1 -1
- package/linthost/rules_ts.go +19 -19
- package/linthost/rules_ts_async.go +399 -0
- package/linthost/rules_ts_class_literal_property_style.go +115 -0
- package/linthost/rules_ts_consistent_type_exports.go +256 -0
- package/linthost/rules_ts_explicit_function_return_type.go +67 -0
- package/linthost/rules_ts_extra.go +155 -36
- package/linthost/rules_ts_no_base_to_string.go +218 -0
- package/linthost/rules_ts_no_confusing_void.go +72 -0
- package/linthost/rules_ts_no_deprecated.go +195 -0
- package/linthost/rules_ts_no_for_in_array.go +84 -0
- package/linthost/rules_ts_no_magic_numbers.go +124 -0
- package/linthost/rules_ts_no_meaningless_void_operator.go +84 -0
- package/linthost/rules_ts_no_misused_spread.go +104 -0
- package/linthost/rules_ts_no_redundant_type_constituents.go +113 -0
- package/linthost/rules_ts_no_restricted_types.go +62 -0
- package/linthost/rules_ts_no_unnecessary_boolean_literal_compare.go +129 -0
- package/linthost/rules_ts_no_unnecessary_condition.go +250 -0
- package/linthost/rules_ts_no_unnecessary_qualifier.go +118 -0
- package/linthost/rules_ts_no_unnecessary_template_expression.go +178 -0
- package/linthost/rules_ts_no_unnecessary_type_arguments.go +234 -0
- package/linthost/rules_ts_no_unnecessary_type_assertion.go +157 -0
- package/linthost/rules_ts_no_unsafe_argument.go +82 -0
- package/linthost/rules_ts_no_unsafe_assignment.go +102 -0
- package/linthost/rules_ts_no_unsafe_call.go +82 -0
- package/linthost/rules_ts_no_unsafe_enum_comparison.go +235 -0
- package/linthost/rules_ts_no_unsafe_member_access.go +58 -0
- package/linthost/rules_ts_no_unsafe_return.go +126 -0
- package/linthost/rules_ts_no_unsafe_unary_minus.go +81 -0
- package/linthost/rules_ts_no_useless_constructor.go +52 -0
- package/linthost/rules_ts_non_nullable_type_assertion_style.go +108 -0
- package/linthost/rules_ts_parameter_properties.go +38 -0
- package/linthost/rules_ts_prefer_find.go +178 -0
- package/linthost/rules_ts_prefer_includes.go +255 -0
- package/linthost/rules_ts_prefer_nullish_coalescing.go +104 -0
- package/linthost/rules_ts_prefer_optional_chain.go +228 -0
- package/linthost/rules_ts_prefer_promise_reject_errors.go +176 -0
- package/linthost/rules_ts_prefer_readonly.go +73 -0
- package/linthost/rules_ts_prefer_reduce_type_parameter.go +116 -0
- package/linthost/rules_ts_prefer_regexp_exec.go +122 -0
- package/linthost/rules_ts_prefer_return_this_type.go +135 -0
- package/linthost/rules_ts_prefer_string_starts_ends_with.go +360 -0
- package/linthost/rules_ts_promise_function_async.go +77 -0
- package/linthost/rules_ts_related_getter_setter_pairs.go +113 -0
- package/linthost/rules_ts_require_array_sort_compare.go +96 -0
- package/linthost/rules_ts_restrict_plus_operands.go +127 -0
- package/linthost/rules_ts_restrict_template_expressions.go +95 -0
- package/linthost/rules_ts_simple.go +387 -0
- package/linthost/rules_ts_sort_type_constituents.go +144 -0
- package/linthost/rules_ts_strict_boolean_expressions.go +157 -0
- package/linthost/rules_ts_switch_exhaustiveness_check.go +147 -0
- package/linthost/rules_ts_unbound_method.go +126 -0
- package/linthost/rules_tsdoc.go +136 -0
- package/linthost/rules_unicorn_better_regex.go +27 -0
- package/linthost/rules_unicorn_catch_error_name.go +46 -0
- package/linthost/rules_unicorn_consistent_assert.go +47 -0
- package/linthost/rules_unicorn_consistent_date_clone.go +54 -0
- package/linthost/rules_unicorn_consistent_destructuring.go +25 -0
- package/linthost/rules_unicorn_consistent_empty_array_spread.go +62 -0
- package/linthost/rules_unicorn_consistent_existence_index_check.go +80 -0
- package/linthost/rules_unicorn_consistent_function_scoping.go +25 -0
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +25 -0
- package/linthost/rules_unicorn_custom_error_definition.go +138 -0
- package/linthost/rules_unicorn_empty_brace_spaces.go +73 -0
- package/linthost/rules_unicorn_error_message.go +64 -0
- package/linthost/rules_unicorn_escape_case.go +51 -0
- package/linthost/rules_unicorn_expiring_todo_comments.go +78 -0
- package/linthost/rules_unicorn_explicit_length_check.go +88 -0
- package/linthost/rules_unicorn_filename_case.go +29 -0
- package/linthost/rules_unicorn_import_style.go +28 -0
- package/linthost/rules_unicorn_isolated_functions.go +29 -0
- package/linthost/rules_unicorn_new_for_builtins.go +87 -0
- package/linthost/rules_unicorn_no_abusive_eslint_disable.go +63 -0
- package/linthost/rules_unicorn_no_accessor_recursion.go +115 -0
- package/linthost/rules_unicorn_no_anonymous_default_export.go +74 -0
- package/linthost/rules_unicorn_no_array_callback_reference.go +65 -0
- package/linthost/rules_unicorn_no_array_for_each.go +40 -0
- package/linthost/rules_unicorn_no_array_method_this_argument.go +61 -0
- package/linthost/rules_unicorn_no_array_reduce.go +41 -0
- package/linthost/rules_unicorn_no_array_reverse.go +44 -0
- package/linthost/rules_unicorn_no_array_sort.go +43 -0
- package/linthost/rules_unicorn_no_await_expression_member.go +40 -0
- package/linthost/rules_unicorn_no_await_in_promise_methods.go +69 -0
- package/linthost/rules_unicorn_no_console_spaces.go +61 -0
- package/linthost/rules_unicorn_no_document_cookie.go +41 -0
- package/linthost/rules_unicorn_no_empty_file.go +44 -0
- package/linthost/rules_unicorn_no_for_loop.go +102 -0
- package/linthost/rules_unicorn_no_hex_escape.go +42 -0
- package/linthost/rules_unicorn_no_immediate_mutation.go +90 -0
- package/linthost/rules_unicorn_no_instanceof_builtins.go +66 -0
- package/linthost/rules_unicorn_no_invalid_fetch_options.go +79 -0
- package/linthost/rules_unicorn_no_invalid_remove_event_listener.go +51 -0
- package/linthost/rules_unicorn_no_keyword_prefix.go +101 -0
- package/linthost/rules_unicorn_no_lonely_if.go +44 -0
- package/linthost/rules_unicorn_no_magic_array_flat_depth.go +51 -0
- package/linthost/rules_unicorn_no_named_default.go +54 -0
- package/linthost/rules_unicorn_no_negated_condition.go +85 -0
- package/linthost/rules_unicorn_no_negation_in_equality_check.go +50 -0
- package/linthost/rules_unicorn_no_nested_ternary.go +43 -0
- package/linthost/rules_unicorn_no_new_array.go +30 -0
- package/linthost/rules_unicorn_no_new_buffer.go +31 -0
- package/linthost/rules_unicorn_no_null.go +24 -0
- package/linthost/rules_unicorn_no_object_as_default_parameter.go +48 -0
- package/linthost/rules_unicorn_no_process_exit.go +43 -0
- package/linthost/rules_unicorn_no_single_promise_in_promise_methods.go +59 -0
- package/linthost/rules_unicorn_no_static_only_class.go +56 -0
- package/linthost/rules_unicorn_no_thenable.go +74 -0
- package/linthost/rules_unicorn_no_this_assignment.go +35 -0
- package/linthost/rules_unicorn_no_typeof_undefined.go +58 -0
- package/linthost/rules_unicorn_no_unnecessary_array_flat_depth.go +49 -0
- package/linthost/rules_unicorn_no_unnecessary_array_splice_count.go +70 -0
- package/linthost/rules_unicorn_no_unnecessary_await.go +51 -0
- package/linthost/rules_unicorn_no_unnecessary_polyfills.go +32 -0
- package/linthost/rules_unicorn_no_unnecessary_slice_end.go +48 -0
- package/linthost/rules_unicorn_no_unreadable_array_destructuring.go +115 -0
- package/linthost/rules_unicorn_no_unreadable_iife.go +50 -0
- package/linthost/rules_unicorn_no_unused_properties.go +30 -0
- package/linthost/rules_unicorn_no_useless_collection_argument.go +63 -0
- package/linthost/rules_unicorn_no_useless_error_capture_stack_trace.go +46 -0
- package/linthost/rules_unicorn_no_useless_fallback_in_spread.go +81 -0
- package/linthost/rules_unicorn_no_useless_iterator_to_array.go +72 -0
- package/linthost/rules_unicorn_no_useless_length_check.go +144 -0
- package/linthost/rules_unicorn_no_useless_promise_resolve_reject.go +81 -0
- package/linthost/rules_unicorn_no_useless_spread.go +67 -0
- package/linthost/rules_unicorn_no_useless_switch_case.go +55 -0
- package/linthost/rules_unicorn_no_useless_undefined.go +55 -0
- package/linthost/rules_unicorn_no_zero_fractions.go +52 -0
- package/linthost/rules_unicorn_number_literal_case.go +69 -0
- package/linthost/rules_unicorn_numeric_separators_style.go +75 -0
- package/linthost/rules_unicorn_prefer_add_event_listener.go +66 -0
- package/linthost/rules_unicorn_prefer_array_find.go +51 -0
- package/linthost/rules_unicorn_prefer_array_flat.go +52 -0
- package/linthost/rules_unicorn_prefer_array_flat_map.go +63 -0
- package/linthost/rules_unicorn_prefer_array_index_of.go +147 -0
- package/linthost/rules_unicorn_prefer_array_some.go +67 -0
- package/linthost/rules_unicorn_prefer_at.go +77 -0
- package/linthost/rules_unicorn_prefer_bigint_literals.go +77 -0
- package/linthost/rules_unicorn_prefer_blob_reading_methods.go +44 -0
- package/linthost/rules_unicorn_prefer_class_fields.go +93 -0
- package/linthost/rules_unicorn_prefer_classlist_toggle.go +120 -0
- package/linthost/rules_unicorn_prefer_code_point.go +49 -0
- package/linthost/rules_unicorn_prefer_date_now.go +78 -0
- package/linthost/rules_unicorn_prefer_default_parameters.go +144 -0
- package/linthost/rules_unicorn_prefer_dom_node_append.go +40 -0
- package/linthost/rules_unicorn_prefer_dom_node_dataset.go +55 -0
- package/linthost/rules_unicorn_prefer_dom_node_remove.go +41 -0
- package/linthost/rules_unicorn_prefer_dom_node_text_content.go +37 -0
- package/linthost/rules_unicorn_prefer_event_target.go +36 -0
- package/linthost/rules_unicorn_prefer_export_from.go +129 -0
- package/linthost/rules_unicorn_prefer_global_this.go +127 -0
- package/linthost/rules_unicorn_prefer_import_meta_properties.go +66 -0
- package/linthost/rules_unicorn_prefer_includes.go +149 -0
- package/linthost/rules_unicorn_prefer_json_parse_buffer.go +65 -0
- package/linthost/rules_unicorn_prefer_keyboard_event_key.go +38 -0
- package/linthost/rules_unicorn_prefer_logical_operator_over_ternary.go +48 -0
- package/linthost/rules_unicorn_prefer_math_min_max.go +60 -0
- package/linthost/rules_unicorn_prefer_math_trunc.go +62 -0
- package/linthost/rules_unicorn_prefer_modern_dom_apis.go +47 -0
- package/linthost/rules_unicorn_prefer_modern_math_apis.go +70 -0
- package/linthost/rules_unicorn_prefer_module.go +50 -0
- package/linthost/rules_unicorn_prefer_native_coercion_functions.go +114 -0
- package/linthost/rules_unicorn_prefer_negative_index.go +74 -0
- package/linthost/rules_unicorn_prefer_node_protocol.go +122 -0
- package/linthost/rules_unicorn_prefer_number_properties.go +88 -0
- package/linthost/rules_unicorn_prefer_object_from_entries.go +55 -0
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +62 -0
- package/linthost/rules_unicorn_prefer_prototype_methods.go +54 -0
- package/linthost/rules_unicorn_prefer_query_selector.go +56 -0
- package/linthost/rules_unicorn_prefer_reflect_apply.go +36 -0
- package/linthost/rules_unicorn_prefer_regexp_test_rule.go +80 -0
- package/linthost/rules_unicorn_prefer_response_static_json.go +53 -0
- package/linthost/rules_unicorn_prefer_set_has.go +42 -0
- package/linthost/rules_unicorn_prefer_set_size.go +48 -0
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +34 -0
- package/linthost/rules_unicorn_prefer_single_call.go +96 -0
- package/linthost/rules_unicorn_prefer_spread.go +51 -0
- package/linthost/rules_unicorn_prefer_string_raw.go +43 -0
- package/linthost/rules_unicorn_prefer_string_replace_all.go +95 -0
- package/linthost/rules_unicorn_prefer_string_slice.go +43 -0
- package/linthost/rules_unicorn_prefer_string_starts_ends_with.go +148 -0
- package/linthost/rules_unicorn_prefer_string_trim_start_end.go +48 -0
- package/linthost/rules_unicorn_prefer_structured_clone.go +71 -0
- package/linthost/rules_unicorn_prefer_switch.go +103 -0
- package/linthost/rules_unicorn_prefer_ternary.go +71 -0
- package/linthost/rules_unicorn_prefer_top_level_await.go +72 -0
- package/linthost/rules_unicorn_prefer_type_error.go +127 -0
- package/linthost/rules_unicorn_prevent_abbreviations.go +127 -0
- package/linthost/rules_unicorn_relative_url_style.go +49 -0
- package/linthost/rules_unicorn_require_array_join_separator.go +45 -0
- package/linthost/rules_unicorn_require_module_attributes.go +54 -0
- package/linthost/rules_unicorn_require_module_specifiers.go +55 -0
- package/linthost/rules_unicorn_require_number_to_fixed_digits_argument.go +43 -0
- package/linthost/rules_unicorn_require_post_message_target_origin.go +44 -0
- package/linthost/rules_unicorn_string_content.go +27 -0
- package/linthost/rules_unicorn_switch_case_braces.go +42 -0
- package/linthost/rules_unicorn_switch_case_break_position.go +31 -0
- package/linthost/rules_unicorn_template_indent.go +28 -0
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +72 -0
- package/linthost/rules_unicorn_throw_new_error.go +61 -0
- package/linthost/rules_var.go +4 -4
- package/linthost/rules_vitest.go +568 -0
- package/package.json +3 -3
- package/plugin/main.go +49 -3
- package/rule/astutil/astutil.go +10 -3
- package/rule/rule.go +12 -10
- package/src/defaultFormat.ts +11 -8
- package/src/index.ts +40 -16
- package/src/structures/ITtscLintConfig.ts +12 -6
- package/src/structures/{ITtscLintFormatConfig.ts → ITtscLintFormat.ts} +2 -2
- package/src/structures/TtscLintRuleSetting.ts +55 -0
- package/src/structures/index.ts +3 -4
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +128 -0
- package/src/structures/rules/ITtscLintBoundariesRules.ts +95 -0
- package/src/structures/rules/ITtscLintContributorRules.ts +21 -0
- package/src/structures/rules/ITtscLintCoreRules.ts +1406 -0
- package/src/structures/rules/ITtscLintCypressRuleOptions.ts +18 -0
- package/src/structures/rules/ITtscLintCypressRules.ts +145 -0
- package/src/structures/rules/ITtscLintFunctionalRuleOptions.ts +213 -0
- package/src/structures/rules/ITtscLintFunctionalRules.ts +202 -0
- package/src/structures/rules/ITtscLintJestRules.ts +220 -0
- package/src/structures/rules/ITtscLintJsdocRules.ts +153 -0
- package/src/structures/rules/ITtscLintJsxA11yRules.ts +339 -0
- package/src/structures/rules/ITtscLintNextjsRules.ts +206 -0
- package/src/structures/rules/ITtscLintPlaywrightRules.ts +361 -0
- package/src/structures/rules/ITtscLintPromiseRules.ts +205 -0
- package/src/structures/rules/ITtscLintReactPerfRuleOptions.ts +19 -0
- package/src/structures/rules/ITtscLintReactPerfRules.ts +55 -0
- package/src/structures/rules/ITtscLintReactRuleOptions.ts +43 -0
- package/src/structures/rules/ITtscLintReactRules.ts +321 -0
- package/src/structures/rules/ITtscLintRegexpRules.ts +212 -0
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +89 -0
- package/src/structures/rules/ITtscLintRules.ts +77 -0
- package/src/structures/rules/ITtscLintSecurityRules.ts +162 -0
- package/src/structures/rules/ITtscLintSolidRules.ts +202 -0
- package/src/structures/rules/ITtscLintStorybookRuleOptions.ts +23 -0
- package/src/structures/rules/ITtscLintStorybookRules.ts +193 -0
- package/src/structures/rules/ITtscLintTanstackQueryRules.ts +102 -0
- package/src/structures/rules/ITtscLintTestingLibraryRuleOptions.ts +24 -0
- package/src/structures/rules/ITtscLintTestingLibraryRules.ts +342 -0
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +1230 -0
- package/src/structures/rules/ITtscLintUnicornRules.ts +1143 -0
- package/src/structures/rules/ITtscLintVitestRules.ts +154 -0
- package/src/structures/rules/index.ts +31 -0
- package/lib/structures/ITtscLintFormatConfig.js.map +0 -1
- package/lib/structures/TtscLintRule.d.ts +0 -17
- package/lib/structures/TtscLintRule.js.map +0 -1
- package/lib/structures/TtscLintRuleMap.d.ts +0 -46
- package/lib/structures/TtscLintRuleMap.js.map +0 -1
- package/lib/structures/TtscLintRuleOptions.d.ts +0 -137
- package/lib/structures/TtscLintRuleOptions.js.map +0 -1
- package/src/structures/TtscLintRule.ts +0 -160
- package/src/structures/TtscLintRuleMap.ts +0 -55
- package/src/structures/TtscLintRuleOptions.ts +0 -151
|
@@ -6,7 +6,7 @@ import (
|
|
|
6
6
|
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
7
7
|
)
|
|
8
8
|
|
|
9
|
-
//
|
|
9
|
+
// noTemplateCurlyInString: a regular string contains `${...}`. The
|
|
10
10
|
// developer probably meant a template literal.
|
|
11
11
|
// https://eslint.org/docs/latest/rules/no-template-curly-in-string
|
|
12
12
|
type noTemplateCurlyInString struct{}
|
|
@@ -45,7 +45,7 @@ func hasTemplatePlaceholder(text string) bool {
|
|
|
45
45
|
return false
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
//
|
|
48
|
+
// noMultiStr: `"line one \\n line two"` style backslash continuations.
|
|
49
49
|
// TS strips them silently and the result is rarely what the author meant.
|
|
50
50
|
// https://eslint.org/docs/latest/rules/no-multi-str
|
|
51
51
|
type noMultiStr struct{}
|
|
@@ -75,7 +75,7 @@ func hasBackslashLineContinuation(src string) bool {
|
|
|
75
75
|
return false
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
//
|
|
78
|
+
// noUselessConcat: `"a" + "b"` of two literals. The compiler can't
|
|
79
79
|
// constant-fold every case, but this catches the obvious shapes.
|
|
80
80
|
// https://eslint.org/docs/latest/rules/no-useless-concat
|
|
81
81
|
type noUselessConcat struct{}
|
|
@@ -109,7 +109,7 @@ func isStringLikeLiteral(node *shimast.Node) bool {
|
|
|
109
109
|
return false
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
//
|
|
112
|
+
// noOctal: `010` octal literal. Has to be opt-in via `0o10` in
|
|
113
113
|
// modern code; the legacy form is silently confusing.
|
|
114
114
|
// https://eslint.org/docs/latest/rules/no-octal
|
|
115
115
|
type noOctal struct{}
|
|
@@ -10,7 +10,7 @@ import (
|
|
|
10
10
|
shimscanner "github.com/microsoft/typescript-go/shim/scanner"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
-
//
|
|
13
|
+
// noAlert: `alert()` / `confirm()` / `prompt()`. Rarely the right
|
|
14
14
|
// answer in production code.
|
|
15
15
|
type noAlert struct{}
|
|
16
16
|
|
|
@@ -27,7 +27,7 @@ func (noAlert) Check(ctx *Context, node *shimast.Node) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
//
|
|
30
|
+
// noBitwise: `&`, `|`, `^`, `~`, `<<`, `>>`, `>>>` — almost always a
|
|
31
31
|
// typo for the boolean-logic operators.
|
|
32
32
|
type noBitwise struct{}
|
|
33
33
|
|
|
@@ -67,7 +67,7 @@ func (noBitwise) Check(ctx *Context, node *shimast.Node) {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
//
|
|
70
|
+
// noCaller: `arguments.caller` / `arguments.callee` — strict-mode
|
|
71
71
|
// errors elsewhere; lint catches them earlier.
|
|
72
72
|
type noCaller struct{}
|
|
73
73
|
|
|
@@ -87,7 +87,7 @@ func (noCaller) Check(ctx *Context, node *shimast.Node) {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
//
|
|
90
|
+
// noCaseDeclarations: `switch (x) { case 1: let y = 2; break; }` —
|
|
91
91
|
// block-scoped declarations leak across case labels.
|
|
92
92
|
type noCaseDeclarations struct{}
|
|
93
93
|
|
|
@@ -118,7 +118,7 @@ func (noCaseDeclarations) Check(ctx *Context, node *shimast.Node) {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
//
|
|
121
|
+
// noContinue: `continue` keyword. ESLint flags it as a code-smell
|
|
122
122
|
// (loop body should usually be reorganized).
|
|
123
123
|
type noContinue struct{}
|
|
124
124
|
|
|
@@ -128,7 +128,7 @@ func (noContinue) Check(ctx *Context, node *shimast.Node) {
|
|
|
128
128
|
ctx.Report(node, "Unexpected use of continue statement.")
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
//
|
|
131
|
+
// noDeleteVar: `delete x` where `x` is a variable. Strict-mode error.
|
|
132
132
|
type noDeleteVar struct{}
|
|
133
133
|
|
|
134
134
|
func (noDeleteVar) Name() string { return "no-delete-var" }
|
|
@@ -143,7 +143,7 @@ func (noDeleteVar) Check(ctx *Context, node *shimast.Node) {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
//
|
|
146
|
+
// noEqNull: `x == null` — ambiguous with eqeqeq's `null` exception
|
|
147
147
|
// when developers want to also catch `undefined`.
|
|
148
148
|
type noEqNull struct{}
|
|
149
149
|
|
|
@@ -166,7 +166,7 @@ func isNullLiteral(node *shimast.Node) bool {
|
|
|
166
166
|
return node != nil && node.Kind == shimast.KindNullKeyword
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
//
|
|
169
|
+
// noExtraBind: `(function () {}).bind(this)` where `this` isn't used
|
|
170
170
|
// — only flag the case where the bind target is empty/parameterless,
|
|
171
171
|
// keeping false-positives down.
|
|
172
172
|
type noExtraBind struct{}
|
|
@@ -230,7 +230,7 @@ func bodyReferencesThis(node *shimast.Node) bool {
|
|
|
230
230
|
return found
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
//
|
|
233
|
+
// noLabels: labels (`outer: for (...) { break outer; }`) are
|
|
234
234
|
// confusing and rarely needed.
|
|
235
235
|
type noLabels struct{}
|
|
236
236
|
|
|
@@ -240,7 +240,7 @@ func (noLabels) Check(ctx *Context, node *shimast.Node) {
|
|
|
240
240
|
ctx.Report(node, "Unexpected labeled statement.")
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
//
|
|
243
|
+
// noLoneBlocks: `{ doStuff(); }` outside a control flow context —
|
|
244
244
|
// the braces add no scope (in non-strict mode) and obscure intent.
|
|
245
245
|
type noLoneBlocks struct{}
|
|
246
246
|
|
|
@@ -293,7 +293,7 @@ func (noLoneBlocks) Check(ctx *Context, node *shimast.Node) {
|
|
|
293
293
|
ctx.Report(node, "Block is redundant.")
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
//
|
|
296
|
+
// noLonelyIf: `else { if (...) {...} }` should be `else if (...)`.
|
|
297
297
|
type noLonelyIf struct{}
|
|
298
298
|
|
|
299
299
|
func (noLonelyIf) Name() string { return "no-lonely-if" }
|
|
@@ -321,7 +321,7 @@ func (noLonelyIf) Check(ctx *Context, node *shimast.Node) {
|
|
|
321
321
|
ctx.Report(node, "Unexpected if as the only statement in an else block.")
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
//
|
|
324
|
+
// noMultiAssign: `a = b = 1`. Confusing right-to-left chains.
|
|
325
325
|
type noMultiAssign struct{}
|
|
326
326
|
|
|
327
327
|
func (noMultiAssign) Name() string { return "no-multi-assign" }
|
|
@@ -342,7 +342,7 @@ func (noMultiAssign) Check(ctx *Context, node *shimast.Node) {
|
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
//
|
|
345
|
+
// noNegatedCondition: `if (!x) {} else {}`. Easier to read with the
|
|
346
346
|
// branches swapped.
|
|
347
347
|
type noNegatedCondition struct{}
|
|
348
348
|
|
|
@@ -397,7 +397,7 @@ func isNegatedExpression(node *shimast.Node) bool {
|
|
|
397
397
|
return false
|
|
398
398
|
}
|
|
399
399
|
|
|
400
|
-
//
|
|
400
|
+
// noNestedTernary: `a ? b : c ? d : e`.
|
|
401
401
|
type noNestedTernary struct{}
|
|
402
402
|
|
|
403
403
|
func (noNestedTernary) Name() string { return "no-nested-ternary" }
|
|
@@ -419,7 +419,7 @@ func hasConditional(node *shimast.Node) bool {
|
|
|
419
419
|
return expr != nil && expr.Kind == shimast.KindConditionalExpression
|
|
420
420
|
}
|
|
421
421
|
|
|
422
|
-
//
|
|
422
|
+
// noNew: `new Foo()` whose result is discarded. Either store it or
|
|
423
423
|
// avoid the constructor.
|
|
424
424
|
type noNew struct{}
|
|
425
425
|
|
|
@@ -435,7 +435,7 @@ func (noNew) Check(ctx *Context, node *shimast.Node) {
|
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
437
|
|
|
438
|
-
//
|
|
438
|
+
// noNewFunc: `new Function("...")` — a third form of dynamic eval.
|
|
439
439
|
type noNewFunc struct{}
|
|
440
440
|
|
|
441
441
|
func (noNewFunc) Name() string { return "no-new-func" }
|
|
@@ -454,8 +454,8 @@ func (noNewFunc) Check(ctx *Context, node *shimast.Node) {
|
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
//
|
|
458
|
-
//
|
|
457
|
+
// noObjectConstructor: `new Object()` / `Object()` — same shape as
|
|
458
|
+
// noArrayConstructor but for objects.
|
|
459
459
|
type noObjectConstructor struct{}
|
|
460
460
|
|
|
461
461
|
func (noObjectConstructor) Name() string { return "no-object-constructor" }
|
|
@@ -486,7 +486,7 @@ func (noObjectConstructor) Check(ctx *Context, node *shimast.Node) {
|
|
|
486
486
|
}
|
|
487
487
|
}
|
|
488
488
|
|
|
489
|
-
//
|
|
489
|
+
// noOctalEscape: `"\251"` — octal escapes in string literals are
|
|
490
490
|
// deprecated and forbidden in template literals.
|
|
491
491
|
type noOctalEscape struct{}
|
|
492
492
|
|
|
@@ -524,7 +524,7 @@ func hasOctalEscape(src string) bool {
|
|
|
524
524
|
return false
|
|
525
525
|
}
|
|
526
526
|
|
|
527
|
-
//
|
|
527
|
+
// noPlusplus: `++x` / `x++`. Equivalent to `x += 1`, considered less
|
|
528
528
|
// clear in some style guides.
|
|
529
529
|
type noPlusPlus struct{}
|
|
530
530
|
|
|
@@ -545,7 +545,7 @@ func (noPlusPlus) Check(ctx *Context, node *shimast.Node) {
|
|
|
545
545
|
}
|
|
546
546
|
}
|
|
547
547
|
|
|
548
|
-
//
|
|
548
|
+
// noRegexSpaces: multiple spaces in a regex literal — confusing
|
|
549
549
|
// because the count is invisible.
|
|
550
550
|
type noRegexSpaces struct{}
|
|
551
551
|
|
|
@@ -597,7 +597,7 @@ func regexHasMultipleSpaces(src string) bool {
|
|
|
597
597
|
return false
|
|
598
598
|
}
|
|
599
599
|
|
|
600
|
-
//
|
|
600
|
+
// noReturnAssign: `return a = b` mixes assignment with return.
|
|
601
601
|
type noReturnAssign struct{}
|
|
602
602
|
|
|
603
603
|
func (noReturnAssign) Name() string { return "no-return-assign" }
|
|
@@ -625,7 +625,7 @@ func (noReturnAssign) Check(ctx *Context, node *shimast.Node) {
|
|
|
625
625
|
}
|
|
626
626
|
}
|
|
627
627
|
|
|
628
|
-
//
|
|
628
|
+
// noSequences: `(a, b)` — comma operator. Almost always a confusing
|
|
629
629
|
// pattern outside of `for` headers.
|
|
630
630
|
type noSequences struct{}
|
|
631
631
|
|
|
@@ -653,7 +653,7 @@ func (noSequences) Check(ctx *Context, node *shimast.Node) {
|
|
|
653
653
|
ctx.Report(node, "Unexpected use of comma operator.")
|
|
654
654
|
}
|
|
655
655
|
|
|
656
|
-
//
|
|
656
|
+
// noShadowRestrictedNames: redeclaring `undefined`, `NaN`, `Infinity`,
|
|
657
657
|
// `arguments`, or `eval`.
|
|
658
658
|
type noShadowRestrictedNames struct{}
|
|
659
659
|
|
|
@@ -681,7 +681,7 @@ func (noShadowRestrictedNames) Check(ctx *Context, node *shimast.Node) {
|
|
|
681
681
|
}
|
|
682
682
|
}
|
|
683
683
|
|
|
684
|
-
//
|
|
684
|
+
// noUndefined: literal `undefined` (vs `void 0`). Easier to misuse
|
|
685
685
|
// because it's writable in older environments.
|
|
686
686
|
type noUndefined struct{}
|
|
687
687
|
|
|
@@ -695,7 +695,7 @@ func (noUndefined) Check(ctx *Context, node *shimast.Node) {
|
|
|
695
695
|
if parent == nil {
|
|
696
696
|
return
|
|
697
697
|
}
|
|
698
|
-
// Don't flag a declaration *named* `undefined` (
|
|
698
|
+
// Don't flag a declaration *named* `undefined` (noShadowRestrictedNames
|
|
699
699
|
// covers that), or a member-access / object-key position
|
|
700
700
|
// (`x.undefined`, `{ undefined: 1 }`).
|
|
701
701
|
switch parent.Kind {
|
|
@@ -734,7 +734,7 @@ func nodesShareLoc(a, b *shimast.Node) bool {
|
|
|
734
734
|
return a == b || (a.Pos() == b.Pos() && a.End() == b.End())
|
|
735
735
|
}
|
|
736
736
|
|
|
737
|
-
//
|
|
737
|
+
// noUnneededTernary: `x ? true : false` → `Boolean(x)` / `!!x`.
|
|
738
738
|
type noUnneededTernary struct{}
|
|
739
739
|
|
|
740
740
|
func (noUnneededTernary) Name() string { return "no-unneeded-ternary" }
|
|
@@ -811,7 +811,7 @@ func needsParensForUnaryNegation(node *shimast.Node) bool {
|
|
|
811
811
|
return false
|
|
812
812
|
}
|
|
813
813
|
|
|
814
|
-
//
|
|
814
|
+
// noUnusedExpressions: an expression statement whose value isn't used.
|
|
815
815
|
// Filtered down to common patterns ESLint flags by default.
|
|
816
816
|
type noUnusedExpressions struct{}
|
|
817
817
|
|
|
@@ -879,7 +879,7 @@ func isProductiveExpression(node *shimast.Node) bool {
|
|
|
879
879
|
return false
|
|
880
880
|
}
|
|
881
881
|
|
|
882
|
-
//
|
|
882
|
+
// noUselessCall: `func.call(undefined, ...args)` / `func.apply(undefined, args)`
|
|
883
883
|
// — call/apply with no this binding is just a regular call.
|
|
884
884
|
type noUselessCall struct{}
|
|
885
885
|
|
|
@@ -908,7 +908,7 @@ func (noUselessCall) Check(ctx *Context, node *shimast.Node) {
|
|
|
908
908
|
}
|
|
909
909
|
}
|
|
910
910
|
|
|
911
|
-
//
|
|
911
|
+
// noUselessComputedKey: `{ ["foo"]: 1 }` could be `{ foo: 1 }`.
|
|
912
912
|
type noUselessComputedKey struct{}
|
|
913
913
|
|
|
914
914
|
func (noUselessComputedKey) Name() string { return "no-useless-computed-key" }
|
|
@@ -943,7 +943,7 @@ func (noUselessComputedKey) Check(ctx *Context, node *shimast.Node) {
|
|
|
943
943
|
}
|
|
944
944
|
}
|
|
945
945
|
|
|
946
|
-
//
|
|
946
|
+
// noUselessRename: `import { x as x } from ...` / `const { x: x } = obj`
|
|
947
947
|
// — the rename is a no-op.
|
|
948
948
|
type noUselessRename struct{}
|
|
949
949
|
|
|
@@ -1013,7 +1013,7 @@ func reportUselessRenameFix(ctx *Context, node, propertyName, name *shimast.Node
|
|
|
1013
1013
|
)
|
|
1014
1014
|
}
|
|
1015
1015
|
|
|
1016
|
-
//
|
|
1016
|
+
// objectShorthand: `{ x: x }` → `{ x }`.
|
|
1017
1017
|
type objectShorthand struct{}
|
|
1018
1018
|
|
|
1019
1019
|
func (objectShorthand) Name() string { return "object-shorthand" }
|
|
@@ -1042,7 +1042,7 @@ func (objectShorthand) Check(ctx *Context, node *shimast.Node) {
|
|
|
1042
1042
|
)
|
|
1043
1043
|
}
|
|
1044
1044
|
|
|
1045
|
-
//
|
|
1045
|
+
// operatorAssignment: `x = x + 1` → `x += 1`.
|
|
1046
1046
|
type operatorAssignment struct{}
|
|
1047
1047
|
|
|
1048
1048
|
func (operatorAssignment) Name() string { return "operator-assignment" }
|
|
@@ -1082,7 +1082,7 @@ func isCompoundEligibleOperator(kind shimast.Kind) bool {
|
|
|
1082
1082
|
return false
|
|
1083
1083
|
}
|
|
1084
1084
|
|
|
1085
|
-
//
|
|
1085
|
+
// preferExponentiationOperator: `Math.pow(a, b)` → `a ** b`.
|
|
1086
1086
|
type preferExponentiationOperator struct{}
|
|
1087
1087
|
|
|
1088
1088
|
func (preferExponentiationOperator) Name() string { return "prefer-exponentiation-operator" }
|
|
@@ -1100,7 +1100,7 @@ func (preferExponentiationOperator) Check(ctx *Context, node *shimast.Node) {
|
|
|
1100
1100
|
ctx.Report(node, "Use the '**' operator instead of 'Math.pow'.")
|
|
1101
1101
|
}
|
|
1102
1102
|
|
|
1103
|
-
//
|
|
1103
|
+
// preferSpread: `fn.apply(null, args)` → `fn(...args)`.
|
|
1104
1104
|
type preferSpread struct{}
|
|
1105
1105
|
|
|
1106
1106
|
func (preferSpread) Name() string { return "prefer-spread" }
|
|
@@ -1131,7 +1131,7 @@ func (preferSpread) Check(ctx *Context, node *shimast.Node) {
|
|
|
1131
1131
|
}
|
|
1132
1132
|
}
|
|
1133
1133
|
|
|
1134
|
-
//
|
|
1134
|
+
// preferTemplate: string concatenation that would read better as a
|
|
1135
1135
|
// template literal — heuristic: any `+` involving a string literal AND
|
|
1136
1136
|
// a non-literal.
|
|
1137
1137
|
type preferTemplate struct{}
|
|
@@ -1277,7 +1277,7 @@ func escapeTemplateLiteralBody(text string) string {
|
|
|
1277
1277
|
return sb.String()
|
|
1278
1278
|
}
|
|
1279
1279
|
|
|
1280
|
-
//
|
|
1280
|
+
// requireYield: `function* gen() { return 1; }` — generators that
|
|
1281
1281
|
// never yield are usually unintended.
|
|
1282
1282
|
type requireYield struct{}
|
|
1283
1283
|
|
|
@@ -1337,7 +1337,7 @@ func subtreeContainsYield(node *shimast.Node) bool {
|
|
|
1337
1337
|
return found
|
|
1338
1338
|
}
|
|
1339
1339
|
|
|
1340
|
-
//
|
|
1340
|
+
// varsOnTop: `var` declarations should appear at the top of their
|
|
1341
1341
|
// function/script scope.
|
|
1342
1342
|
type varsOnTop struct{}
|
|
1343
1343
|
|