Mímir
Core rules, formatters and configurations of the Fimbullinter project.
Make sure to also read the full documentation of all available modules.
Purpose
This library contains all core rules, formatters and configuration presets of the Fimbullinter project. As a typical user you don't need to explicitly install this package. It's already installed as a dependency of Wotan.
Rules
recommended
preset
Rule | Description | Difference to TSLint rule / Why you should use it |
---|---|---|
async-function-assignability |
Promise -returning function to a void -returning type. |
No such rule in TSLint. |
await-async-result |
|
TSLint's no-floating-promises requires you to specify a list of Promise names, it checks outside of async functions and only requires you to register the onrejected callback. |
await-only-promise |
await on non-Promise values. Also checks for await loops. |
Works for all PromiseLike and Thenable types out of the box without any configuration. |
ban-dom-globals |
name or event . Using these variables is most likely not intended. |
There's an open PR to add a similar rule to TSLint. |
delete-only-optional-property |
delete of required properties. |
There's no similar TSLint rule. |
generator-require-yield |
Requires at least one yield inside generator functions. |
There's no similar TSLint rule. |
new-parens |
|
Performance! |
no-case-declaration |
Disallows let , class and enum in case blocks. |
TSLint has no similar rule, ESLint has no-case-declarations which forbids function declarations as well. |
no-debugger |
debugger; statements from your production code. |
Performance! |
no-duplicate-case |
switch statements where multiple case clauses check for the same value. |
This implementation tries to infer the value instead of just comparing the source code. |
no-duplicate-spread-property |
|
TSLint has no such rule. |
no-fallthrough |
switch statements from one case to another. |
Allows more comment variants such as fallthrough or fall through . |
no-implicit-tostring |
|
|
no-invalid-assertion |
'foo' as 'bar' . |
TSLint has no similar rule. |
no-misused-generics |
Detects generic type parameters that cannot be inferred from the functions parameters. It also detects generics that don't enforce any constraint between types. | There's no similar TSLint rule. |
no-nan-compare |
Disallows comparing with NaN , use isNaN(number) or Number.isNaN(number) instead. |
Performance! |
no-object-spread-of-iterable |
|
|
no-octal-escape |
|
No such rule in TSLint. |
no-restricted-property-access |
|
TSLint has no similar rule. |
no-return-await |
return await foo; when you can simply return foo;
|
The same as TSLint's rule. I wrote both, but this one is faster. |
no-unassigned-variable |
Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule. |
no-uninferred-type-parameter |
{} because the compiler cannot infer a type. |
Really checks every type parameter of function, method and constructor calls. Correctly handles type parameters from JSDoc comments. Recognises type parameter defaults on all merged declarations. |
no-unreachable-code |
|
TSLint removed their no-unreachable rule in v4.0.0. |
no-unsafe-finally |
Disallows control flow statements return , throw , break and continue inside the finally block of a try statement. |
Performance! |
no-unstable-api-use |
|
This rule checks element accesses (foo[bar] ), JSX elements, chained function calls (getFn()() ) in addition to what TSLint's deprecation rule does and has more useful error reporting. |
no-unused-expression |
|
This one is a bit stricter than TSLint's no-unused-expression and checks for loops in addition. |
no-unused-label |
|
TSLint only has label-position which doesn't check for unused labels. |
no-useless-assertion |
|
TSLint's no-unnecessary-type-assertion does not detect assertions needed to silence the compiler warning Variable ... is used before being assigned. The Wotan builtin rule also checks whether the assertion is necessary at all or the receiver accepts the original type. |
no-useless-declare |
declare keyword on statements without runtime value, e.g. declare type T = any; . |
TSLint has no such rule. |
no-useless-destructuring |
Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule. |
no-useless-initializer |
undefined and useless destructuring defaults. |
TSLint's rule no-unnecessary-initializer doesn't fix all parameter initializers and gives false positives for destructuring. |
no-useless-jump-label |
continue label; and break label; where the label is not necessary. |
There's no similar TSLint rule. |
no-useless-predicate |
|
Combination of TSLint's strict-type-predicates , typeof-compare and parts of strict-boolean-expressions . |
no-useless-spread |
|
There's no similar TSLint rule. |
no-useless-strict |
'use strict'; directives. |
TSLint had a rule to enforce 'use strict' everywhere. |
no-useless-try-catch |
try statements or parts thereof that can be removed. |
There's no similar TSLint rule. |
no-writeonly-property-read |
set accessor. |
There's no similar TSLint rule. |
parameter-properties |
|
TSlint only has no-parameter-properties to disallow all parameter properties and has no autofixer. |
prefer-const |
const for variables that are never reassigned. |
TSLint's prefer-const rule gives some false positives for merged declarations and variables used before being declared which results in a compiler or runtime error after fixing. |
prefer-dot-notation |
obj.foo instead of obj['foo'] where possible. |
Similar to TSLint's no-string-literal rule, but more performant and more correct by avoiding compile errors after fixing. |
prefer-for-of |
for...of loops over regular for loops where possible. |
Avoids the false positives of TSLint's prefer-for-of rule. |
prefer-namespace-keyword |
namespace foo {} over module foo {} to avoid confusion with ECMAScript modules. |
Same as TSLint's no-internal-module . |
prefer-number-methods |
Number.isNaN and Number.isFinite over the global isNaN and isFinite . |
No similar rule in TSLint. |
prefer-object-spread |
Object.assign for copying properties to a new object. |
Performance, better handling of parens in fixer and avoids false positives that would cause a compile error when fixed. |
return-never-call |
return ing or throw ing the result of a function of method call that returns never . |
TSLint has no similar rule. |
syntaxcheck |
|
Used to be part of the deprecated tslint --type-check
|
trailing-newline |
|
Nothing fancy here :( |
try-catch-return-await |
return await foo; inside try-catch in async functions where foo is a Promise -like value. |
TSLint has no similar rule. |
type-assertion |
<T>obj or "as" obj as T . |
TSLint has only no-angle-bracket-type-assertion which always enforces as and forgets to add parens when autofixing some cases. |
typecheck |
|
Like the deprecated tslint --type-check but formatted and can be disabled like any other rule. |
Formatters
stylish
json
Configuration Presets
-
wotan:recommended
contains recommended builtin rules. This configuration only adds new rules in major versions. -
wotan:latest
contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.
License
Apache-2.0 © Klaus Meinhardt