Analyzer
CLI
New features
-
GritQL queries that match functions or methods will now match async functions or methods as well.
If this is not what you want, you can capture the
async
keyword (or its absence) in a metavariable and assert its emptiness:$async function foo() {} where $async <: .
Contributed by @arendjr
Bug fixes
- Fix #4077: Grit queries no longer need to match the statement's trailing semicolon. Contributed by @arendjr
Configuration
Editors
Formatter
Bug fixes
- Fix #3924 where GraphQL formatter panics in block comments with empty line. Contributed by @vohoanglong0107
JavaScript API
Linter
New features
- Add noTemplateCurlyInString. Contributed by @fireairforce
- Add NoOctalEscape. Contributed by @fireairforce
Bug fixes
-
noMisleadingCharacterClass no longer reports issues outside of character classes.
The following code is no longer reported:
/[a-z]👍/;
Contributed by @Conaclos
-
noUndeclaredDependencies no longer reports Node.js builtin modules as undeclared dependencies.
The rule no longer reports the following code:
import * as fs from "fs";
Contributed by @Conaclos
-
noUselessEscapeInRegex no longer panics on regexes that start with an empty character class. Contributed by @Conaclos
-
noUselessStringConcat no longer panics when it encounters malformed code. Contributed by @Conaclos
-
noUnusedFunctionParameters no longer reports unused parameters inside an object pattern with a rest parameter.
In the following code, the rule no longer reports
a
as unused.function f({ a, ...rest }) { return rest; }
This matches the behavior of noUnusedVariables.
Contributed by @Conaclos
-
useButtonType no longer reports dynamically created button with a valid type (#4072).
The following code is no longer reported:
React.createElement("button", { type: "button" }, "foo")
Contributed by @Conaclos
-
useSemanticElements now ignores elements with the
img
role (#3994).MDN recommends using
role="img"
for grouping images or creating an image from other elements.
The following code is no longer reported:<div role="img" aria-label="That cat is so cute"> <p>🐈 😂</p> </div>
Contributed by @Conaclos
-
useSemanticElements now ignores
alert
andalertdialog
roles (#3858). Contributed by @Conaclos -
noUselessFragments don't create invaild JSX code when Fragments children contains JSX Expression and in a LogicalExpression. Contributed by @fireairforce
Parser
Bug fixes
- Forbid undefined as type name for typescript parser. Contributed by @fireairforce
What's Changed
Other changes
- test(format/html): reenable snapshot tests by @dyc3 in #3979
- refactor(lint): set version field for new rules by @Conaclos in #3995
- docs: improve documentation of rule by @ematipico in #3999
- feat(linter): implement noOctalEscape by @fireairforce in #3986
- feat(grit): implement GritQL log() function by @arendjr in #4003
- fix(html/parser): support root element list by @suxin2017 in #3985
- feat(html/formatter): self close tag add slash char by @suxin2017 in #3984
- chore(readme): use polar shield by @ematipico in #4000
- feat: add additional
FeatureKind
entries for debug features by @dyc3 in #3892 - feat(formatter/html): add line break at the end of files by @dyc3 in #4010
- fix(parser/html): fix incorrect parsing when text starts with a quote by @dyc3 in #4011
- chore(cli): replace PanicInfo -> PanicHookInfo by @minht11 in #4015
- chore: enforce usage of to_ascii_lowercase_cow by @minht11 in #4014
- chore: fix udeps failure by @dyc3 in #4016
- feat(linter): implement useExplicitFunctionReturnType by @kaykdm in #3990
- fix(parser/html): allow multi line attribute values by @dyc3 in #4018
- feat(lsp):
noExcessiveCognitiveComplexity
diagnostic shows levels by @chrisgrieser in #4028 - feat(html): implement debug features for html by @dyc3 in #4019
- fix(parser/html): add
param
to void elements list by @dyc3 in #4020 - feat(html): resolve format options by @dyc3 in #4017
- test(format/grit): add tests for grit formatter by @branberry in #3937
- perf(grit): use
to_ascii_lowercase_cow
by @dyc3 in #4053 - perf(linter): performance improvement for css semantic model by @togami2864 in #4044
- refactor(aria_metadata): generate ARIA metadata from specification by @Conaclos in #4055
- refactor(parser/html): refactor comments to be nodes in the tree by @dyc3 in #4056
- feat(markdown/parser): support thematic break block parser by @suxin2017 in #3982
- feat(linter): implement no-nested-ternary by @kaykdm in #4067
- fix(format/html): keep at most 1 empty line between elements by @dyc3 in #4057
- fix(schema): make optional the
options
JSON schema field by @Conaclos in #4080 - feat(grit): implement disregarded snippet nodes by @arendjr in #4084
- chore: to_lowercase -> to_lowercase_cow by @minht11 in #4030
- docs: fix
isNan
toisNaN
by @Omochice in #4106
New Contributors
- @kaykdm made their first contribution in #3990
- @chrisgrieser made their first contribution in #4028
- @Omochice made their first contribution in #4106
Full Changelog: cli/v1.9.2...cli/v1.9.3-nightly.75b4387