@ttsc/lint 0.18.4 → 0.19.0
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 +95 -43
- package/go.mod +5 -4
- package/internal/rulecode/rulecode.go +88 -0
- package/lib/index.d.ts +10 -1
- package/lib/index.js +45 -17
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintConfig.d.ts +3 -0
- package/lib/structures/TtscLintRuleSetting.d.ts +3 -2
- package/lib/structures/format/ITtscLintFormat.d.ts +3 -2
- package/lib/structures/format/ITtscLintFormatSortImports.d.ts +20 -4
- package/lib/structures/rules/ITtscLintBoundariesRuleOptions.d.ts +80 -8
- package/lib/structures/rules/ITtscLintBoundariesRules.d.ts +6 -8
- package/lib/structures/rules/ITtscLintContributorRules.d.ts +18 -2
- package/lib/structures/rules/ITtscLintCoreRuleOptions.d.ts +347 -0
- package/lib/structures/rules/ITtscLintCoreRuleOptions.js +3 -0
- package/lib/structures/rules/ITtscLintCoreRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintCoreRules.d.ts +101 -67
- package/lib/structures/rules/ITtscLintRegexpRules.d.ts +7 -2
- package/lib/structures/rules/ITtscLintRuleOptionsMap.d.ts +53 -7
- package/lib/structures/rules/ITtscLintRules.d.ts +6 -2
- package/lib/structures/rules/ITtscLintSolidRules.d.ts +0 -8
- package/lib/structures/rules/ITtscLintTypeScriptRuleOptions.d.ts +206 -0
- package/lib/structures/rules/ITtscLintTypeScriptRuleOptions.js +8 -0
- package/lib/structures/rules/ITtscLintTypeScriptRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintTypeScriptRules.d.ts +55 -42
- package/lib/structures/rules/ITtscLintUnicornRuleOptions.d.ts +276 -0
- package/lib/structures/rules/ITtscLintUnicornRuleOptions.js +3 -0
- package/lib/structures/rules/ITtscLintUnicornRuleOptions.js.map +1 -0
- package/lib/structures/rules/ITtscLintUnicornRules.d.ts +44 -36
- package/lib/structures/rules/index.d.ts +3 -0
- package/lib/structures/rules/index.js +3 -0
- package/lib/structures/rules/index.js.map +1 -1
- package/linthost/ast_helpers.go +521 -23
- package/linthost/ast_selector_matcher.go +1628 -0
- package/linthost/ast_selector_parser.go +628 -0
- package/linthost/comment_scan.go +154 -0
- package/linthost/compile.go +129 -79
- package/linthost/config.go +352 -88
- package/linthost/config_format.go +15 -1
- package/linthost/contrib_adapter.go +47 -8
- package/linthost/declaration_rules.go +12 -11
- package/linthost/directives.go +9 -67
- package/linthost/dispatch.go +37 -3
- package/linthost/engine.go +368 -53
- package/linthost/escape_string.go +77 -0
- package/linthost/fix.go +133 -23
- package/linthost/flags_gen.go +18 -17
- package/linthost/format.go +73 -167
- package/linthost/format_editor_settings.go +134 -26
- package/linthost/grapheme_tables_gen.go +1920 -0
- package/linthost/host.go +160 -61
- package/linthost/literal_escape_scan.go +117 -0
- package/linthost/lsp.go +545 -98
- package/linthost/numeric_literal_precision.go +228 -0
- package/linthost/polyfill_browserslist.go +1439 -0
- package/linthost/polyfill_browserslist_config.go +603 -0
- package/linthost/polyfill_corejs.go +750 -0
- package/linthost/polyfill_data.go +113 -0
- package/linthost/polyfill_data_gen.json +39868 -0
- package/linthost/print_nodes_array.go +7 -1
- package/linthost/print_nodes_object.go +7 -1
- package/linthost/project_engine.go +151 -0
- package/linthost/project_rules.go +78 -0
- package/linthost/regex_clean.go +191 -0
- package/linthost/regex_tree.go +1544 -0
- package/linthost/regex_tree_optimizer.go +1685 -0
- package/linthost/regexp_cache.go +44 -0
- package/linthost/rule_codes.go +105 -0
- package/linthost/rule_codes.json +745 -0
- package/linthost/rules_ban_ts_comment.go +312 -0
- package/linthost/rules_boundaries.go +128 -43
- package/linthost/rules_boundaries_dependencies.go +1013 -0
- package/linthost/rules_core_extra.go +62 -92
- package/linthost/rules_cypress.go +1 -1
- package/linthost/rules_default_case.go +87 -11
- package/linthost/rules_dupes.go +38 -13
- package/linthost/rules_empty.go +188 -20
- package/linthost/rules_escape.go +62 -48
- package/linthost/rules_format_arrow_parens.go +19 -5
- package/linthost/rules_format_bracket_spacing.go +1 -1
- package/linthost/rules_format_clause_join.go +1 -1
- package/linthost/rules_format_declaration_header.go +31 -19
- package/linthost/rules_format_indent.go +1 -1
- package/linthost/rules_format_jsdoc.go +1 -1
- package/linthost/rules_format_orphan_semi.go +1 -1
- package/linthost/rules_format_parameter_properties.go +17 -7
- package/linthost/rules_format_print_width.go +1 -1
- package/linthost/rules_format_quote_props.go +1 -1
- package/linthost/rules_format_quotes.go +1 -1
- package/linthost/rules_format_semi.go +106 -79
- package/linthost/rules_format_sort_imports.go +79 -45
- package/linthost/rules_format_statement_split.go +1 -1
- package/linthost/rules_format_ternary_nullish_parens.go +1 -1
- package/linthost/rules_format_trailing_comma.go +64 -1
- package/linthost/rules_format_whitespace.go +1 -1
- package/linthost/rules_functional.go +21 -22
- package/linthost/rules_gap.go +80 -3
- package/linthost/rules_grouped_accessor_pairs.go +84 -25
- package/linthost/rules_guard_for_in.go +64 -147
- package/linthost/rules_jsx_a11y.go +232 -22
- package/linthost/rules_logic.go +84 -38
- package/linthost/rules_nextjs.go +105 -16
- package/linthost/rules_no_class_assign.go +70 -0
- package/linthost/rules_no_duplicate_imports.go +266 -0
- package/linthost/rules_no_else_return.go +156 -38
- package/linthost/rules_no_extend_native.go +113 -17
- package/linthost/rules_no_fallthrough.go +1013 -0
- package/linthost/rules_no_func_assign.go +70 -0
- package/linthost/rules_no_import_assign.go +278 -86
- package/linthost/rules_no_inner_declarations.go +186 -0
- package/linthost/rules_no_loop_func.go +438 -53
- package/linthost/rules_no_mixed_operators.go +208 -52
- package/linthost/rules_no_param_reassign.go +376 -61
- package/linthost/rules_no_promise_executor_return.go +156 -0
- package/linthost/rules_no_restricted_imports.go +1013 -57
- package/linthost/rules_no_restricted_syntax.go +190 -26
- package/linthost/rules_no_useless_constructor.go +6 -36
- package/linthost/rules_problems.go +154 -311
- package/linthost/rules_promise.go +2578 -109
- package/linthost/rules_react_extras.go +71 -45
- package/linthost/rules_react_hooks.go +18 -2
- package/linthost/rules_react_perf.go +1 -0
- package/linthost/rules_react_refresh.go +1 -1
- package/linthost/rules_regexp.go +230 -14
- package/linthost/rules_security.go +45 -19
- package/linthost/rules_self.go +21 -1
- package/linthost/rules_solid.go +13 -7
- package/linthost/rules_storybook.go +1 -1
- package/linthost/rules_suggestions.go +490 -84
- package/linthost/rules_testing_library.go +12 -1
- package/linthost/rules_ts.go +227 -54
- package/linthost/rules_ts_async.go +0 -131
- package/linthost/rules_ts_no_base_to_string.go +3 -4
- package/linthost/rules_ts_no_misused_promises.go +817 -0
- package/linthost/rules_ts_no_restricted_types.go +320 -34
- package/linthost/rules_ts_no_unnecessary_qualifier.go +132 -55
- package/linthost/rules_ts_no_unsafe_assignment.go +608 -60
- package/linthost/rules_ts_require_array_sort_compare.go +5 -5
- package/linthost/rules_ts_switch_exhaustiveness_check.go +556 -86
- package/linthost/rules_unicorn_better_regex.go +224 -16
- package/linthost/rules_unicorn_consistent_destructuring.go +1002 -7
- package/linthost/rules_unicorn_consistent_existence_index_check.go +208 -29
- package/linthost/rules_unicorn_consistent_function_scoping.go +1041 -8
- package/linthost/rules_unicorn_consistent_template_literal_escape.go +178 -7
- package/linthost/rules_unicorn_escape_case.go +30 -19
- package/linthost/rules_unicorn_filename_case.go +763 -16
- package/linthost/rules_unicorn_import_style.go +783 -17
- package/linthost/rules_unicorn_isolated_functions.go +934 -14
- package/linthost/rules_unicorn_no_hex_escape.go +26 -11
- package/linthost/rules_unicorn_no_typeof_undefined.go +234 -25
- package/linthost/rules_unicorn_no_unnecessary_polyfills.go +376 -21
- package/linthost/rules_unicorn_no_unused_properties.go +756 -19
- package/linthost/rules_unicorn_number_literal_case.go +58 -39
- package/linthost/rules_unicorn_prefer_at.go +7 -3
- package/linthost/rules_unicorn_prefer_number_properties.go +381 -48
- package/linthost/rules_unicorn_prefer_optional_catch_binding.go +24 -24
- package/linthost/rules_unicorn_prefer_simple_condition_first.go +597 -19
- package/linthost/rules_unicorn_prefer_string_raw.go +147 -16
- package/linthost/rules_unicorn_prevent_abbreviations.go +1963 -95
- package/linthost/rules_unicorn_string_content.go +611 -15
- package/linthost/rules_unicorn_switch_case_break_position.go +172 -15
- package/linthost/rules_unicorn_template_indent.go +923 -18
- package/linthost/rules_unicorn_text_encoding_identifier_case.go +202 -42
- package/linthost/rules_unicorn_throw_new_error.go +218 -26
- package/linthost/rules_var.go +829 -142
- package/linthost/string_length.go +222 -0
- package/package.json +4 -3
- package/rule/project.go +145 -0
- package/rule/rule.go +58 -1
- package/src/index.ts +58 -17
- package/src/structures/ITtscLintConfig.ts +3 -0
- package/src/structures/TtscLintRuleSetting.ts +3 -2
- package/src/structures/format/ITtscLintFormat.ts +3 -2
- package/src/structures/format/ITtscLintFormatSortImports.ts +21 -4
- package/src/structures/rules/ITtscLintBoundariesRuleOptions.ts +122 -8
- package/src/structures/rules/ITtscLintBoundariesRules.ts +6 -8
- package/src/structures/rules/ITtscLintContributorRules.ts +18 -2
- package/src/structures/rules/ITtscLintCoreRuleOptions.ts +465 -0
- package/src/structures/rules/ITtscLintCoreRules.ts +122 -67
- package/src/structures/rules/ITtscLintRegexpRules.ts +7 -2
- package/src/structures/rules/ITtscLintRuleOptionsMap.ts +88 -7
- package/src/structures/rules/ITtscLintRules.ts +7 -2
- package/src/structures/rules/ITtscLintSolidRules.ts +0 -9
- package/src/structures/rules/ITtscLintTypeScriptRuleOptions.ts +248 -0
- package/src/structures/rules/ITtscLintTypeScriptRules.ts +64 -42
- package/src/structures/rules/ITtscLintUnicornRuleOptions.ts +350 -0
- package/src/structures/rules/ITtscLintUnicornRules.ts +60 -36
- package/src/structures/rules/index.ts +3 -0
package/linthost/rules_self.go
CHANGED
|
@@ -72,7 +72,9 @@ func (noSelfCompare) Check(ctx *Context, node *shimast.Node) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// isComparisonOperator reports whether kind is one of the eight standard
|
|
75
|
-
// comparison operators: ==, ===, !=, !==, <, >, <=, >=.
|
|
75
|
+
// comparison operators: ==, ===, !=, !==, <, >, <=, >=. Rules whose upstream
|
|
76
|
+
// operator set spans both equality and ordering (no-self-compare, use-isnan,
|
|
77
|
+
// no-compare-neg-zero, yoda) gate on this one.
|
|
76
78
|
func isComparisonOperator(kind shimast.Kind) bool {
|
|
77
79
|
switch kind {
|
|
78
80
|
case
|
|
@@ -89,6 +91,24 @@ func isComparisonOperator(kind shimast.Kind) bool {
|
|
|
89
91
|
return false
|
|
90
92
|
}
|
|
91
93
|
|
|
94
|
+
// isEqualityOperator reports whether kind is one of the four equality
|
|
95
|
+
// operators: ==, ===, !=, !==. It is the sameness-testing half of
|
|
96
|
+
// isComparisonOperator, for the rules whose upstream operator set stops at
|
|
97
|
+
// equality (valid-typeof, security/detect-possible-timing-attacks): the four
|
|
98
|
+
// relational operators order their operands instead of testing them for
|
|
99
|
+
// identity.
|
|
100
|
+
func isEqualityOperator(kind shimast.Kind) bool {
|
|
101
|
+
switch kind {
|
|
102
|
+
case
|
|
103
|
+
shimast.KindEqualsEqualsToken,
|
|
104
|
+
shimast.KindEqualsEqualsEqualsToken,
|
|
105
|
+
shimast.KindExclamationEqualsToken,
|
|
106
|
+
shimast.KindExclamationEqualsEqualsToken:
|
|
107
|
+
return true
|
|
108
|
+
}
|
|
109
|
+
return false
|
|
110
|
+
}
|
|
111
|
+
|
|
92
112
|
func init() {
|
|
93
113
|
Register(noSelfAssign{})
|
|
94
114
|
Register(noSelfCompare{})
|
package/linthost/rules_solid.go
CHANGED
|
@@ -15,9 +15,6 @@ func (r solidRule) Visits() []shimast.Kind {
|
|
|
15
15
|
return []shimast.Kind{shimast.KindSourceFile}
|
|
16
16
|
}
|
|
17
17
|
func (r solidRule) Check(ctx *Context, node *shimast.Node) {
|
|
18
|
-
if r.name == "jsx-uses-vars" {
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
18
|
state := collectSolidState(ctx)
|
|
22
19
|
if !state.hasSolid && r.name != "jsx-no-undef" {
|
|
23
20
|
return
|
|
@@ -191,7 +188,7 @@ func (s *solidState) collectVariable(node *shimast.Node) {
|
|
|
191
188
|
}
|
|
192
189
|
collectSolidBindingNames(decl.Name(), s.declared)
|
|
193
190
|
init := stripParens(decl.Initializer)
|
|
194
|
-
if init == nil {
|
|
191
|
+
if init == nil || init.Kind != shimast.KindCallExpression {
|
|
195
192
|
return
|
|
196
193
|
}
|
|
197
194
|
initCall := init.AsCallExpression()
|
|
@@ -206,7 +203,11 @@ func (s *solidState) collectVariable(node *shimast.Node) {
|
|
|
206
203
|
if binding == nil || binding.Elements == nil || len(binding.Elements.Nodes) == 0 {
|
|
207
204
|
return
|
|
208
205
|
}
|
|
209
|
-
|
|
206
|
+
firstNode := binding.Elements.Nodes[0]
|
|
207
|
+
if firstNode == nil || firstNode.Kind != shimast.KindBindingElement {
|
|
208
|
+
return
|
|
209
|
+
}
|
|
210
|
+
first := firstNode.AsBindingElement()
|
|
210
211
|
if first == nil {
|
|
211
212
|
return
|
|
212
213
|
}
|
|
@@ -464,7 +465,7 @@ func (s *solidState) reportPreferClassList(ctx *Context) {
|
|
|
464
465
|
continue
|
|
465
466
|
}
|
|
466
467
|
expr := solidJSXAttrExpression(attr)
|
|
467
|
-
if expr == nil {
|
|
468
|
+
if expr == nil || expr.Kind != shimast.KindCallExpression {
|
|
468
469
|
continue
|
|
469
470
|
}
|
|
470
471
|
call := expr.AsCallExpression()
|
|
@@ -565,6 +566,9 @@ func (s *solidState) reportStyleProp(ctx *Context) {
|
|
|
565
566
|
continue
|
|
566
567
|
}
|
|
567
568
|
for _, propNode := range obj.Properties.Nodes {
|
|
569
|
+
if propNode == nil || propNode.Kind != shimast.KindPropertyAssignment {
|
|
570
|
+
continue
|
|
571
|
+
}
|
|
568
572
|
prop := propNode.AsPropertyAssignment()
|
|
569
573
|
if prop == nil {
|
|
570
574
|
continue
|
|
@@ -731,6 +735,9 @@ func collectSolidBindingNames(node *shimast.Node, out map[string]bool) {
|
|
|
731
735
|
return
|
|
732
736
|
}
|
|
733
737
|
for _, elementNode := range pattern.Elements.Nodes {
|
|
738
|
+
if elementNode == nil || elementNode.Kind != shimast.KindBindingElement {
|
|
739
|
+
continue
|
|
740
|
+
}
|
|
734
741
|
el := elementNode.AsBindingElement()
|
|
735
742
|
if el != nil {
|
|
736
743
|
collectSolidBindingNames(el.Name(), out)
|
|
@@ -1052,7 +1059,6 @@ func init() {
|
|
|
1052
1059
|
"jsx-no-duplicate-props",
|
|
1053
1060
|
"jsx-no-script-url",
|
|
1054
1061
|
"jsx-no-undef",
|
|
1055
|
-
"jsx-uses-vars",
|
|
1056
1062
|
"no-array-handlers",
|
|
1057
1063
|
"no-destructure",
|
|
1058
1064
|
"no-innerhtml",
|
|
@@ -215,7 +215,7 @@ func (storybookNoTitlePropertyInMeta) Check(ctx *Context, node *shimast.Node) {
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
type storybookNoUninstalledAddons struct{}
|
|
218
|
+
type storybookNoUninstalledAddons struct{ optionsRule }
|
|
219
219
|
|
|
220
220
|
type storybookNoUninstalledAddonsOptions struct {
|
|
221
221
|
PackageJSONLocation string `json:"packageJsonLocation"`
|