@ttsc/lint 0.18.3 → 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 +129 -25
- 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
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Embedded compatibility dataset for `unicorn/no-unnecessary-polyfills`.
|
|
2
|
+
//
|
|
3
|
+
// `polyfill_data_gen.json` is generated by
|
|
4
|
+
// `packages/lint/tools/polyfilldata/generate.mjs` from pinned upstream
|
|
5
|
+
// packages (core-js-compat, caniuse-lite, node-releases,
|
|
6
|
+
// electron-to-chromium, browserslist) and must never be edited by hand; the
|
|
7
|
+
// provenance block inside the file names the exact versions. This file only
|
|
8
|
+
// decodes the artifact into the shapes the browserslist and core-js-compat
|
|
9
|
+
// ports consume.
|
|
10
|
+
package linthost
|
|
11
|
+
|
|
12
|
+
import (
|
|
13
|
+
_ "embed"
|
|
14
|
+
"encoding/json"
|
|
15
|
+
"fmt"
|
|
16
|
+
"sync"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
//go:embed polyfill_data_gen.json
|
|
20
|
+
var polyfillDataJSON []byte
|
|
21
|
+
|
|
22
|
+
// polyfillBrowserslistConstants carries the version-pinned constants baked
|
|
23
|
+
// into browserslist's query engine.
|
|
24
|
+
type polyfillBrowserslistConstants struct {
|
|
25
|
+
AndroidEvergreenFirst string `json:"androidEvergreenFirst"`
|
|
26
|
+
OpMobBlinkFirst int `json:"opMobBlinkFirst"`
|
|
27
|
+
Dead []string `json:"dead"`
|
|
28
|
+
Defaults []string `json:"defaults"`
|
|
29
|
+
Aliases map[string]string `json:"aliases"`
|
|
30
|
+
DesktopNames map[string]string `json:"desktopNames"`
|
|
31
|
+
FirefoxEsr string `json:"firefoxEsr"`
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// polyfillCoreJsTables carries the engine alias and valid-target tables of
|
|
35
|
+
// core-js-compat's targets parser.
|
|
36
|
+
type polyfillCoreJsTables struct {
|
|
37
|
+
Aliases map[string]string `json:"aliases"`
|
|
38
|
+
ValidTargets []string `json:"validTargets"`
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// polyfillUsageEntry is one "version → global usage percentage" pair in the
|
|
42
|
+
// JS object-key order browserslist iterates.
|
|
43
|
+
type polyfillUsageEntry struct {
|
|
44
|
+
Version string `json:"v"`
|
|
45
|
+
Usage float64 `json:"u"`
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// polyfillReleaseDateEntry is one "version → release epoch seconds" pair in
|
|
49
|
+
// the JS object-key order browserslist iterates.
|
|
50
|
+
type polyfillReleaseDateEntry struct {
|
|
51
|
+
Version string `json:"v"`
|
|
52
|
+
Date float64 `json:"d"`
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// polyfillAgent is one caniuse-lite browser record normalized the way
|
|
56
|
+
// browserslist normalizes it at load time.
|
|
57
|
+
type polyfillAgent struct {
|
|
58
|
+
Name string `json:"name"`
|
|
59
|
+
Versions []string `json:"versions"`
|
|
60
|
+
Released []string `json:"released"`
|
|
61
|
+
Usage []polyfillUsageEntry `json:"usage"`
|
|
62
|
+
ReleaseDate []polyfillReleaseDateEntry `json:"releaseDate"`
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// polyfillNodeScheduleEntry is one node-releases EOL schedule row; only the
|
|
66
|
+
// bounds participate in `maintained node versions`.
|
|
67
|
+
type polyfillNodeScheduleEntry struct {
|
|
68
|
+
Start string `json:"start"`
|
|
69
|
+
End string `json:"end"`
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// polyfillData is the decoded artifact.
|
|
73
|
+
type polyfillData struct {
|
|
74
|
+
Browserslist polyfillBrowserslistConstants `json:"browserslist"`
|
|
75
|
+
CoreJs polyfillCoreJsTables `json:"coreJs"`
|
|
76
|
+
Modules []string `json:"modules"`
|
|
77
|
+
Compat map[string]map[string]string `json:"compat"`
|
|
78
|
+
Entries map[string][]string `json:"entries"`
|
|
79
|
+
EsModulesTargets map[string]string `json:"esModulesTargets"`
|
|
80
|
+
Agents []polyfillAgent `json:"agents"`
|
|
81
|
+
NodeVersions []string `json:"nodeVersions"`
|
|
82
|
+
NodeSchedule map[string]polyfillNodeScheduleEntry `json:"nodeSchedule"`
|
|
83
|
+
ElectronToChromium [][2]string `json:"electronToChromium"`
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var (
|
|
87
|
+
polyfillDataOnce sync.Once
|
|
88
|
+
polyfillDataValue *polyfillData
|
|
89
|
+
polyfillDataError error
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
// loadPolyfillData decodes the embedded artifact once. A decode failure is a
|
|
93
|
+
// packaging bug (the artifact is checked in and covered by tests), so callers
|
|
94
|
+
// treat the error as fatal for the rule; the engine's panic barrier keeps a
|
|
95
|
+
// corrupted build from taking down the whole run.
|
|
96
|
+
func loadPolyfillData() *polyfillData {
|
|
97
|
+
polyfillDataOnce.Do(func() {
|
|
98
|
+
data := &polyfillData{}
|
|
99
|
+
if err := json.Unmarshal(polyfillDataJSON, data); err != nil {
|
|
100
|
+
polyfillDataError = fmt.Errorf("polyfill_data_gen.json is corrupted: %w", err)
|
|
101
|
+
return
|
|
102
|
+
}
|
|
103
|
+
if len(data.Modules) == 0 || len(data.Agents) == 0 || len(data.NodeVersions) == 0 {
|
|
104
|
+
polyfillDataError = fmt.Errorf("polyfill_data_gen.json is missing required sections")
|
|
105
|
+
return
|
|
106
|
+
}
|
|
107
|
+
polyfillDataValue = data
|
|
108
|
+
})
|
|
109
|
+
if polyfillDataError != nil {
|
|
110
|
+
panic(polyfillDataError)
|
|
111
|
+
}
|
|
112
|
+
return polyfillDataValue
|
|
113
|
+
}
|