Socket
Socket
Sign inDemoInstall

@fimbul/mimir

Package Overview
Dependencies
14
Maintainers
2
Versions
125
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @fimbul/mimir

Core rules of the Fimbullinter project


Version published
Weekly downloads
1.1K
decreased by-0.09%
Maintainers
2
Install size
2.44 MB
Created
Weekly downloads
 

Changelog

Source

v0.24.0

:tada: This release contains two major features: caching and code fixes in the LanguageService plugin.

:warning: Breaking Changes:

The changes in the LanguageService plugin require that you update the @fimbul/mithotyn dependency and the fimbullinter.vscode-plugin VSCode plugin if you were using one of them.

Features:

  • new rule: no-object-spread-of-iterable warns about spreading an array into an object
  • new rule: no-implicit-tostring warns about implicit string coercion of certain types
  • new CLI option: --cache enables caching for fast incremental linting. Read more about caching
  • the LanguageService plugin uses caching to speed up linting in your editor
  • the LanguageService plugin now provides fixes for fixable findings

Readme

Source

Mímir

Core rules, formatters and configurations of the Fimbullinter project.

npm version npm downloads Renovate enabled CircleCI Build status codecov Join the chat at https://gitter.im/fimbullinter/wotan

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

:mag: requires type information :mag_right: works better with type information :wrench: fixable :nut_and_bolt: configurable :x: not enabled in recommended preset

RuleDescriptionDifference to TSLint rule / Why you should use it
async-function-assignability:mag: Diallows assinging a Promise-returning function to a void-returning type.No such rule in TSLint.
await-async-result:mag: Warns about not using the result of a call to an async function inside async functions.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:mag: :wrench: Finds uses of 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:mag: Disallows uses of global variables like 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:mag: Disallows delete of required properties.There's no similar TSLint rule.
generator-require-yieldRequires at least one yield inside generator functions.There's no similar TSLint rule.
new-parens:wrench: Requires parentheses when invoking constructors.Performance!
no-case-declarationDisallows 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:wrench: Bans debugger; statements from your production code.Performance!
no-duplicate-case:mag_right: Detects 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:mag: Detects properties in object literals with object spread that are always overridden.TSLint has no such rule.
no-fallthrough:mag_right: Prevents unintentional fallthough in switch statements from one case to another.Allows more comment variants such as fallthrough or fall through.
no-implicit-tostring:mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string.
no-invalid-assertion:mag: Disallows asserting a literal type to a different literal type of the same widened type, e.g. 'foo' as 'bar'.TSLint has no similar rule.
no-misused-genericsDetects 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-compareDisallows comparing with NaN, use isNaN(number) or Number.isNaN(number) instead.Performance!
no-object-spread-of-iterable:mag: Disallows spreading iterable types into an object.
no-octal-escape:wrench: Disallows octal escape sequences in strings and template strings.No such rule in TSLint.
no-restricted-property-access:mag: Disallows accessing properties via computed name that would not be accessible using a static name.TSLint has no similar rule.
no-return-await:wrench: Disallows unnecesary 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-variableDetects variables that are not initialized and never assigned a value.There's no similar TSLint rule.
no-uninferred-type-parameter:mag: Detects type parameters that are inferred as {} 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:mag_right: Disallows statements that will never be executed.TSLint removed their no-unreachable rule in v4.0.0.
no-unsafe-finallyDisallows control flow statements return, throw, break and continue inside the finally block of a try statement.Performance!
no-unstable-api-use:mag: Disallows uses of deprecated or experimental APIs.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:nut_and_bolt: Disallows side-effect free expressions whose value is not used.This one is a bit stricter than TSLint's no-unused-expression and checks for loops in addition.
no-unused-label:wrench: Disallows labels that are never used.TSLint only has label-position which doesn't check for unused labels.
no-useless-assertion:mag: :wrench: Disallows type assertions that don't change the type or are not necessary in the first place.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:wrench: Disallows the declare keyword on statements without runtime value, e.g. declare type T = any;.TSLint has no such rule.
no-useless-destructuringDetects array and object destructuring that doesn't assign to a variable.TSLint has no such rule.
no-useless-initializer:mag_right: :wrench: Disallows unnecessary initialization with 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:wrench: Disallows continue label; and break label; where the label is not necessary.There's no similar TSLint rule.
no-useless-predicate:mag: Detects redundant conditions that are either always true or always false.Combination of TSLint's strict-type-predicates, typeof-compare and parts of strict-boolean-expressions.
no-useless-spread:wrench: Disallows redundant array and object spread.There's no similar TSLint rule.
no-useless-strict:mag_right: :wrench: Disallows redundant 'use strict'; directives.TSLint had a rule to enforce 'use strict' everywhere.
no-useless-try-catch:wrench: Detects try statements or parts thereof that can be removed.There's no similar TSLint rule.
no-writeonly-property-read:mag: Disallows read access to properties that only have a set accessor.There's no similar TSLint rule.
parameter-properties:wrench: :nut_and_bolt: :x: Enforces or disallows the use of parameter properties.TSlint only has no-parameter-properties to disallow all parameter properties and has no autofixer.
prefer-const:wrench: :nut_and_bolt: Enforces the use of 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:mag: :wrench: Enforces the use of 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:mag: Prefer for...of loops over regular for loops where possible.Avoids the false positives of TSLint's prefer-for-of rule.
prefer-namespace-keyword:wrench: Prefer namespace foo {} over module foo {} to avoid confusion with ECMAScript modules.Same as TSLint's no-internal-module.
prefer-number-methods:mag: :wrench: Prefer ES2015's Number.isNaN and Number.isFinite over the global isNaN and isFinite.No similar rule in TSLint.
prefer-object-spread:mag: :wrench: Prefer object spread over 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:mag: Enforces returning or throwing the result of a function of method call that returns never.TSLint has no similar rule.
syntaxcheck:mag: :x: Reports syntax errors as lint errors.Used to be part of the deprecated tslint --type-check
trailing-newline:wrench: Enforces a line break at the end of each file.Nothing fancy here :(
try-catch-return-await:mag: :wrench: Enforces the use of return await foo; inside try-catch in async functions where foo is a Promise-like value.TSLint has no similar rule.
type-assertion:wrench: :nut_and_bolt: :x: Enforces a single type assertion style: "classic" <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:mag: :x: TypeScript's compile errors as lint errors.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

Keywords

FAQs

Last updated on 19 Feb 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc