{"_id":"@fimbul/mimir","_rev":"147-ecc22084053899f6652e3f4d74df9b7c","name":"@fimbul/mimir","dist-tags":{"next":"0.25.0-dev.20210309","latest":"0.24.0"},"versions":{"0.4.0-dev.20180306":{"name":"@fimbul/mimir","version":"0.4.0-dev.20180306","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.4.0-dev.20180306","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.4.0-dev.20180306","_npmVersion":"5.6.0","_nodeVersion":"9.7.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-LdsO0YgcMlP2K/hUIdGgZV5eYQX4v8s1IQvevZNegbzbPu+KduCVFozVaVZTnK0k6PSxFXFr7aZwXOpm7ZLDfg==","shasum":"69d29b5945df3cfe62d9d54947d26a8f1b986e1c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.4.0-dev.20180306.tgz","fileCount":81,"unpackedSize":164771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+1/H2Zwg2IIffLvr9k2B1GMhIDZeY6v8IdIAjdS6l9QIgLJy8ssC3Bzw9tVHHKooHW5BhV43BJcFYdlKGQ/dYkJQ="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.4.0-dev.20180306_1520378314074_0.7314230373008295"},"_hasShrinkwrap":false},"0.4.0-dev.20180307":{"name":"@fimbul/mimir","version":"0.4.0-dev.20180307","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.3.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.4.0-dev.20180307","_npmVersion":"5.6.0","_nodeVersion":"9.7.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-019JJucSKefbZsf7U5A+5zD2tcQjBTgazoyXku3veK7hU76mrzFXfXEvjNOORxUN+20gr2mr+hJ5195iGqcj6A==","shasum":"a607ad128acc9a81aea749578b7605b26b45316a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.4.0-dev.20180307.tgz","fileCount":81,"unpackedSize":164759,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxRsTR9UnVkf8VVW6u6ZI9jstl02VgqewVdO/7QjvY5wIgEtLuBldz77JqXG+zXMiMuJ2vMwFBlSJ/baZQfUYg7ps="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.4.0-dev.20180307_1520464755758_0.1425769350017656"},"_hasShrinkwrap":false},"0.4.0-dev.20180308":{"name":"@fimbul/mimir","version":"0.4.0-dev.20180308","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.3.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.4.0-dev.20180308","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-N7eftaK9DoYakeoXGCpuEHDkhbUrAABxAso/+FS2YlpMCKOQEiZNvK9PAm1sKRjgQL88BONbltOHhl1+dJDt7A==","shasum":"45105e693a967ed30a50ddad6a648cb7026c164b","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.4.0-dev.20180308.tgz","fileCount":81,"unpackedSize":164759,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjhDNJEQOxIBc0lV7gcBnLmXY3azyS5AQfSid1bOS8WgIgN2yif+4WlTnMheaNb+f/4PtT2jLrPbiAz3P0icX06wI="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.4.0-dev.20180308_1520551164533_0.9192278172596369"},"_hasShrinkwrap":false},"0.4.0":{"name":"@fimbul/mimir","version":"0.4.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-9hhhzw0jSXmNTwBjK5PGDTWHwhylJHJsMzx0BWUQr86qoCc0++p7QGz8zppOcvShkHUVNq1p56HJPGj85Vzixg==","shasum":"30f129097fdad776941aa84e8cfcf867eb2ebca3","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.4.0.tgz","fileCount":81,"unpackedSize":164746,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkXnhrMCx5HpI6zC4HLH47PeAXOveK28/2C2Pgpa7g6gIgEdKI1ayE6QFIOIKfTyYWE5rygwouKEROlytqitVMNdg="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.4.0_1520630900912_0.07692920080591592"},"_hasShrinkwrap":false},"0.5.0-dev.20180311":{"name":"@fimbul/mimir","version":"0.5.0-dev.20180311","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.5.0-dev.20180311","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-h9s+KkaqVTPDbKVpHnzQpmbtgzF1f/b1Bjb1Mg0uZYSP7OqNOvUdYvufr3LdiADSJupsu084sWDmKVcqrVeNlw==","shasum":"6bd2a77900bccde19b062a9935a46e70e0dc7328","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.5.0-dev.20180311.tgz","fileCount":81,"unpackedSize":164747,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCur8bIyfA5gbQ6uFnJLtHsrq+bT5E5trNAMcf1Jxm04AIhAPS3Y3y1wtRDWWRyB4UauYBGIXK7RV9Snn0xQEYQQC9q"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.5.0-dev.20180311_1520810486367_0.8337825192065473"},"_hasShrinkwrap":false},"0.5.0-dev.20180313":{"name":"@fimbul/mimir","version":"0.5.0-dev.20180313","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/ymir.svg)](https://www.npmjs.com/package/@fimbul/ymir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.5.0-dev.20180313","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Pk6QDWaLArC5NpcZIdjUGl93lEgP2yrvWDcXPVkazmBjIQ+gE0IhNocxmt+pqwPzHvgUhCLLYRFGfKTqfyjOsg==","shasum":"78b374855dafd1da3e47f673fd71f6365699dc12","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.5.0-dev.20180313.tgz","fileCount":84,"unpackedSize":185100,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZGF+UZ97I54dX+qZNDhclHB8Db3fEf48hZPo7yzBEPgIhAIo6enWY2kN6MX5VYT9dyWKYYX6E9+kCiKjWrXe9oFWN"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.5.0-dev.20180313_1520983335556_0.11442459318890563"},"_hasShrinkwrap":false},"0.5.0":{"name":"@fimbul/mimir","version":"0.5.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-P5i2kMo86iTxH6HTIvYA4nJrGOP9tnSxwdTZA4BPxeWP2+2KcXmKNSuIa+b73yciYowUG0NnV3C8Qip1Y2Ovhw==","shasum":"5ba74f4ce28b7aec9ffa53ca5392e4297ff9c6ed","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.5.0.tgz","fileCount":87,"unpackedSize":196961,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqLllJg/SyHv7PabNcGoxFZg44f/2RbWfvPdAUVz8HRgIhAPfZTX5ad/ASofHjbmjX9ivdQdjyPFOQ7pGkQfXaLIPI"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.5.0_1521149206670_0.8749307924019238"},"_hasShrinkwrap":false},"0.6.0-dev.20180316":{"name":"@fimbul/mimir","version":"0.6.0-dev.20180316","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.6.0-dev.20180316","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Tn0Sp7byZeuoJg3DH9oHJtj1dK6eyXGoxfG2RA0RogsJvtPLlS1bCD0F9EB2Y0NnIPVVs0qW15Cl6DJCVj/4mA==","shasum":"4e13738322ae95750fb6830797c4c3751ce9dffc","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0-dev.20180316.tgz","fileCount":93,"unpackedSize":211753,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPUzuZX7vPtAP2Ee7BQUxar6hqzEIOl5yOXyZem8m+mgIgO3QUoajDS2UOKFDQOi/XZAeW0ReGhjaf+kjFd9XUqbU="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0-dev.20180316_1521242610359_0.16959198864411196"},"_hasShrinkwrap":false},"0.6.0-dev.20180318":{"name":"@fimbul/mimir","version":"0.6.0-dev.20180318","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.6.0-dev.20180318","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-7HJl9swyBav0aOfcIf/ua3l5fDe7kAkLUtGw9yGjjMhPA1JAZFOPgtocJvGybqGkFWsoqDDiirz6/KhdIqUa+w==","shasum":"f17d0f859a4d46d12337fe17b1aef502c72546d2","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0-dev.20180318.tgz","fileCount":96,"unpackedSize":215715,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHlav3WmvfXuoIXmSPZGTp1UHhyS7BpYoj8oR1kiqdTGAiB4DMyP0KUR2TFZ2fQ29SKFywpNMLLR273z3Jl/R6HONg=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0-dev.20180318_1521415500719_0.1740631953405234"},"_hasShrinkwrap":false},"0.6.0-dev.20180320":{"name":"@fimbul/mimir","version":"0.6.0-dev.20180320","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.4.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.6.0-dev.20180320","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-fi6a3FTBs9QQvBMf9TmvcxKjLlZXTsgvJ/CfeU3osUyj+dIjXy4EIApPcZHvsCfjtLk2TyqR1npu7/cuFbWAjw==","shasum":"0d431e67b8af5e6cffaa571f780d87c2a57680c7","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0-dev.20180320.tgz","fileCount":99,"unpackedSize":222521,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcXBHmi84aQkmEoRrWlZ6eVktKFFVHHhznJMJIXSzcogIhAO68nRHQLABUUwyDBhpBwrUDT6aYGtzHLGug21Zut1qP"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0-dev.20180320_1521588371399_0.44141875743165526"},"_hasShrinkwrap":false},"0.6.0-dev.20180321":{"name":"@fimbul/mimir","version":"0.6.0-dev.20180321","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0-dev.20180321","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`no-misused-generics` | Detects generic type parameters that cannot be inferred from the functions parameters. | There's no similar TSLint rule.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.6.0-dev.20180321","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-S3s8Evkxd8xaT/iCYM/2H2IO3yzRFfMiC99MF104sE5qfLnSOgb0LvARPKJdkvqnpzYxnMrTBrhUBssTt+BFJw==","shasum":"9b7ef5957bb28477673b429e220793e0233f28c4","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0-dev.20180321.tgz","fileCount":102,"unpackedSize":225307,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9COKmemnsdbtjrQdWeG58jYNoityizsml+25jpaWJwgIgPQzdQ6Dez1KwCOb/gIduHVS6GW8xa9cL0EkO4u0gOtw="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0-dev.20180321_1521674855719_0.585110851764828"},"_hasShrinkwrap":false},"0.6.0-dev.20180322":{"name":"@fimbul/mimir","version":"0.6.0-dev.20180322","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0-dev.20180322","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.6.0-dev.20180322","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-gWarZMqzUCIQfiAq6XXVmDr5nmO0Jx+UZeHn2rHITc1J3oR5j0DwqT5pCZfW/ZIfv4L1CGpg6V1Qmg5zFeJHug==","shasum":"3c920269fa9c070fbdfaa5f3992ac55dc15631d0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0-dev.20180322.tgz","fileCount":102,"unpackedSize":226694,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzSRU0sHdN7S/4fHL1xZNVnpd0wia4jFLTXo7cV7vuRQIgOABK9IXIo4BE1C3LEEpVioRi7rVT4gn9pXqAsJDWVaM="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0-dev.20180322_1521761225687_0.19914914062039513"},"_hasShrinkwrap":false},"0.6.0":{"name":"@fimbul/mimir","version":"0.6.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-vHAUk546onhe7tIxgq1livsCWwBelrqMMR+eP3WjX2LeobERHlKql/wR+42jkhHcmauZMWGCC9EnG7XpVh3Djg==","shasum":"6e93349e5438138d791ce041750c578662ea0189","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.6.0.tgz","fileCount":105,"unpackedSize":234201,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyuk7UGlckbwjPCC8lYV7X5CyWkFAJ+5WrlEB/5Sv20AiBO0u+78jVYRqfo5nT52wr2trDbZCNt3p36aSHHvvnXgQ=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.6.0_1521841899044_0.855061599182303"},"_hasShrinkwrap":false},"0.7.0-dev.20180325":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180325","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | 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.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180325","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-VA4iDWpxmIEHHoT7AHoTpqrGfLgZxGXszi7bfuu+7SyQRJ/JR3TD32CF1FQlCVLNrjlq8EV/TDNs8VbjUdvhEA==","shasum":"f33ff94c902f662cfff9eebf06fe555608862909","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180325.tgz","fileCount":105,"unpackedSize":234655,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+feQfj05618Kx2yOvcNmeEJvK1KgEH3lCz5FcA0TcqAIhAJwyBmg22s5taR8JqNZhV17bNeG+Ynyxel74GcZPhnpQ"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180325_1522020494735_0.9180564399313813"},"_hasShrinkwrap":false},"0.7.0-dev.20180326":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180326","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.22.2"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | 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.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180326","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-/vsdH7IBs7B0tqsNx9Xqh/koXkRKPWUpLK71Xdp2zWonbAB2Nd70ZaBZwLb1hXg1uI270JsUtNcuZ1ojrDy+CA==","shasum":"e4ccbadea74b4b31e3276ee52f56985fd60079b1","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180326.tgz","fileCount":105,"unpackedSize":224628,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWzDbt15mB1zMSbQyuu+4GLU/x0UTDq5tmztDdP5zhGAiAs7cDnjQBhVB0AdVIK8qzm2yC41/htOx4TbooB2p0sVw=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180326_1522106942941_0.10833691515528088"},"_hasShrinkwrap":false},"0.7.0-dev.20180327":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180327","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | 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.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180327","_npmVersion":"5.6.0","_nodeVersion":"9.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-aAGEL4PF18KJ54kz+pjOuvCLMWDcHIDWi3jlApq6Mw+PgQqY7wgwO3kq7rpcDg4IckFeso927sEmz818R28NVA==","shasum":"ea97bb2adae264f4781944fdaa0949f80534fd4c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180327.tgz","fileCount":105,"unpackedSize":225046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJS+N3O4VOxuf8HiqrILZ+NP0b0oZofmVjRlvUGl3/RAiEA/xyoipbtWcVQp6rMMpchJh845Lh0Kz4VEj1Kc21x5ro="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180327_1522193383629_0.43772868272676435"},"_hasShrinkwrap":false},"0.7.0-dev.20180328":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180328","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | 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.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180328","_npmVersion":"5.6.0","_nodeVersion":"9.10.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-VLBiJKvIaAwn+HNxF7iAFy68f/SyaOxM8wzF4CF5T+CBo0Hl4k9FuNOrQNaMSfJ8Y4pupj75kC9DnGxz7cGkmQ==","shasum":"30d2f0c7adac04a1b0037c114cdb4199ab5ed920","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180328.tgz","fileCount":108,"unpackedSize":229205,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYYJCNGV2CCVDISgX8wQhlmQMKOcL1neR09jMlKfm3WwIhAKha0QsHP/ZrbAcGg+rbXKIHB+FMDBpTmvuvtb5DkB0R"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180328_1522279811195_0.33683085708877214"},"_hasShrinkwrap":false},"0.7.0-dev.20180331":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180331","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180331","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-grJQ9cczLe3gR7Tk0TdXIWO9XPMTkMkzI4jlSBmU5MLSrODCmp5mZwMO3nyv6PUP9I67FVnGyP6S8iERc3ZJ7A==","shasum":"5029201d0aaed9fb02aeaa617d3f8edcf64743a7","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180331.tgz","fileCount":111,"unpackedSize":232071,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+8saBuUZ9jfsKCyJ+0u1Y6o1234slvYcno6BpK+XwUAiBddR/EDuCDVg0dB/1voIEJwVGmpCYkT4T5Qrfs+dvVzA=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180331_1522539066271_0.5141484154900196"},"_hasShrinkwrap":false},"0.7.0-dev.20180404":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180404","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180404","_npmVersion":"5.6.0","_nodeVersion":"9.11.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Gz5C7HPdc4u5O4WN7fojxxVdmj8U2TQ1fE8mUC4fZ+Wl1nO2iwWbq5An2tPbbVg5iW91qK/A/fM7qMs+X+akxw==","shasum":"9d8be97c3df56c500d2e75c909d7c584eaec66d2","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180404.tgz","fileCount":114,"unpackedSize":234885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlRGpIBAOEFo++rRhn4VBG68UAx+CpXiSk2TQizEQuuAIgAmkm89xJIeLgIJvlagIvjmziytGB/WDdU2S5pGKY1qA="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180404_1522884745026_0.6027374663153482"},"_hasShrinkwrap":false},"0.7.0-dev.20180405":{"name":"@fimbul/mimir","version":"0.7.0-dev.20180405","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined`. | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.7.0-dev.20180405","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-hA+E9zX6pQwGC+ZAMiFwohFH1BHnkoHHH5+MlTcxBz/ekuO+OSz1fvleY3Ufi6MylGhI5vnj7sPCI7sgsvk0vg==","shasum":"81ba5b178f7b718d170595bbf5bf28026aedb2b0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0-dev.20180405.tgz","fileCount":114,"unpackedSize":235038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9Hq5sMqWR58TsobVkBgqU0/vs42SR3WQRChvCbWfm3QIgF8F8seitYefqeFEOKdkWPSwDtWaXyffRBOveHO2qUCw="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0-dev.20180405_1522971210993_0.7862968475539605"},"_hasShrinkwrap":false},"0.7.0":{"name":"@fimbul/mimir","version":"0.7.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.7.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-9dbQCKzMyLoMoRvR5KA8WLLMyao2sgz858T2WNn5Y80a2wLlUHL38/9T7Fp2PcdcCfuaUxOzIm8DeXe3hXWdgw==","shasum":"80c02e652587ec57e4c8f778c4196b113043ce5d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.7.0.tgz","fileCount":114,"unpackedSize":237181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQeDVjNOpynmBQ7pJ59aaChvmq+RY8CT4KzsD8btvV3QIgd8/rUXVX3BHiQ6YucWnjdMKRZ8dNMSJineotyOy/IKg="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.7.0_1523124840602_0.03100473888796995"},"_hasShrinkwrap":false},"0.8.0-dev.20180410":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180410","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.6.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180410","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-U5vNrnlCaoYucswSYdyKjjkniJAu2P1ANMp/L2HGqdhtQsWdCYfFyeRVGX6GKOr1HKwqv9hYtbwNXmGhhXPzTw==","shasum":"59ffbc28746b4bcd600c5aa6d53882dff95f910d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180410.tgz","fileCount":114,"unpackedSize":244670,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9fuS2NteHcL6C3HO+P6LHMea3RW2LjEF2bvHOHIEIfAIhAKKe0oNKhBnkHzty47H/xRbPDMuPcav0wrUxKdSMR4g/"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180410_1523403327459_0.8122865267810775"},"_hasShrinkwrap":false},"0.8.0-dev.20180411":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180411","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180411","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-umqu9ORUzT19Leq1ZWo60Y3ve1uCc5EZ7Mn42ytSlcGCGpsz4Yu+N73hgGmup6OZQZ2CUVf4VRDmwMvVcbXeGQ==","shasum":"b3360329fb05b99769c28ee223f3eb0b04844f8e","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180411.tgz","fileCount":114,"unpackedSize":243705,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHb0uT08lR0MxgE6kPGtbadgtZ0+nkewB0BWSc/FvbuCAiEA8R6n2mZ2jfVku1SVoPVC2gEz+aUOrab5nDmvVXLiW3Q="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180411_1523489726024_0.6576352732991406"},"_hasShrinkwrap":false},"0.8.0-dev.20180415":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180415","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180415","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-TnamE6zCKY2knJNf70W7xviFJT5Du0Z3UVA3YjSLLi5YXnI5lUcmuqwk/o748DRr3PDvR64i2KzO1PQ6iMZQmg==","shasum":"27999b43a65b01ee11d09255c25e04e266724fd9","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180415.tgz","fileCount":114,"unpackedSize":242450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa0+JiCRA9TVsSAnZWagAAmI4P/iGhXf79stHBKvTGgwzO\njgWNVLyA8U1k5MbXwttSYE0RY+JVhBLKi1bHDDq55LI2f98XUUetHVTamrHI\nCPSmc+EIn87toLdEB6Amb2gu0xWHwxqUbltnGr+WvANkjwc2GF2Vbdki6/QH\nDHm6zq21ewIZgnsRj8P604lMSs4cb0hSvASfLvrI6X5Uan1YlX5fADf8WyN6\n6bzeNMF6dLi2C6xEvWwMYldUFrnp9JROOrprw2JlIJqoMwPQUY6hmM4rmRgk\neMSzoqyNWl/ANMFMVTPvU4P07W8OYeWbvE0FCyxK4hTZblHLIehLP5/Fms0m\nybhRfYQTb57iVaxziSPmNN4VWbq+xgnQpl/p1SkhR9ubAbvqr4Pv5eYSyB9M\nb0lQmyzKq9oLazIiL9efEBfnUruTSN8/pWzdy4hEhkWuL/bd8ru/mjMjJqh/\nR8VZ5wiSabZxzAsPlaHK0p4/O07jdLxcRSkUjOGowo0JrtAMmcJcnLe89moR\nR5N7YGCK2ZSA1ibn18mwYqGHhSbALRFKau3wAs4/Zi/sYwL6okiE536gXNxC\niU7jRuOc6jHHzKovLksZU+6jiHmuZoV5XOmHlSYAS3JgqMOGZmQilBW1QO/M\nI+G1rHau66aWY+KUQTFD/keAj+Q7P9xyayenIm6bnzatqomGI2hxTdm3e6BW\nsMMz\r\n=Egkq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb4IUdqQUI6TfNexBjSSR2PG8TTENshFOM/Kd1mgVNKwIhAK14CUcD4/FGfkLC9btyDtEagdPC/xZaYR4q26yE2VFv"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180415_1523835490011_0.6919891617901686"},"_hasShrinkwrap":false},"0.8.0-dev.20180416":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180416","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180416","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-ROALN4sE85i0DEEzX0bkI7iKjfH4zTkqarhMSa/XjjPmLetsug6I45rgCa8MBDTlmQo9C40Q/H/VxTHTQsHgig==","shasum":"b95df64e7272a146f5d86102d6e8bf1d7ede8a1d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180416.tgz","fileCount":117,"unpackedSize":249388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1TQNCRA9TVsSAnZWagAAPJgP/11PCf2+tWxXUnGlF9WI\npSwkjA8pOfDmlidnJfft6g9dga5SSSUSjsKGkbKYxuPHM3nZ51aDCAqmR8UT\nADBlY+bm1/CQ6v9DR5s80H7syFgy0J9FW97tNaAxhtrBaRigv7WZUDAo+uJP\ne5LWFAp+UvJvtPV4YmwWVGhJihjAHvs8vbxqCtNyytH6GVtw4/EvhsQwrj7n\nwHG1L6Hbw/+51io7ijYcZ4tuepcNDFOo6PD72bCt/fvdoSou/Jj5qg5L9OB9\nMbQOvrRAvdbaZQIZOpDv24prZAPmSszl404P9LuuQ64X49VInl4taWAWdSdg\nMM0ZdJzQUxNm0OJSb7Pa7yvlMXBtM9Sye04wFYzb4BIsp78tfeuASYmX85+F\nyfeuA1A0u7x0UUVGRjDmI87x0Q1WUrVrSU64JdUAloDP0BIhVy8Njq91t0oz\nRmcleNvDjFaf2g7AJua29l3vH2C0FfP22F8Xso8YsoEI5g5UnNoQzJfCfZXb\n8Pj2VZMa+/LFJyNDWjePKCJaAriLrDoyMC8QzbYCx2XncPMR06CjysXW/v0O\nTOTH+5+0NnwCQ3ZJP/zm4Z32O86cbDXIs8g9iVLF6VF+RqZbRWFKXmpd//Ll\nPYekLTydNG3d+tbL+eTcnuA0krNlmQ/LkwWTmWowAiC4Vxfmw+WX/G02JdTj\nhQtR\r\n=GO2O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFK1O+PfX5kyk2POR8Jq+pzxPDQM/tQ4FeHo6RluUOf4AiEA7p/W/N9eWRBv2laBuw+w7ojds0aFV6HbpCkOTYExidc="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180416_1523921933252_0.5473039453071264"},"_hasShrinkwrap":false},"0.8.0-dev.20180419":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180419","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180419","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-9nz5jUYDtSo7VDare8Jj+LcwmaSGRB6k38UaACZxzf3DPmFq/Yl0HwG3t4B1MNqbYZwgKwI1hsk1SWjzUwzaPA==","shasum":"5d2a7b2eac6e374858feafc3b91aacc8d4363621","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180419.tgz","fileCount":117,"unpackedSize":250080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2Si8CRA9TVsSAnZWagAAR9YP/iOrPMhtZCICy29VlWJP\nd2En6TWxqeD3y/OESG3VPeiEVsBqMmglFicKCr/DUg9v3AbdiCpM9toPZT2F\n87HudbTZzN5fqMe3XFlUn1jISQlgIm707U9cQN1ZJKFzilzVlnLi6Qmd2xfH\n9MveShkKCiFGxxrCTApC7JbFriXYas5hISsM8j4wDM7neBbGuncb+pXuz2cs\ndi6H0ZqIQTXg7H0+AXSfQBzJMk8huSc6/8fFgwF1VyueF2CibKuUuWulK48W\nxIqmkQs7Ztr25LYf6gw62oARxazk4yHl/dUVWkQb50fjFf9rGVn+YLQaV3GP\na9q3V7PIY9bfQrp0WKnxwTF3dDXag5Ac+QBTC+IIJUt1RjIUb075AEHE6D+1\nb/eoV+xROtq3tfrbMzUi0ZneS312cT5KYYrR9POmoXaU2ya9WbFOE60WkQO4\ntYpy5aBVVu3z1kKIadKjq8HB4P3a/vBaU60wH6xTJcJW4QDXqyDIjGu97uUx\nFMYD9NsdpxMBFE+k4/glLAAAeb7h4Y16xuNimSbE5+mm8F2J40Qq2xcrZJNk\nd9JqhaGPmKwlDhmikQZTL9F0ba3AoRqfiwHGlEyHrCQNR8sOUL/DwWinf/0s\nMsqnqCy7gLR58LyorqeoOYG4rs3utMmRLCmWJEm0QKkdVWoO+Rqgnkyw4xpt\nrWvR\r\n=XiWu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9dxnAWeYfpZQkGVgq/R0a9IH360FlXhg71E69lshBOQIgTTNgNn56ssBSinSlp+khoD2qmyEWkBu1e4OE6KYvzyk="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180419_1524181179957_0.44664374944150076"},"_hasShrinkwrap":false},"0.8.0-dev.20180420":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180420","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180420","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Jv7x4on8mDAUnlmNILZpjK4YT9wbyWfo2pGRZ6nDchg0QH/XhBXuamyMYwmajnOU88HBFoepNSXNdg7gYptkqw==","shasum":"c7764e5e163419912994172811814d0513f4b26c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180420.tgz","fileCount":117,"unpackedSize":249698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2no5CRA9TVsSAnZWagAAFrMP/RsDx2BrFEJuece2IC5H\nxXBP2sCp27abDWMeht+We1vODkcey7bTrP0mBj9MbLnmJOruXYiEj0UWhk5c\nVziQj4VCMT4gc7H6hTP1wXfXcs0BHLY3u7VnOZXbIIvzfxUfJ7uAyZunoGTu\neqDJ/UH3lA68wncfZiN2hLA0xL0AqYykvoRYJHdP41bBPKdF6Xeuaj4PCVzX\n+w/vmuC4tlW0DR/ZvJAm8Qa7ho2RfqyY8DjGD22ZcPi8iTF+fN4GvGcoG92k\nb8N4Q3sR5keFBASfY0UH9+TW9VB0kMEIYOntktjlnhzofud1U+XwhuFxBQPv\n725i95HtYuJ0iHpB7MbpUEtLSDl5BQxnrGwobbVb8d4IqAKyoMhBmzoiY65v\nz+4AHj5bYOoARI0nBiaoKC4UEO062XxfwmDclAgPxNzzzNpOfNrpVtzxN0Bj\n0mOEKLr7IarXCynLmimdpmPynLPhX1LcmMmrI/4e5CPTlBgGKZlD4gLzek6D\nkYDar62FjSg+ylPsXd3XI8Q4uF3l/5YjCd/eqlPtzRrZBQSLY+DP58bP67SI\nxD2520qFwb8IK9U0RNgR0jwrRUWlQju842k+7F4/3Hv8SZrM2EBwZF772gpC\nZFKIRclV8ORa1aVsrKbxQut0iSllNvXemiEs8sVkZJ7sjApOiGjwavTEML4c\nQMUl\r\n=Q0cS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdGaZaVYNksuU9Yje2dDiSVIuHcfxA3sulCD8WCRO6vAiEAzkLVxU7TElCgt+ulMDVKqq70oTTPOAHPxEMEJZNJFpU="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180420_1524267577338_0.494595850820422"},"_hasShrinkwrap":false},"0.8.0-dev.20180421":{"name":"@fimbul/mimir","version":"0.8.0-dev.20180421","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0-dev.20180411","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.8.0-dev.20180421","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-xp8JXrrMf3lt+cynwf3yxrJ4195klG5CKYRMR/fjrQa1QShGV7pdcELjl+s7fqCMs3FNFGwA8FFxaSspFn4niA==","shasum":"b72b1652d722281e3be37736c3bf2cfa108b5f9c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0-dev.20180421.tgz","fileCount":117,"unpackedSize":249860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa28vzCRA9TVsSAnZWagAATKgP/iu0dLwI6eI4M3ukfZkL\nEbj1nBthkeQcCfM8n6YXyEaITqlMEmKnvBOnCdjFX8ZLjYpDUy2428/DAbkz\nG/XSO1nJAVn7E0NAQNJ7ycLdqXmNXvHzIkvp3hMNata9lClz5Gja6E3kWYsu\n643rOxWk9mxEhJ72m464UiFKAn8wRY/LntOuleTEVibVMqdwgAH458LAuuYF\nOm5chKbuJDpHuemkb9ELBSrQdCR31cRZo168NPIBne0qwR06PyPNHA1sG1cC\nLipi/XKdnM2jJ572StXDu0PIfgQyNM0Ygu7NobKHwOMfL4e0u4gOjBcdO/MK\nPWUtP+HOD14ZY5LKOZBY/UrhQwtHo1Gb0Vpfza7+p0I8AkRoewiWyaDFZ/uY\n+UxAyA1jdyu9KJXGBeGybp/ylhsV0PuhE3kt8qyyTEMrF8OR/nAsfMdLuhGZ\nCqpb2hRPRj6iTsOoBRIJ+kfFg9th4drBSdaUCS2QcoFN7EO25tuUgYGfe02w\nvlAzCJ4s9SJwCqP0I6p1zMCCiqdrQH0SCEgyRxZZ/nq3jRKg7uDnLv1zNqK1\npB2jq7+LKpiDRHwPM/jAjuAVwi0BjtRD16W2vo0EtB99NIGezcPbVTI9EyiH\nhLxgPO4XEDbtlsnhYtBbjqH6E0v64bAKUeL2To+KA3gk03U6h+ptskwpruz9\nTGOq\r\n=HCi2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/OrrGywIitgdDoS00Q1+Fq+uDaSaMLr2MvQyS4skLQAiEA+U8eojZfz1TRiEQDkmHA/yPxTdupcXEoIxduZGu1Gt4="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0-dev.20180421_1524354034491_0.8235486814798827"},"_hasShrinkwrap":false},"0.8.0":{"name":"@fimbul/mimir","version":"0.8.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.8.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.8.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-42fF2kGVyR02yPserMfn1tPMYouGHxyai/BnibIzJPvLl/BF+3+jqW+S/glz5FulauNlHJWjAwPVP1OPk8g33Q==","shasum":"7b9774ef04c17e807fc6feafd2c951340e024e2b","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.8.0.tgz","fileCount":117,"unpackedSize":249987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3ELHCRA9TVsSAnZWagAABv0P/164N0AxsgNZqcfcjhWy\nBBSJ8LVkdwcSPsFmMSv0F7oHnd134ndrstCtP/YzxfY0qKnG+Ojw2RG3/YV2\npxsdrs1HUP+DrnIx/TR8OVzUu2VAuqjxpKZq4ejz/tKZ0quZkux06G9yFtF4\nUd2mBbnWKe4B2ti1RwNHlZIadK/aqnM+us77svh6/6F+i2XZNvTRNyzUIt3B\nlveIqsxAlmj3TpUb0VPBE8SvhO5rCLC5LrsCfC4o7fCfJOgJTSXsp0C2FTc6\nhQHWlQb9etEukAdjGMJiQRMFnZycMgmSAFG8S50gajNPdaXebFUKD66vfzEq\nOdgpK4AVYEyjcQKYaXZmGs/JZFhPxtk3k07bvvB6H3wRtrb1g+eh5W0Es4yE\n9qPPHOZHp90OzgtvL7PLFACzev+USnZ/7SrwW4991z+ts5o7F2vXO+dqIVc3\nqH/Vbw066DUBzfNAregxWlpO+ze67Vu4aAG/lJmXQkueRfE4zHq068Uo4sXj\ncUH/bUrDeS9nsre/ykVUYFj8NmnkNNa7IRYklKoYp6J5eQtn+4k8gd9oJ8OF\nsQFwDHX5UMKomTEf2QTKWYyviYXhgkPhvYHIijjr+SCC7IkFlZ5ZxknIcY+J\nqZUtG496lqdEtoXTDJDKMa5A02h3cvDZhwotr7h//t5hOtNwSs+I+SJh7Fun\nB1wp\r\n=t7nk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMqcEgt+oswoWLG7eckzoN2pZ36wXOPlXWFanqI6oY1gIhAPW+OPX25Jo1B/K/w2rLKJFHjtTfz7fyoRDdGwjOIFKN"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.8.0_1524384453842_0.40917160607107617"},"_hasShrinkwrap":false},"0.9.0-dev.20180425":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180425","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180425","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-keitvCBDphUG2hwQS51xXTglIBfiXyzpVBY5j6MWmeDi13l3JluqoE01kddd7gNwRFSWqOCcNMOLFQ2aPtCrEQ==","shasum":"4112dbf843bd3c99a59815c127ff763b83d9ff46","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180425.tgz","fileCount":120,"unpackedSize":267674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4RKDCRA9TVsSAnZWagAAzi0P/2wT8btTsoCQPwDqMOx1\naYXK8CG2uRFUkV8F7odAy5ljYShFTcZmXgy/eYKiDrSB5Hb2xbImHDPZV8/H\n5EulSCQ/npCXvnNwM2BcXoXtlxrfQIyPxlCWBY8tvP2J6AWCGtg12QDMYDnY\navthk4vCk+tWAwqn3TZf1KpWJV7oHZ78hQiCSjoD3ZXX5VwVN5eRnFpcK2zZ\nJkDER9Fy1pS18bO60Dkh3OcalN1yHHD+cmAt1pNK+ERFfD05dFoQOPvbRHmh\nH+s4UFVOTnh4KxquMOoblwdybDz4ealfdCsreSWxnEVxtHz2MnFeRvodBeYY\nfbOHaAMmKoksbPvDb7kb0+LR+uPlxnW1J4vyV76ip7a4STBKbPLTaWMg9yKa\np+XgcqVrYS2/ltx7FfCNmt61kJHh0StmUuoOUon+FPy4kotG6f8KhGmqOFIU\nkleOpzw4cCir+1tSGq6Ed11eqswg06ICeiYGs7jZcMNc1ju5S3ymDgms+V9a\nU/LsO6YNAvC82Ev+MkniMSw43wzmIOI+fGSI1NSRVBgslBE2QopRibXLEGMR\nCzI68URGG2+7TGFvKjBn+X5/3J3+kVgolfsA01K5gDFffH3X0DYdw0BjSi96\nVkBZ4gKYhy45GjsWzfDwZH/Sy4U8F8doJUcpHzPqe+cUffPd6SCL9Rfk5hza\nOfD6\r\n=7Urw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5h23B6OPIYgXdDrzV3HrV9qoLSBK4J03dprNm9UIqZAIhANA5SolCmTrUD/OWx1VLOrVD1DO5Z5NsUIM9Dv0WTwen"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180425_1524699778329_0.9946635165427213"},"_hasShrinkwrap":false},"0.9.0-dev.20180426":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180426","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-duplicate-spread-property` | Detects properties in object literals that are overridden by a spreaded object. | TSLint has no such rule.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180426","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Dyl1coKzr6iamPNgtn5XdxNfv/Mg3VqOGhEezsEtH4KSeWOka1bQpWHbLe5Upxb/9dNJYuF1d1dLEZJk2bSZ5w==","shasum":"c2ec3d5ffcc8753d36072e250ee7743842dfc16f","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180426.tgz","fileCount":123,"unpackedSize":275543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4mQoCRA9TVsSAnZWagAAGSMP/0ZXFi6vlulcBHoRhtVO\n1lvv79eWXzzyMjGYA1h+p67eVXLwNWdMlgcGLZLDsPj0Ii5QBY9kfXHEidJB\nj748de7WUiqoUadWBWx6ymNSlj9ZLPo2gkxhAqH4HWfAwquJYkf8tbGsxz80\nTwAyp20lA7WQsQrlGjcbCnlC+QLs2L8a2gYVDrZB6YUhJoSuscMl8Hu1WNvt\nbWQVjfIzar+wGNHmC8ZvKbYfIXSqA1zjhjHpE0ZAQH4YwsWRPwhLKpIf/dBq\nAxCTkf36YTo1XKJKu4K4dESPR1siFfZ/TJcIjC9nffasaTQNchjke/hLKF+A\nq8ir7ThDPXKPc2/e2EMJiUFDH9MsFQ0NQ8HJ2CTluLEPP+JrPGSRZ+NDJh9u\nHjtbJ8CP2OKuybtjkDmjRRHqeaprsXsRHuamWzJzBVG5DkI0BTxykV8+J7GY\nc/ncgQomEayezIx6Ln5Ik3LAsunqF2YMwvneSNVS+Q9Uvl0wVRFYU2X8NjYO\nPuNfLitg4ObPiNJqOqvtDefaX5H6xq6W7jL+XBV6qtDEcZJJmwcgkJVFL6hG\nKAkw0AfeKHLA7x/NWKTCPbfqdJeovAumbQ8AvBC11BBrLlee+GuS8ivtNSz7\nlEvODcNydY98fq5G0g4px776x0BZE4ZeYcaq9+s9sLtzkN3J9W4+bd+gXqF4\n3XJZ\r\n=3LYG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpjWhuhY+04TxdisN/TYur8xJmD2goPRtY1d8fD2FBFgIhAM85n5xYaIuvEIpnLUiz/jE/YcHA6BZh1iVKUZk7CV2j"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180426_1524786215755_0.8487575137674792"},"_hasShrinkwrap":false},"0.9.0-dev.20180428":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180428","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-duplicate-spread-property` | Detects properties in object literals that are overridden by a spreaded object. | TSLint has no such rule.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180428","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-acD5LUMeevDxWLTl/e55K1a+nHP0ryjmzhhxHbyRQCVfLEbKV8U4cYBQHQcnKrOW3HkFFAnMF1yv9XytkiiL/w==","shasum":"b224eebcdc112c05294b61b92b07dc3628e4eeb3","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180428.tgz","fileCount":126,"unpackedSize":278478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5QdCCRA9TVsSAnZWagAAObEP/0mFhYOvgj4dOBGfIC/+\n4uVW2R7sQIDd4aeCtxqVBTtSLaxJ/Z0T2fkg02pkYmUTfhKwrBdZHSoRsI8J\nV2ODApmn3/419NkdWkxviSnTKsPgyYRrcn14uYzD1fDq2hS2BNdTdEZcFfQU\ny1LA4lmMoJZutVBPZJDD8ISRGZFBMBcGTbLiNhOPwiNZWeffyPfwq/rVV6uh\nZ3s/In5YxK6E50k39rpyKvm6vCbD9SbRSUMvHXXKB0gPOalW5+sg+Ypy2SGz\nXdodZWl9GdU0AiU35Ai9fRSJMM3Xm8lGVS4L6tBPcI23Edg7MJHOYXa+XWHn\nnmbH+vFntRd/FVZldghBxi+wddCqDqlpBvl4Hj8G/3pSk3C3TMAv9vOxxbYW\n8oOMaEjjaZiR90CNHKaKXHVGoyE9P6+WeNedqJRbMreyAeXAzfqsvIJuu0kW\nl/ShBo/tbZLczq78pFR4UoCtc5FDbBHnRoVfpoAydZrES/KGQrqqZ/n5AhtM\nY9wGa5Nrx8XMedzMVXYMqhGfCJa6X/IEbcMBoVs3DzvcFCWPMxcedfvG/zHZ\nQIud0eVfBa9Xjn6IoZKI1bw2bczA/gArNVDF0VJMGHW5+oJAjJ+5GX/cfi4k\nCJiloJRd2wK6s3PDaEhW8Sxm7qb4DsdBzecTurBmpzdcCZO0Jk1lefqfoXpF\nStiP\r\n=omu5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXi74cpX74xN36GsgrZXIG04IdcISymgCdk86g32haKAIhAPVr2eoy2uZQegeAHM4N0RZ5wTyDRjt47ddA9D1wwFXV"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180428_1524959042322_0.04769032993673994"},"_hasShrinkwrap":false},"0.9.0-dev.20180430":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180430","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.8.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis library contains all core rules, formatters and configuration presets of the Fimbullinter project. It's used internally by Wotan.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n`await-async-result` | Warns about not using the result of a call to an async function inside async functions. *requires type information* | 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.\n`await-only-promise` | Finds uses of `await` on non-Promise values. Also checks `for await` loops. *requires type information* | Works for all `PromiseLike` and `Thenable` types out of the box without any configuration.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-duplicate-spread-property` | Detects properties in object literals that are overridden by a spreaded object. | TSLint has no such rule.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180430","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-AKj/De+gbwBYd2OI6Jy2MaF5vryJyV+wRJnecHc8FrGk4SxQH0YorKAeS3EESZITZ6PC++CQM2HUipNgXaYlsQ==","shasum":"92930b23f17a0f786ab4513e12a197f4cbc966c7","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180430.tgz","fileCount":129,"unpackedSize":282499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa56pdCRA9TVsSAnZWagAACmYP/R9a68wfeJSc8Wp6U695\nsRWWjp+N7eQQUf0YOuPM2B+3q4g7v4FvgLD1z/kikr81qXl2yifwQKnP/WQX\nClVVQSRWvub+O7qWmUU8W9PE1QsaMdAkgIXEso4F5xDjlzhpIBAhw+ccbxxZ\ni8pnAKS/X6Om0NfBd2e1JC7qUtfowp4VgYntImHL/FrDxnwa8ze4c1WDMKgL\nfuHnxSt+Sz60yfh52salm35XhsTwiwjxC8iQBnIpPKpEjwPmXRXyw4seLun4\nFtvY+1AmVtFkTbf/OyHJ8DMcBp8Uyr70dL9VHoIi5E9zA6Zr3jPTf+83foe5\n1C59Nbh59QlOeTxCpGng8s/DICdRigj117LDBkGlgnLO/4Cue5MkVsHRKff4\nzQC6JDvUANqJHVxqykkYTpRAQiKDjKflLqaz3yptiu17cTw1IkVMN4OMIv7z\nC5QVPnNL4rkQalrOvL0UfLh9LCbfJN9KJWuaJBFA2RAQ60qAXHigZvE6Df5w\nKZkdAZhFPf3XKPdeWrXiGdvnHmc/shVo4FoCLDQcrVeN451fO4AOXmPJAtaK\nWdNEM7m51Sk3VitNmLHjSXxWA2CyF6Vdw+BxcPtc1kOtrQFnXyenMPw7N/oM\nafuvqQ0TR+/1rIXm4LcDAFUAQUs/ceKsABrpOMIVchD++5ElGX0Lfh8Y5CEn\nkgTV\r\n=uEA3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZyfQ+pBAYfNL5u5DiKQoxiZmf7VIX7AVoJxHsnEUiYAiAh6CWWFmFpeSTmk5xkfS8ECB7k+c63m3lzC45TejN3cw=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180430_1525131868321_0.22005469366657104"},"_hasShrinkwrap":false},"0.9.0-dev.20180501":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180501","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0-dev.20180501","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n`generator-require-yield` | Require at least one `yield` inside generator functions. | There's no similar TSLint rule.\n`new-parens` | Require parentheses when invoking constructors. | Performance!\n`no-case-declaration` | Disallow `let`, `class` and `enum` in case blocks. These are visible within the whole switch statement body but not defined in other case clauses. The compiler currently doesn't warn about such uses. You should use a block to restrict the scope of the declarations. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n`no-debugger` | Ban `debugger;` statements from your production code. | Performance!\n`no-duplicate-case` | Detects `switch` statements where multiple `case` clauses check for the same value. *uses type information if available* | This implementation tries to infer the value instead of just comparing the source code.\n`no-duplicate-spread-property` | Detects properties in object literals that are overridden by a spreaded object. | TSLint has no such rule.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180501","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-IXX7AKc62H6LQFuRMX0BosqzYXtcXUvdEjhrcyVyOmIpfO53RUpyMI72/g5TtHdm2UuGzsV2zLrGgyH668RD0w==","shasum":"f2086d7f67d12991c0a635d5b52cf3125193b5ed","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180501.tgz","fileCount":135,"unpackedSize":291799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6PwrCRA9TVsSAnZWagAAILsP/Am8TkzvQiXAwuU+w2hw\nOLmAkpF0vWbyqWVjdwcELfaoQYMg/boWHATQG5cZaiOS324OrDxtiwjqJdPw\n2WPXSMfVLgPWW9Ome+dDJqK2T44Edg8jqQVpBleTZYUZs3yWsfHBxIbS/5CB\ncwhUgC6cwRonJWE5eMTgU6gNOZnHSPYZd8ueJUyJ14shmbUXRyD4dO5177qf\nsm+QOjW4ZZVZj4jw/Alm9kW/JMCKf1KrMqgwMHtkTz6cxJNSph0aKvliUNg3\nCFOf54R2Wc3TF6COQMu/5b43Gl5j50Hvd0+Js1qzm251C5JQn/eIi9HFN2+I\n9Pqd8fsNyQr9l/wbRTO9bH2RUCcKUfBXU6vnaoRZdKBs7McyS4nZ13wcJ0ZB\n/cxAorOKZFHHUitfL6Wh4q8yhMksmXKqbJJT8W31pOXIpdoHKdR2ppEc62Z3\nF6f0uygfQzer73Tdp4J5IHT7S5UmConDa+u+KajUTBV6vCuIKt6J/7DkKE3A\nKvcYlm8M11JWk3X5PAgMDvRNRFvFobV5RV5vw0Kgl+ZhmJe1P3XDucyHuqTq\n0ODNbsBeXEX7NpGf0qXyaS+Dm7qKYLBA26WaHAFmQdfSRHCLu616aLTd9TUl\nUGoeZh2Vrsrl8G6PJQZ60eaZBot9M3HzvuldfkqlLPdX2MUufxKW3RAJ3J5D\npvxa\r\n=mN/o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGMV/grSSNM+g11mYiafXSAzpwHmYQNSrk63Ns1gvXIuAiEAvP1TrYzIBRjLTcKu757Mt2GEyNZUVfWT8/ITE+l5wco="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180501_1525218347033_0.9493364813865417"},"_hasShrinkwrap":false},"0.9.0-dev.20180502":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180502","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0-dev.20180501","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n`no-fallthrough` | Prevents unintentional fallthough in `switch` statements from one case to another. If the fallthrough is intended, add a comment that matches `/^\\s*falls? ?through\\b/i`. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180502","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-1iisrS7+dRbYXKzAQZCGr9Rp+PSWYauhUdhmi1wyFQi6MLJ4DTZL5ieUrNX5cf/1qrT5gOptZkPsVj8JoQPLLA==","shasum":"54a71db771d6b4c363bb7c5758ceb90d39e1e44a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180502.tgz","fileCount":141,"unpackedSize":297262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6k1cCRA9TVsSAnZWagAAJNUQAJbkWu6LEWd8v0mULiik\nwQt1em1ai04yRwvvlExYXxeRdQml1TXJZDnqxSeSv8XBMZdVq8Synpj4iBzG\nFm7JLXR6hQlM+Jh8jRZFRxImjv9DZfQgmT/W+8QFvtEqycDMVUTGrgoL6ciK\nAV/o9Y2uNZlFGwOZRgSWICkJHYQNuNGLSPgfS/uUg5/Y4AuYkI3FMqo8dxJ2\nmRWuIzsFoqVsJ+kj9+oiJSaFCEtuf57PScG4aR6IFnC2HcsuGwA+S9LgisRO\n31Gj4lMLQyBEa5EPkT+QWf+ITKikPbqq0RKNqCeUoXYgY4D6Mz/2ylpq3MSo\nkNJrCmCy2Hff5scwRaiBdC8nmJ+M6oY17FmG6L3Wni0fBN+SsVFKvqq5ftfM\n8f3m0qNxKM4ZFK66GGBeZLi+2iafie1umclptar3Ri2U54UX809N6AWHRLwE\nFhWmZqsGeSdDpk9kyh+ENduoeu++yLgXhHms1oqZ5gqdBP08WyH9DeS0JsDC\nx0gu18njJkB8tD5aB/Xk1SEYDu8cvnVa5P1IoSKWtYPaP4LXAluw+Ezo0LMJ\n/upticSsgULfa8YPDj5lCQ05iG9ZjHMAC+MN+A7bLm8zhzS8Eqo4wUugg+MC\nZfTx7icY2YWRWle1Tu1H4H+beB+fj1CmkNwEChqDd8uPGYIUdKAezAEPWl7s\nhmtp\r\n=UNWH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrOWNz04JCkvj9y3YKv1Rt5VQBVe5agq49hS2THXkloQIhAIQ/z/le/MvVktuFB7P5dq4TbK03AAbEOLGOyG/i3YnX"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180502_1525304666840_0.01138321824058397"},"_hasShrinkwrap":false},"0.9.0-dev.20180505":{"name":"@fimbul/mimir","version":"0.9.0-dev.20180505","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0-dev.20180505","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n`no-inferred-empty-object` | Warns if a type parameter is inferred as `{}` because the compiler cannot find any inference site. *requires type information* | 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.\n`no-invalid-assertion` | Disallows asserting a literal type to a different literal type of the same widened type, e.g. `'foo' as 'bar'`. *requires type information* | TSLint has no similar rule.\n`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.\n`no-nan-compare` | Don't compare with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n`no-return-await` | Warns for unnecesary `return await foo;` when you can simply `return foo;` | The same as TSLint's rule. I wrote both, but this one is faster.\n`no-unassigned-variable` | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.9.0-dev.20180505","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-IN6eGNeSN2N7lEk9ODIpGmRoJHhaAiXiv2jpzlctxyMKpO3oWNNNvjWLal4zKBzCYdFD+dCbHrpyOr880qua8Q==","shasum":"96c99006e930a2e96d7938be69eb85a1419fd506","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0-dev.20180505.tgz","fileCount":142,"unpackedSize":299434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7kJvCRA9TVsSAnZWagAASqwQAJJ/SCuXjI1jlCttUu3p\nG3z7mX+bfGy/9afv2D9ReFc/uHt7MsisOZT7071d8lCoRYXe3C+7TJgw5Uez\n4eo9u/1nwEUH5RPeyejKgGsIVI8/BZH9rsB6KYH3km7VA3mSZVuovTWEgb/U\nkLvi5fCB64iOaNjMUxprbqwaSzXWj01Q3cnX4rW4KsBCFX5pq4Et81CIw1qV\n6jzTUFA55VMkgqCHKSnrXoJ2nOO45iQjRYKUnt++h5IUKSXeuSsq/oFTCpDU\najMM/Y0ODAIYVcJ4HT+l0ESA3mocIw2Ra7pD6xRqBoCW0ESolB8w1y6y1ESj\n+H6Wiik0kFFoewweL8vj18knRprDQolkLEuRlSps3kSwsF2cSqiyPT6YJMwq\nry9LoIFFdA4kJVDQmiG8uDLgslGDr2XdVG1uKYPT4o35gVhpbDCHyrunGVXQ\nOUWpJXI6iUB2AxR1Arse5crBaUhZCpisLYET9Quj5dVkXyp1/lsK2xkgeH5p\n0GaeIVR6FdAP4sDA9tUKYwyyNEnakjjQT3Y8tP6Y8DWIF3khCJ1APC6KCzAc\nArB+N70fyLB7qpYhmseyqPy6OOA4TE8Tap/9Sr1F6UJveFQiB6DQQ7gM0GR/\njNBYrXgdHXBT/+XU/bF8i9vmAxXR3jbIwzGmpqePdQqVvTUQOCtrm7z93lun\nxaSl\r\n=QItT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3REJcdZ9k6EDjFp9P4hN3FCOJVminhn6hQRD585w5jgIhAPpdIa5jCan+SGq/p56kNjh4XAs1x5D2QF95TNes7G6m"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0-dev.20180505_1525564014692_0.8787541896573137"},"_hasShrinkwrap":false},"0.9.0":{"name":"@fimbul/mimir","version":"0.9.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"_id":"@fimbul/mimir@0.9.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-3dS7irYUcePr+vhLxoqzbgGwidcv1leEC+dLbL5htYsKpCoiOFVOOzxFJE6lxBXyfaLb/f65gD9+rncWcyvP8g==","shasum":"31e19a649040ebe5a5ff46374269ab270c2c2b07","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.9.0.tgz","fileCount":148,"unpackedSize":316170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8y5cCRA9TVsSAnZWagAAxm8P/1iC1hLRS7QBQRrGwogH\n+OCwHFrI9CmBuJ02vnTe0fZ2dK7/vqPiAbOsnmhkaTbEcXfHn3BeXgEFdI8x\nPgcEVI8ntbszJ7B6R6CxSjQxkAAdnJzb3WNbVyy/f/1e4lYb5aU1/blmUOtm\nibKYlHglc3kggs15qCmBBiKPYgxa8aQrHHATILSqZfS0FsUocAuSZGe+TRKr\nLBda7Z1MrzFMzMX6tzUUbs1Sd43RqB1xOZlJ+goTBqkLlesaz0rVLrkPhnXX\nAeuFsJtFlvz0WhBMbQGzGomLwi61nMNOteEipS7LmO2ggLHxUQAiw3RondVk\nYqmiZtxpEacDxdfCiuRRRkSJsBStiuwCkJJ5Sn9Oxi0u4zSKhHsHPTAogGkC\nxBuRlo58xYRRpXtkspMdeBiXLxLaBFwjWYtfPyBslkf8h597EHQyDdBvfMF5\nmMMFzJMvPhDgUY1dpyvGXVdm/kDwDfz91JU2O0NcxD6XdyIDGmedOPZajjtP\nUxpBBLYWTCugd+RTNtvV3wZ6gwFoJ5vZxnbGQTFjosh7Hve+NAsYXyfdG6PU\nEhOBEpy67gFnc0wHquBQhrQdcVDJtVwpJmhExTnXHXiWwfNfvpWvNVMdruHl\nSV47vgfKcTaG6H4gPaUBZNliWaIhT1LAgljhprA1VTXKwlUo7yZmVl8Wi7NN\n4GjN\r\n=yUvQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFfNfMBkzelSNsHqpwWIGjGsb24x98VfecojJdLvxydQIhAMPF3x4hEMkYhXsxw3IiS8bH5Eh+y8jEoMeKh0flIY0N"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.9.0_1525886555091_0.45263550153106014"},"_hasShrinkwrap":false},"0.10.0-dev.20180509":{"name":"@fimbul/mimir","version":"0.10.0-dev.20180509","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n`no-unreachable-code` | Warns about statements that will never be executed. Works like TypeScript's dead code detection but doesn't fail compilation because it's a lint error. | TSLint removed their `no-unreachable` rule in v4.0.0.\n`no-unsafe-finally` | Forbids control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.10.0-dev.20180509","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-0kGGYnzKxbyj69f5hQz5dcfOuWxEO+3IdBTZmmkj0d4UHmikhLKEjfrGig7pqvRoVfg4tyklnq7TokD5rFogdw==","shasum":"3395841354d46cd204dd75260dbeff9709b3d008","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0-dev.20180509.tgz","fileCount":148,"unpackedSize":316615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa84iyCRA9TVsSAnZWagAAkdgP/26HbE4Ar3THfHTVGvOt\nSjrQRjkz+fFgmcZsWF36QiMsu2cxD4d9gbj5/G7U9hDbJ/q0CVtC/dqOwLlg\nX1h2Nota+RYd/7u7e0opCoKj66HfBeBKVLyEakoAeV+I62CCT0fe+RWobwBT\n6m+XiGJ1sPMVoLdtQRhh9S55TjTDBR5v7NcYDxdkxYubxTaWlvNazgd6vpMR\n9gLKS1fmul2N+njN+Rrs1CMPwNHGWiZv6jvqwET59bBDlzHj0WxUN/ru/3sJ\n8uno6rQQPjeloM/GJsNpZL3/Ss/hEb2q4jDC1aJEcoYpYsaTRsm0UfDfdNu1\nW2E0PIzzhqikNvFo0EJJeuRlufpGch863u/Mh5zun9lazcJbtcGB2YheRKLS\nS2PjtroN0/DDVuYQ5Z4eygbqCYcEF3YmI8EeVJLkM0RvxXU2kZFDiNIwAHjP\nReSpkXOuWzrp4CyCg3GAcygPAqTLpgjsUJSYIroqxyiEO+Y7uESRRi8dbTM4\nP1S5D/gIjUJU2FkUmiP9JMxqF6z5/4hI45H2+CRN9Vbi9HB8FMef5cXvdCXU\n/oFitqYC7zJyJfy4JVRr6rYnnwAn3TO0i9ogSHBp0RP6+QYk3rFPeJt+RtZw\n8Z+1K6si7MX2AbsCtfSBTZmjSYaTXRB5xp/Td4iLhppVrFL26j4ndYnwvEGl\n1ZFs\r\n=8riQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0B5/yH0ODfe9P+eTW3t37c2S85EEuql/LmSrUmeq3xQIgKM+3zfjuHjmARIBJrJNzki5hx9xL2FNJV3tk8FIXVyI="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0-dev.20180509_1525909681916_0.050271120057723495"},"_hasShrinkwrap":false},"0.10.0-dev.20180510":{"name":"@fimbul/mimir","version":"0.10.0-dev.20180510","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.24.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n`no-unstable-api-use` | Finds uses of deprecated and experimental variables, classes, properties, functions, signatures, ... *requires type information* | 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.\n`no-unused-expression` | Warns about 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.\n`no-unused-label` | Warns about labels that are never used or at the wrong position. | TSLint only has `label-position` which doesn't check for unused labels.\n`no-useless-assertion` | Detects type assertions that don't change the type or are not necessary in the first place. *requires type information* | 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.\n`no-useless-declare` | Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n`no-useless-initializer` | Detects unnecessary initialization with `undefined` and destructuring defaults (*requires type information*). | TSLint's rule `no-unnecessary-initializer` doesn't fix all parameter initializers and gives false positives for destructuring.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.10.0-dev.20180510","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-JPIuJX60ViZbgNi01Wxh8wLD4uh/7oi8NqkOGWscZS8RUIYis8Hd5+9QFGNiLXS8LWQluvvEE3UcV34Ru1aDmA==","shasum":"f4ded3355dd41b54e74f16c3de1e11f4cae2d13c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0-dev.20180510.tgz","fileCount":150,"unpackedSize":321057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9NoOCRA9TVsSAnZWagAAQ8AP/3Sw65ZAbVoelOEgeJ3J\nA9q8p94i/oua8paf1yO8AiAqvjNoqDuaF7oIXUo81nc5+H92Y7nU+WxabESP\n8veWqs4kB9fo7c1kN+Qo3+NTy3LpUuI6/W8KaVfvKQKfpj41Bs8Jp8Qkewp1\nG2bQkZCQpCDGIMFhlbhf8pD8rJpU1T8RwUHEMX/HWRgPFmYErfyO0SDgoyOC\n4qNMlCNBlort3lEocWwRI/akoTVSWy3E/hQO4PP82VwjNvaIprYCzBhdthr9\nS/fMcgfk3PPSXMQlhPlOiEETJpDiH28dXtzH5vIEuPOtksOsM6dZEFigB2Lr\nmPSpujOF0pD1Lps8D7n2jVTzH/ECuLL4b4et2NwZ6AWeumMi6gBDy5iTSQzD\ndTCd0BUXgMsR21xVNdQq4Wlug6yyxIjX5aMtkF5KcxE+T4ORoZ6r1iouBfeF\n9PUBCBmQxpsa5TIp2pRLVx12oiUV2kpSaZRcl+U2c9PqI5fBKdv0jzKDxxOx\naN1n7yNJ4o7lqQPm/FYE87tfcRfhzU/iWBMV3b9grjHuO56BRwdBVFcL19wX\neuYnPUdOg/tWrapKTcQLJ6HjJakNWa8OGHaHCqDU74OWuhkv2MdXoSfJd9m6\nJs/hWGEtrkm3/2vbs6CSdLypyy+COZu7I12lmBvj4zWBwrvRfhQPQiUM00it\nXYE6\r\n=AKL0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD5LqG4u7x2LuuoLZ8oYK+zoemxiJ4bF2v95XJmVs+YnQIhALzuKCQq71u1SAgdA11MzpLjqFElPEnp4SZ69z1Unzj8"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0-dev.20180510_1525996045451_0.5162155936275017"},"_hasShrinkwrap":false},"0.10.0-dev.20180512":{"name":"@fimbul/mimir","version":"0.10.0-dev.20180512","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.10.0-dev.20180512","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-yd++J/vH2G/0JssOI4JkokFgDjgR5z5MvL4Imt71Q1tDaQpIsIsZYScGUsZ3k9IxB0XPaYNxPXfH79i45bc/TA==","shasum":"3a00f44e3746d67822bdc8eeed24b5d8e0b8f9ff","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0-dev.20180512.tgz","fileCount":156,"unpackedSize":328898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa931DCRA9TVsSAnZWagAA4zsP/1an2QO9Boox5wTl9vMq\nUEz+dOvQhp1iPaF7bBz1RivH5878XtUqlEvt8vXRCkR1T2w4Zzyfe4+94Cdn\nSBjvnjX4BUii660WTS9JTEdRIyGLaNGXofzwaKAkDZYlYitTe6jjqVytDC45\nlct9hfb62gvn4DN7PJbaM04/RnNH1xOp2xXnH8Fl1u3OdQpz0zZJuMe1QhJQ\nYdSn9CiLWwa3xQW0Cf2/NnsRD+ARlfZ25zzw0PazuopuePhNf2wfejAxM9wH\n7oq1jhjU9ar0BbFSsKzPb1DIJAIBya/RbPxzxATKYDnJK9K4BIr9aL/Ve+or\npjwxuDTqSkA7/KdAxZvv0+dMbJ3qibTGxK0fDMR8qP8FfKpx0RjmiqTvFmJY\ndXjMxnDq6dpfHqsqDbj1md2H7ZdU1iRckDLjGWeZsD2nkCQfISKra6y5YLoJ\ndecicw3wMXmEV7+13ERORqa83EOfjCChFZMOfHP1H+Z8JjoE7FgkR+x6Csie\ny6kRcj7wAefVf71QJ0nn5bZioDNrPFR3nAfPydoDGW747IMITRXf2NS/Y2cR\nIecfUMA0eo0Eqnu2ORKRcFkUmIcTjAHAAGuGu0Try+fySAFICiRtB5pDl5eE\nRNyllAw3nVbEiFCU6d6fQaCaQb5Ocl6TQAqJTl7AEzG3omba9IG3zEBON8A/\nF5wX\r\n=6onX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP11+gzNXxnsOp4wcSyz06224kBrBrhugKkFGN/CcqSAIhAMDyldEKywxGz1xNCN41lpgl3Asd4zHUCnUxwgegJOy7"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0-dev.20180512_1526168898019_0.1866428916078069"},"_hasShrinkwrap":false},"0.10.0-dev.20180515":{"name":"@fimbul/mimir","version":"0.10.0-dev.20180515","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.10.0-dev.20180515","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-ehL0U5z4raQTEymBUhdZOgajQ+lsaACKY+S73VcsWXSQgZ7jMi3m406lN9wn7hREK6QXDR/a1qSDKWd7q3oNrQ==","shasum":"d4ad3de0aa3ba8b12211721227780c7aa7436592","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0-dev.20180515.tgz","fileCount":156,"unpackedSize":333627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+3ItCRA9TVsSAnZWagAAG2IP/1b90seTKuymA0eebhXj\n2f2sjgfNBeh9kMSt1kSSqySKttAV3Hc7NaWUik2xkLj8B5aob+S+cFyIDOEP\nQcY+4S0YytP796Tr7MPRdvuNNdIIZFJLYjG/j/ZYErVlscu509iCU8aXQrBL\nDDawXP4wp7CN1RZFxZ5HKPsM2wFQE45Mdn9LWq4zU2tntQSM9/sBNU5GhtxE\nyDHzxe9MVEUmuMVeUx2lhxDAVfPt70ZL0hzcqGrsTSlj66nxQ6ThA+6LMA/R\na6h9N4Y5bYzNDsCV0FCypq7iVE/o6yZlD4Yn7e3yjC8kKIh9XOF234o+Oe24\n7Bexjf/wKFNUgEs7X/heCu/JqXM8wtkAN+MoV5Dx7uKJ1AIiFvFdBhZm8Bek\n3s92z7bBS3wVyqd3aAsfW0OTpQDWlEwlqUnaAEP9YNfeQ72c/VBop8ibcH19\n/j10dun1KDXPNc+L83MCagRAUTwVOP/4EehGX54poOfAxJTRqRImHXZwrfoS\nDpBVG0L2Te9YcWjmwqElHd9YtM+udgsFFIQbbybnWamzRubdSSUYjl/orIpA\nnr9MpwjViXhPWymGZ2SXWieZ92fO2wm6LwaCKdlBFgCKF6rAfVSbYpZ+Bzq8\nbiHTgXyin59/KpV12oPAFAufxRSP4ClwKtb8ebIyyTTdbko0zOEoa7akiRc8\nH5Vr\r\n=K7/Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGqSFTJGUI6NVKG8ViOCO5FgrT0VEbOHLqa78e0Fzv4OAiA7vmUUQ1WuKcIN8P1kW8/ik10s2z8QlpTZpaKb9ymA/A=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0-dev.20180515_1526428204855_0.7581543445092485"},"_hasShrinkwrap":false},"0.10.0-dev.20180517":{"name":"@fimbul/mimir","version":"0.10.0-dev.20180517","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"devDependencies":{},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.10.0-dev.20180517","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-JlbBQ8esTMAg7exD2wF0f+XosmKUiqZN8n9+O+XMWkvzaBWvtM5veE/Fu96FVFAsPMYEyEPEDYp/NaPq2vscfA==","shasum":"47e8200764603fa3abb9db8a15f8dcf71a9fcc86","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0-dev.20180517.tgz","fileCount":156,"unpackedSize":333884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/hVMCRA9TVsSAnZWagAA+SQP/1nx/alfu9vFUJHUmRY3\nhX8bikeEEddO1gctxfdthoL1kjWWRXoYs6FGCB6dq5B4ShUGopNJLRdwQa18\n+MJ2zu5AMrxhgYjT0U902cFKSXTsPgdzX4ifgKC95ra9GCV6xqZr2ojOxqat\nxNsVy4TRmJ79CaB0C4DpnZbs51iGYJllOklF9jM4nHapID8KSMo/duN0BVmN\na2JfqlQF0/OKrFODTdb9TTurbC/fubx6a/ByhuANr1CuiPAHkarS/wfCkV4t\nUtPFBlYGq71LOYMUVxuJTTtIWywBnLE56t1SCxZa3zXtfb+Lf7PmC7F+ecGl\nLekrz8z4isckm+vrq5IvAfUQiybuoJog6YfD2qk7L0w/Aq/OGZ+3S9BooYyI\nO5wx3+yxsdx5APDQKXqH8pXDmgyhe7aaMzpPFjtgbA9kBH17Zj82W1sTHp/a\nuY64snZAGh5yj4Tx0txDXl/6b6X4/VA+cbxvHU+sL9YFTtFWj+DICIRa/hWA\noytnpoWay9Dqi5fE78j3TRj6ZDF27DZCcTJha1cdmuCLCtlGMCy3mvvXcKIl\nXROgREwoFVIT/IrvvfL3k17eZjx+4lQEUefU2t5onhfXlD03L7a0s0ST9+qo\n2ygwpDFplPvG8Z3aoQH4dIB8xn3ud6nMwlyK+XkTWR4iZ1P+NAD8zYO9UwRm\nJHiz\r\n=L/6r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrbOXgBfL9tc52m/m3t7O3SIo4Fml5ddEwoTh8DKITYAiEA7EA2UK3LISzAMNhiy4DByy720TfIzLiKq10k4ZoG8eU="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0-dev.20180517_1526601035898_0.4790388001118493"},"_hasShrinkwrap":false},"0.10.0":{"name":"@fimbul/mimir","version":"0.10.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"_id":"@fimbul/mimir@0.10.0","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-70dFhqL3V/uo0ouBxx+aOrlcgGp1L/7hMwR7ILI416r80VTCyMfo3og3mG7D0aCu+Uq6l8JQJlc+axrifDyGGA==","shasum":"8e6007e8af03757f973ec2753575b567c36f3854","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.10.0.tgz","fileCount":156,"unpackedSize":333061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/vb0CRA9TVsSAnZWagAA7xkP/A8GR+efv6kk0mEad+XA\nhZd7DoZ5+ekSe2aerxXhD+u70w2L/rT6aPGzYhlEs9YvciLOxkOL9hiFadTQ\nFKkIjcWNevJNJfxT+oZ1md51bPc9dW5uepIc9qUinq7ekwprfLG0yGV647ur\nHdg4pY4uQv8rvr8rPqJSCa7wYK4qu6vWbBd5f+mKPEHcKr/9Vb5d3pyoZYE5\njsHkIXs2QphXrec4j1hNvT1jE0WfppQlJLzUu+T06nIYPMmcIQaQ7HV1P3JS\nX28NZ9IvAHDfAR79pPdDmxr1nR/piUf3TtX7wJMwD4LdI2B3UCuotqEDXY70\npBdoQOpMOTvxig15lQicu0xyBphMsLtpUU6iMaqkEEEIq4mGWF3K04bZRAya\nPRpw+e2+bA8eto4nILUevABv7/ki3wCzgZdQ93+0LBW2f20bSbmV3PznJ8/i\ngQ4BIsvkP7oI2d3mBd3hRMhdtRX1du599BDlSZ26lj/cQCQy6dHU8yQvZ7hp\n0//8zCvMrk0o4qWutN5V1+0VxJWZ0QOi4Isj3rk41R5UG/VdEeqxr4PE2ea2\nEmIM3PEp20S1E0Hnrf/AzOa5AMM4vUhDCgr18GyFdX5FeKj8jxFVwjDXk1cg\nE9Kki1pZ5F+LGpuENUkiLSJS4IhNYAh75w98eqezL36IOuaBuUEJrZLuFZAb\nMLqZ\r\n=tgf6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHOAfjkh2cm7fAHzHllaBqRATZT/vEdvAU4Ttpus+305AiBhhU4s315slsubtaKMiquouh8ANO2ZI3ncUUrqYrUPxQ=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.10.0_1526658802072_0.9181980778259056"},"_hasShrinkwrap":false},"0.11.0-dev.20180604":{"name":"@fimbul/mimir","version":"0.11.0-dev.20180604","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.11.0-dev.20180604","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-yPO72hnLSYVVg1gdkcM+S4MY374ju1/dyogFmMxvH8Ndh6xNlxUN/y1MDc3iV2n9WiLU/2pzx2ZyVqYtcOoNYQ==","shasum":"0f06bc21d030b5e59fca4a8ed00d28e14bada2da","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.11.0-dev.20180604.tgz","fileCount":163,"unpackedSize":344172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFIGzCRA9TVsSAnZWagAA5cEP/2oDNzgnaf3mRwLgeXWg\nUpYavuzkVyiem8wJgLPb72SSyV1sMCVrocT22ZLRnjAsyQxaJLirO1GW+rJJ\nh5NP6+ve72Q2xV6Sqb+w25A2DxvrOvQJZLEWcckCdMAp6262BYk+kQs8OREI\nN68xOqlf/j8XunW11TvCYE4ITRN5XSnzQMaSoKrlvNAT0NOla6nIgWPT7bFQ\n7VRRpQV4hfuLPfhb1HYyP+QVR+MLzVCLIWofagOIcbFW8JxJvnEfI6WmF5wh\nBv3O90isBmDJctXxCWZRpbYtz7q0qbvJSycS79Nob5ycCk8ASECG6iAWuvLO\nWFockGaeKoBrr30K+CgdsmpoTPTh1gx+dLvy2dgUjJadZQe6nkPY+3m/seNF\n39a2hkK6i73XNeAuwVQiKkDoAwgS5uitU0ubwGG8d/83ICLJXwZp8SizN0jW\nOLnJt4clNjRt4TYh77Pm2NXpfLsSK+6kS5GdXtUxvh8mzUCFKBAUQ+nNSODq\nYnSzmb+Bivl7BsZ6HQng+nFtCXzU0+As1ULNseT4VlIkABgLJoqjJln8zOfD\nvZ0uPixKO9NVGHHD29LUPOCFIXD5aa1RyYZSadaaVeY1gFf3BbEPDJQmHRog\nr2uCXuvQ1okm+MUarPFj01xMP6BpBSWXIRaZs+k5gVVb46m+vO6XDp+Bu68c\neHaf\r\n=fIok\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC2WWFVGlpVCZ3NkfSLyZuAeRWe7+fZocMhCEHAIP94xAiEAnivoy4mkJYs3hQ5Gh12siO4ue2ko1Gd7ajV3I4KnJsM="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.11.0-dev.20180604_1528070577857_0.3685544610810165"},"_hasShrinkwrap":false},"0.11.0-dev.20180607":{"name":"@fimbul/mimir","version":"0.11.0-dev.20180607","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.11.0-dev.20180607","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-59gkY8GjzWLRuyEkuv6vySrnjjVOE2z8ZSbNDP7FE7gFjGHi6Y+t8PSBVbSV6fXc7PO989bhCfed4iJfNCFmag==","shasum":"ff31e4aa3a3ea27942a30e91e30e51f40819a9e0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.11.0-dev.20180607.tgz","fileCount":163,"unpackedSize":344166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGHaXCRA9TVsSAnZWagAAkMIP/1qEvKEY27j/JTrpR6dn\nuc+dpRmzRwLR+CyVNR3PdlWVANm5NMcRZ/qWKkRUv03eXLVKusEuWpSrXqRO\nsxG1FJVIXUzHlR/TzkTHiZXu2BAIaTeZzD+cJF6Naiq1lbSuDM2wlUQkcybA\nY8IOOBPQesyFGt9OGkkw0LP2jUXP4Tw1rezr3VgJdA4YxpdkRBRHB0YM/Qtp\nTUgBg50h9aqC6O8TVCCecBENRaupMn/U1HtqNO2HteFYXJ4Q8RSOrj6NfoZ3\n3HfLliDcEYVF8FSM44WKJDWawFG7IEbJvWKUGuCHln5/U5gfIJxpMRx/+TqW\nxWNh4GV7FeZieseW6m5xlYTBUoUMo4o/T4oqh0u7T9j0qyosVeM/Ood0viOy\ncp72xyN5y2X9FWGpkQJaHs27LUsKuuduTDq9dtrUZBIuUxJRxFHIAaSokeaq\noQjPGC1xV4YjxKrD2Tvzo/Bp7ob2FwsfMihHyoUBNIFxYPvu7/LsV8oHWbla\nCsknf44TL76Om3RgnmJzA//7DAgXeS52iMN3INea/cBjOWwnmu4g6rUrmBAT\nKlG3uW+McCpVcuhv54Lfe6qz7NimHUEw+O4L2HMi7LfGuEDv+djp1iD8+5Fm\nWfmLzOBXj/MADmTz2Vtb/CkIhPrl0watFE95Vry2azd9T2w8/HaWMOzwxVkB\nMxxe\r\n=yX5u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEAJ9jD/cufHbGvCPzcWYIrfOrS2wPSpxmjRTTv8b2UDAiBMHJF5wh0WGjrcoI8W0PMF3uDmzfcN1tItzVSxBveD+g=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.11.0-dev.20180607_1528329878714_0.48119707105155274"},"_hasShrinkwrap":false},"0.11.0-dev.20180609":{"name":"@fimbul/mimir","version":"0.11.0-dev.20180609","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.11.0-dev.20180609","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Mv0w/DKfluz4MumTkAxTh6FzD8Kn8yg5oNYVvzciU5DNBXCLXGHXfLgJsQcA01mHbC+R2Ux5yO/4RSFds4oL0Q==","shasum":"355e99e2e9fbc24675bf969c6de573ff4e9cc361","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.11.0-dev.20180609.tgz","fileCount":163,"unpackedSize":345235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGxmECRA9TVsSAnZWagAAjSsP/jBUAxQPwqG3v1b+ZiBV\nj8Zqscf9WAa+Jsdr69zfLZrtKXzeKAiHPMNnFt3BXGTYPyI2FdFvDR1WWmtu\nvdIHyfLYraCMQnOhKcVEj3Ct+hCgXkSi9qb+6+JK7fXTDRTjzuJBjulWZEg1\nc8Neo8zFyT9YUXttzeK5a4ZGRHhRz0nMiFoA0PW6TglZU6EDP0YbtQa63unF\n6fYjBUlF++jvfEL9HE6NjF4156rAmUl+w6sbK2mxLL8km3NwxWhJ1Gun1z/p\nlPtpOhM7Dv9KRn+dRI4MVHKGuUdpTivVJvqH+R972DCq8IqSxNgO6Lo5EH2Q\n0gl1zepwXMEdusQ9t8ivgm1sJ+UDr9wsitrsc2SArddqVC1JgME32KXzFlIO\nPhVz31MzMuLL0abGBzHAWieuuBTwe2TuW+V+8vsdi1pu2uH+WltWvMQDOD4v\nUkB54nRb8NRX5v/YUG4CNN6tBMhkJ/MHuueKUjxXngMia6lLmiNxN/V1ZiJg\nzEiYaR3rzb3Et/rqUm/Z+R+nB+/mGkrWoEWcjdFaaHVrCcIgQv/gbAR3a5el\n7ZV1QXy7UtbPMXxt9YZcbPDFhbqKtbCGIIogTWwQl/xFS7GBFKEqc86bF6ux\n8xwWxgjq8XbaVQ9HqbEnnoVmFAhLtJ8CgYit3/bq1UCcVl1Q2yuhIH/CTps8\nQyTu\r\n=w4YF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcBuGIokMePRscN7DzzbqeBQ6yPSo9D8Yv1jlu+1i3/wIgenQJX0Bd/xaj3glJFwbT+O03NXYTaT8eA1hpSIx8Luo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.11.0-dev.20180609_1528502659339_0.7931838064418406"},"_hasShrinkwrap":false},"0.11.0-dev.20180610":{"name":"@fimbul/mimir","version":"0.11.0-dev.20180610","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.9.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":"*"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-isnan` | Prefer ES2015's `Number.isNaN` over the global `isNaN` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.11.0-dev.20180610","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-wMsyOFPHG708wNaJIV42TSndqqFm7bxE+mF7jqEysRSGSlMvvKoUiyLLkfoQgM4xKwK4EIPdy2qZAi74hxFOSw==","shasum":"b82373b4ae6d89890a8d501cc4f732948ed099b8","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.11.0-dev.20180610.tgz","fileCount":163,"unpackedSize":340739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHGs/CRA9TVsSAnZWagAA2yQP/AmGnptoRR7hM176uCqB\n2Dc2FjrOZm6aEsjd5U95/WhYFlqHTwjhDSF2qr1/FzNqotdMON6msUL7b9aW\npxim15KRygu3b8EzbiuP/rwVrZgWxCyDYTr4oYgybvmERWQ46UQo1EjJwtDS\nQ1l7YoRagXoUWXbwWS8uc2jDtIhSkuJ5z1pp1OlOuCiFoAMMy+I77hfJsNy7\npr/fnJB7ufwvU+dhMloOCB4OKESKkROOPLhAmbhV+S7JLWpCj2PF2Fq34hrt\nUDZLz/dzv5GTXZ1dBu8UO6ArE7kGkfFK8NxBifj6OR2+8GSP/i6W5YIQ6+7q\ngfBJ8nzOc0Ldc3o4SbIBb9/Vx1in5cOOMEKBhs4EdqdCLi/eVF+F+5DEngR6\nI4+0s3egzzX4UWbosJpPwQlDpUZGpv1MZhpXLe8kTHSLj92xsKPjCEYNUb1c\njR+2E4rl53aIkfNLvsQ3Ee34TZOC3xrmFmnBe3XnK4er/sYQ/MwNugHqOI1Z\nnrvWD4ava2Efku3xl6wkHj/51tHoY3npaYabCo9vf9s51RUajeUcADqz1Wcw\nfdnNISfifatyswJKhb60C9TiDHcnCr670YeUVQA3n3DyoKZxDGWwRlcxO4rK\nBUIDNTA73gvihIJHiCx8AELh5mc6ugWpOOnQyqLgnVY5L6RunGQ8BHqVSzid\n+AbS\r\n=2NjO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvYkymVk7BKDccXV0qKwYBkb/JOwbAyBhrMhzh1nGqIAiEAoYuOYKflm2M1QLe3eF8cywxiNvuCxYFHqjWMdf1OzMk="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.11.0-dev.20180610_1528589118464_0.04465973748087526"},"_hasShrinkwrap":false},"0.11.0":{"name":"@fimbul/mimir","version":"0.11.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"_id":"@fimbul/mimir@0.11.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-Hj3+VhDMdonY83wBKXdSzDQcqfzD0/7GTQLr6NR/lRcBctVKYZCRPWflLHhu4td7wOfEW5DyD4z7r5QPu6dwFg==","shasum":"e20b79a643de7b9e981180c542ebf95d360c12d6","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.11.0.tgz","fileCount":167,"unpackedSize":353612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbK2ymCRA9TVsSAnZWagAAey8P/2zl77wU32aqAoFEDXqg\n6psAB8LCI6H36Y3MoPjOH44GxFuzlV6tVyDhCLbCKm9v5hY6F2yAVwTlVR9S\n/Iuy7iTSu26Z2cGFvefB35QjO5LZeYzdIjje8N+eiPrejYFUajeqWyjyijYU\nIO4uWLDnAA9rSBT2ohU7yaHy/ito7DFZrXkGvytb0I7RoWETwpXQEcvIF+1i\n/XnU7VvMSDRJHY8CAZJ4n4WySUq4EMKBPCYrvd6Tly1/mV7MrxZuIJEwTAzU\nxgvyZYYSs0OK34kUiker/AxpnfSQuxxY58n2MQvd0OE+P4Q14dBtCm3O03VI\n6JS81x2e2FX7SVFNZ+fN9YI7sMPS47lA4XV/mEJZEC1lPm9JMrHqHG1jW31k\n4481KNj9PkmWZY+RJVo0r8E6ZEQ6GCF5i3t8eyz52yDrEEBA1/OGD5dS8fgk\nh8Ib8JIDWWlbbp89RFKzVkY7aHIL0OjRhpL1EpdNnj7XccN5dPM6QcG/CYmi\nM7dzUkO0b2WO82Nz54neZ/iBUNS9oYxGUfjiY5pkzzeuwVF7PReOjgxE2Ic/\nmIwUeqxAPnDfco4Y/2CHYAPyBWPd6wX9JcZH3TdZcpRu/wqoiG9ZVjvV+Tbb\nzNk+89+qRPm/I8axNl79sJKsZsUmHSbPv9Akg4OKtpleJz8qYMh9kjiYTlab\ncthZ\r\n=d3sj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZWRmWC3NNVL+4oQx03AdNbirfLfNXQUBSHiqB1oQRnQIhAMwpEo5uj4L/t2RPSXcjB+yOKv+w57h4M5iz/TkaGhb/"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.11.0_1529572515860_0.7641022349977085"},"_hasShrinkwrap":false},"0.12.0-dev.20180624":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180624","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n`no-useless-jump-label` | Detects `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n`no-useless-spread` | Detects redundant array and object spread which can safely be removed. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180624","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-cIhg4bEGydpIP36SKWqmBBaYNUcJQvTeKDqF2tsiWvHWLECo+A1lx+4A0/2XRzuEcmieNiSneUyGbWdNqJE+Uw==","shasum":"98d04ad4f9aefaa71842c2ed8cc0b98914e43dfa","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180624.tgz","fileCount":167,"unpackedSize":354399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLuI8CRA9TVsSAnZWagAAT1wQAKTYrKcwQy52QBsnzQZI\n9RVjE0+BSSvA5hnsUK/oHAkEs2AT27FXoLivd4vZo22mZPc9OPyWoMbQkg05\nHG8Qmy/zK7wgNkzNFQZLgLgu3juuCufXfqKOxhI4Q3XxgZagQWDf6ZezRWHC\n+1+7oIjGPN5fzOLxUWsxtG/SsMyhD4WQ5SWBfa2O4rJovjd49GUt/Rb5vv8L\newN0hM7sEyr0xge+Y/ZyRDJGcDFd+RBoYaGBKVddXZ7DSuBzKFJ5O6rzW+fo\nRP+n/TmyosRC2B6fh0S3qJHvytPlPLsVjGJ9u080pz4dN4emoUb2vYvkH1Es\n0nQOio06lxRn8FtZjydEYlb6hcF566ucnC4186aWFOuFit4bytELZgWrrcd9\n8qGTlAVUOpbRCINssg0VUV+uo8f7NMMOoiElD4BwGmvE0hgenCaHUzCibL5O\nx4cZyzC53iRGRQO19zrHRxIuPo907tbu6vW+oCeGe0+tWufdtuQBOoS/cAM9\nmQrHX+0tnEqUPxUfgFnqb2NB914HaIVAZKLcgG6B2ivqEkmDQ5U/leNtvNVP\nIHsfEwlsyqAJeJDXdeJJeevibe+GEB//Bek1cA1SswV1ZBqf/YjSTrKBfIya\nmCfIhxNQiykwzzgECAeylCFok5kcN04r5xlzQbzT33Z33+Sa4ANsYGO86oZW\nlJOk\r\n=cIFE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBeNNuH8zejTUgKe26bdQO1EMs9GcjH82xM0BiVATeefAiAWtX8kjNzVK/gHiBkZlHtNrtB34HKCi7Lsn88KBYmAMw=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180624_1529799228318_0.23883529986857277"},"_hasShrinkwrap":false},"0.12.0-dev.20180628":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180628","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread](docs/no-useless-spread.md)` | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180628","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-EydP03k7t2jCvCgbt2G4T3CTejT53BGq1HKtPY1izMMK3XGMAs4UqgPXSeR1Fna+aIhH5Ec0fJoyTnqDHLZeEQ==","shasum":"76adb4fc9433c7b97afea2e46552359754d3bbd0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180628.tgz","fileCount":169,"unpackedSize":356486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNCjiCRA9TVsSAnZWagAAaUgP/0Ysst5aQ1owhCmZYEA9\n+vg+gt7klDofxbzfPBvk9hNRkE14723f1ZiaWCNpUaeBZUdzmn7+Qh4dsAVz\nfGov7la72fZrVWorPPmLsQ7StCS0t1nIxBdWLc73sf9Hs+gNw9m67NBaGwA1\n4WjfWGNF9sSSYdaSTNZX/lNED2YeqF3AVq/H/8vDbIJAbqhEGk1TZ+8ruijW\nc3KHiUhmsIBcOewDvNc1oFNQg2udyC0iyo5xPeizmMf4YgaZu9P4BYX0kyRq\nL4t0eUkTGzcBJdxv6CXj5uysfPMgJVMzel3y80IzYkEaV6t09MwnNK20Z3BR\nvMYVVtdtrbTNNoHuoDZR0IoqLKCPLvhcz5FdTE5RzhWTCgtHv6jZwYIEbnYX\nv8oOA2FGrDarSwy780N6NsSFZ1k+MhQeIniWraT/lVY3XJSL67UvM2DQcgaZ\nRxanPrplLVjDwdvCMSxHpEzK6XPDunDhZ4/0QuUrFeRDI0Sar0DWxxJ8F/Xd\n39V/OXItoH4o63RPF4HX4M6lGa0Q8mPbc8qjkXJgfalmuTnHCvXJP2hI3M8Q\nLQINtd7Sv0XwjATIC+EzXyw4i/KebtrxqfY8CYFJZZ76m5fowsycfG/0xaAP\nInyA5CWLJstpisbtyP6HIy3PDxqBfJfuaV/N0G9YtOb7MyIp9Jx5ZO+cTQ80\nErqO\r\n=kfrY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICYJ4SrzY85Xu/WUbjNU4uy5M2bC8baiRgyTxny3g7XFAiAvv0rz1Wu7XnSFTGIfAvt+ipKwKb5/BWtOOyCJ7jgNmA=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180628_1530144994393_0.8979191965980655"},"_hasShrinkwrap":false},"0.12.0-dev.20180629":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180629","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread](docs/no-useless-spread.md)` | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180629","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-EkUsHb/a8HTBhIxx+uelQ+ouogUj64sCnrretihgqfjAVV4lVaIy06JM5KoqktbqMvuO5S5BDo7eXI5qKcAfBw==","shasum":"d54eab808c571a1fa67cd32a92afe88f48d21abd","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180629.tgz","fileCount":169,"unpackedSize":358314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNXq+CRA9TVsSAnZWagAAk6oP/2Wzep4TlW0x4cHqQRL2\nrTpFwYlWbtfnc4eoaGYlLx2IHst7JYU2yskW7okDB0RHGwScS5CUfhXwt0IQ\nA7Dcdy4rY6ImN5VRuQ9sGt1Xr046ignUpDtzfErOhg/7SOs32RRXekhxsImo\nFwr4AzT4pHyMFxXxhP7QMRyzI9Cqo+XxZIAKKOgKbo7iqQIbO/810GzFRi5S\n30Z+TJqTW+zDgOsftbY50noMmKlkoebMn2aBVDUEnm7QzYGhAa6sP29+Yyvq\nL0bE68AD41WKy/aphA2nzGMiZBd1IA3TxEzWumVMl8yiftbw5ijHtc1LaXyZ\nbXcBaayyJMnLzFLZCGrPTbLRgXN6nzdfJOBYChfCn3Lu4q1DKAUvmEDUs9F1\nCpa6t7FFCeJc4ooMYueQ6nvVnoWds8UqN7mDy1x2yTGHkeRIzaxy7H3hZ+q0\nDWNNUtwYD0fu96RMzxUABVxTGrLigguc2JZs81EI1B8DoA91Ym8inRf1IEiF\nPi7J/mw+yffeKc8pdVwT1hjdQUA2HusDlq7zg7cJBOYuShDSab5mRjCS+YWf\nW8ON18NgTtejTun0D23ZOYyCSE4WV9N59w8VkKTQN7uBn40gBsYTKs1gfbqP\ns27CINDnqUlM/6gICTtjGG6GTqWzjkr3u67vN76IrdHAvXFLTfRWZHKNNudW\noHxo\r\n=8bVs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF917rBjJk0oQnBYuQ4sYeoF+waEjHbR8pZ3gVnhCivAIhAOAnoHSAYXIzwMa26Dd1Cd5ftD3PznGxerchFmbmT18b"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180629_1530231486200_0.8761832641864735"},"_hasShrinkwrap":false},"0.12.0-dev.20180701":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180701","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | 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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread](docs/no-useless-spread.md)` | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n`parameter-properties` | Enforces or disallows the use of parameter properties. This rule is **not** enabled in `wotan:recommended`. | TSlint only has `no-parameter-properties` to disallow all parameter properties and has no autofixer.\n`prefer-const` | Prefer `const` for variables that are never reassigned. Use option `{destructuring: \"any\"}` if you want to see failures for each identifier of a destructuring, even if not all of them can be constants. The default is `{destructuring: \"all\"}`. | TSLint's `prefer-const` rule gives some false positives for merged declarations and variables used in before being declared which results in a compiler error after fixing.\n`prefer-dot-notation` | Prefer `obj.foo` over `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n`return-never-call` | Prefer `return neverReturns();` or `throw neverReturns();` over plain calls to `neverReturns();` to enable better control flow analysis and type inference. | TSLint has no similar rule.\n`syntaxcheck` | Reports syntax errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Used to be part of the deprecated `tslint --type-check`\n`trailing-newline` | Requires a line break at the end of each file. | Nothing fancy here :(\n`try-catch-return-await` | Companion of `no-return-await` because inside a try-catch block you should await returned promises to correctly enter the catch on rejection and/or the finally block after completion. *requires type information* | TSLint has no similar rule.\n`type-assertion` | Enforces a single type assertion style: \"classic\" `<T>obj` or \"as\" `obj as T`. This rule is **not** enabled in `wotan:recommended`. | TSLint has only `no-angle-bracket-type-assertion` which always enforces `as` and forgets to add parens when autofixing some cases.\n`typecheck` | TypeScript's compiler errors as lint errors. This rule is **not** enabled in `wotan:recommended`. *requires type information* | Like the deprecated `tslint --type-check` but formatted and can be disabled like any other rule.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180701","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-8zHymBY3pehsQLLaGIJ4xJVI5Ntt8iSYHQ8sdTSiNwnZ8yMxfjt+sxGDeTugw/FPzkrQO6ZsGz2cJoj56AEyEQ==","shasum":"db73c715473dafa4bc08b7f208deba6dd8e0ec4a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180701.tgz","fileCount":169,"unpackedSize":358466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOB3SCRA9TVsSAnZWagAAFpEQAIUrDZh5tnK3CAn1Vr0T\n02Ggaamp1cPoyAkPapMV2tF5IRMCP4+o306+Ql8P1uBz1ktLR6Uos9zBGjuh\nb/uRGjenLQOa3pfKIELx80zNJqyA9Yjhn0OncqLIcffifvfiNeuOpjmHpEwE\nJm9/3ieVl34d6JkL5DU29zOg+OKAwBPVVWd9T/NbwZHT7QPCJUDrXdnQw2I3\ney8fqqswnoI0nXtKPqJMu3wLPsmERwF8oTGjhI5Yzh4z295/peno0jBVBwPu\nBNA+y7Du89AEVaPVB8AGwsXikhxKFEdyJaHqw5OKvcwA9DQDrf9+wd8M61mv\n+DT07h8/3BM2SH81qC2Vcu9YchmiXsZVBKJtpua21GKP3QRbFelRsBWlmjx3\nYgt4pFBiHJRxrB7Wq2GANxnsPI/W81h2iDhORQhmKD7vkDUQA6hh2oNBLr6W\nw40O42/EsFSd2arTjC8SbPSmzYdTgKPo68mOuBMikjx/5sxea8aoRDMKMU97\nU6TXZkA7kbTxeRl2adjCk6+iPWlZFthb4Fe7wr4O4Ghlua9UuiomyzjrQ9dY\nD0xb6sh6Uz0dEGVk3Zcpu8zyHZaPRuU804EuCynRPK9Vy5ju3YhR3HmVTQXN\nrUpqop2gDBE8pj/8gwbtr2oYwtUXZrQLCV+pKXh+A4xOKE0HupmHQKJdFofZ\nh/Vz\r\n=6smz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEB4l3YvP109OupHvyFubJwVbBBS+oUKnvkZDJi8nNCGAiEAmbAiKnxBIvAqv69wB5999YyNMTVKP9b9f3J1V7Btydo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180701_1530404305973_0.8471348587825072"},"_hasShrinkwrap":false},"0.12.0-dev.20180710":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180710","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.2"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180710","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-EY+UWXNsJCOBLIW+9P1TfxT8uhpocyU51wL6WLb7BTPZx/IuOQ31xPUg3B9fW6xXzZbZlyzPnbHPc1zhkcYUig==","shasum":"9c1ba95df038b5933a61b8e1c2ca5120c6eea845","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180710.tgz","fileCount":178,"unpackedSize":374855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbQ/yHCRA9TVsSAnZWagAA/AEP/3bpMsjFbGmAcYJZW0Rb\nuhXn6nPDOvkL56bLXZ+nCjNVzJQS48pDJnvLrEnYZMZGsdZf0620Rut/VNog\n2Ezreznl6oEkC/ycSEIN+JgpKUZKO44ex3aE14Wmftjh6luRgBgPwepl3pSQ\nAkb2mE+KedslNtGtYL+CjXzihM8jOhwaRt22Ou6hrjMxuvJMbgApvSJvmuec\nrjW8gLH7hdK2IuohYem0b3ldFxavo2mCFoUo4AZXBteH83uRClVkNglAPm6j\n3Irzqw18tCnE9bCaJflNp6uMbZMVm6elDeN2LkktbTzlYl1J+2ftlmaMcv6t\nWabZ4XJ1E2Y/6a4TRm5aqdrCyyL9s5CLqReYr2KM4EksbFoddod9coVqjweX\nsuJg44b/HKaCeZsF/1W8uxBMJqfN25+DwW0d4/3mLsro0p+PbLLjq+JPgbTe\nxhtKViG+6TVXw9aCos6CqhwfCr981vXrL9Fjf8s2IiSctIg+9Xo9J4cpJ4R8\nA+wTxrtUvZJUGjHvfBm7kVayAsnd+MC1TEiqmsoyvZZE1hisw86ytb62hXVi\nnDFlo3W421WRBybIdrO4EOhg7nIpgwnIcp9KaemndB2H4bvPZicbNlxzkjM3\nJDPAmGI89WOaFOhFoMpWKd7PEgKuoTS6L8GTa1v086pxLvM+mc+6D6ttaxhy\nJWwl\r\n=2DU3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzeWwQOYHLF9JMKel3o6Pax2T+++YkhBHVKDREe6TcAwIhAPwujQ86tjzIyAcY/FBwZV6I8Pdz1C7A3Ddn+Lg0QGAT"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180710_1531182214781_0.3502617994525685"},"_hasShrinkwrap":false},"0.12.0-dev.20180711":{"name":"@fimbul/mimir","version":"0.12.0-dev.20180711","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.2"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.12.0-dev.20180711","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-etfEEFap5Hc2h+LRV5mchvwcT7Z7SYzfXTLstEQ3G4AZ5cL5kgFcKtJDn41aqsL6izZYr7rETXF7EIPkDiDu+g==","shasum":"2047b95e2a49b8982ca605d6767064ec1044a436","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0-dev.20180711.tgz","fileCount":178,"unpackedSize":377709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRU5DCRA9TVsSAnZWagAAV+8P/2N1MPbGe1CEWQ57OL6x\nqU9Uincrr70ljKH79PGtgdtVJYAxym0GghB2of0gaiyDOeJ7osEhsXIiSM+d\nH8Xqne1Eox0Xciuv9HigF4i/pJQOOluvCjh8s+w+/kl4rv2QKlKqT7y0nIqM\n01FLDDosxH0X/KMehUDe5He3w1CKRS/FTF1fwJimrAAR21aRt7FpOTHSVkLS\nzXpeNKIOPgCkN7iim2ORwkM7NPUQy/TV4XP6AariTEaVNNMlziGQ7XVD3fKL\nUbz93ZHwkadEZo6uhd3GvNHKuncpFdiX6kCff+htQNYpcoHJIYFH8y90uA/x\nPdizKWuj9yPgODxv00EevX9ozlx9FagY641g5MpJDaEgJHEt2eLcLCfb4w09\ntNAi8znZzXhcvBFInF3LIZXfHsYAB6OwMLhJWkw6CbX+rAzQUUCGBfYZBXfW\nMzq+SgR9aC8p3pVu9l5HwThh2LluMjjDpCOhCeb2vXXh0g1uQ/qn5lkRckZo\nJou/6KpEE10TpTcQvc+YIzwUHE/xrP16Wv3Yzz4JhxryvLDka/+eJdRi8UBp\nmrV8iZnqw6jxv6EyE1NaiwtS+NC90hgj9iOwHO62j4qdfItN6kn1FRMxBS6Z\ni/wYjf83xj/YBQMisVN0NvwXgBjLPo8zLcnBR1ZXK7gWsyNOK+er1VXEl55W\nEaFg\r\n=dc70\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCai8q2HEZ22OH33LYJu9BQbPZwK6W/RSKfObUey59McwIhAIB5q/rk7+Md7KhLot6TGZBTylTG9EscXGyV2xJXt5Lf"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0-dev.20180711_1531268675589_0.9888716181740402"},"_hasShrinkwrap":false},"0.12.0":{"name":"@fimbul/mimir","version":"0.12.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.11.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.27.2"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"_id":"@fimbul/mimir@0.12.0","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-QDNNaoFnacGIgc2iSlT1qb7VemoodnQhKFc+spmnl95PTQ1XOoWwCXqp2DxUwrlj4ovaRDAWjYPEy0t3COSNIQ==","shasum":"cc9e1439755919fd32159aadf40a70eaea8ae4c2","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.12.0.tgz","fileCount":178,"unpackedSize":379187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRk0wCRA9TVsSAnZWagAAlmoP/jp5cDg2ng5Zno32ATm2\niw0T1QripieeG2BICF5JkXTo7uzuBpYAKSFLqkz+Be5hHG8Uq3kY1a8E+7Mj\nzigR9PsVDmwyw9JaJQy6hCoB3UVzbXVh6vJhDmhLNpdkNK5Luf9O5gWMPq7e\nR3AKcL2szRKFCf0mx7W78DMKfGlqj8ILc4rMwsIhOcRI+HP1QiVvE3Dh2GzF\nQ/0za4glgSVbE++pIrWjpYc/4RJSWSt/q8+aiFg54n87eIItlEcKUUfTimuP\nyyXAjukGaAqO39HZ9rmyDQl+UufiPDjAv4eSpI0oBNn6tFo4X+4NzKoHRdaP\nq+ShjhTUWflUOwC7RgC/rxGOeeK6jbMxj+nQaC+N1XNTCuqs8HjNVuXSC3De\nizTIlINkRCMQ/4BU92bD5/FQ11jtFUzj1pKHuZLCiU8mrKgSWLp9y34s3qv0\ngPNpv5nCKXNhaKoNSPnvGCc9vbnbTT8wyOMnqJWI4zm6LUopxqpMcJLw2WYi\njaP2Yv90rFlh5dMh5PIqaxkTc8WEVUDPtVHcA/p9liDq4CumSMVEi5DCCV8o\nykqLzod68INCeae9uIjE2kvPw8fyFvxo6P6yw8t7MrWhHV9zTpZu8vvPlWLN\n/PpIOaT9QetsdVRqf2A/8CJ/ZZF+FU/KDHnTD3PzRRadcdZACefmlKweR0qY\nMDGa\r\n=UJ7i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO1Z/sCroNGvYfND5aM7RH3j1rE+xx+SlOU5rR9Nk4kQIgaYac4sIyTj0DYTn8r/WtC9ZxceBLXNymPCRaWt5acQc="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.12.0_1531333936337_0.25581220950072114"},"_hasShrinkwrap":false},"0.13.0-dev.20180718":{"name":"@fimbul/mimir","version":"0.13.0-dev.20180718","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180718","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.28.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.13.0-dev.20180718","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-VpuVC9D5nWyPcf7stciJ5hhe2fKAu2EtbxRWM0wSuIIibtlKKZO8XmPlrk6eTI0VaHj5V+H8BfaGk/W1PCegKA==","shasum":"eeefb8a2a25b8350fa0b61d161afb6fb5ca55019","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0-dev.20180718.tgz","fileCount":182,"unpackedSize":386648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTonBCRA9TVsSAnZWagAApXIQAJngp1Xle3piHkIke+y8\n4AoMSOI6Ae4wQWekU6VZlNB5/h/wa1fid19mm70ltt80xburFsDN2aHUERd6\nsw/wEZNTVBMuYuzc/WoAyTPLmL7f6GHkIfM6ntsVxIOkKtPHjjXRcdu2OjlG\nrU3ekTlj/IZZxs1sgWP4+qlA1W5YEXuVybOnqgSGlk6Rfp0nTKurflaY1tVI\nTK5OeI370WJGFOWuBrB1wBrNOxDt13ZxwNFtisjmh1w7OkeaR3aCdjOLTFmL\nFL8erMKOlkNxDW+waZGlFyFGeW9B4cxRPP7850WMLgE5v58Up5KcOS7eARWk\nrRM1zDtzLS1F+SKxgam932EjyZ1BjfzKFD83yoB6m9nw5mneBNiRD2u4gAst\ntzNfefXGKsjbsXKV9OdWLb+CHBWJqtHJB4gqz5n2UxYjgweB4AXpG8nzpklf\n1ObKNsE18HvpGGQphH8QziOH+YgQJOODwf8RzDv+MFStkxsYRG91sXnbhlu5\nNPUHcgfNXoCYnbiXm8+3yEpQvuQnc420yPIyXKWBkMSGTLhkLGlKCGUAyLso\nW1e2flYsHeNIh3xs9Gyo6S2X9CHAyR2g7z/TAtbbNuYrjoSnqgNfiu7W6J4p\nAd3aWNcbAjEWrdBohKE3uH6Nooc75hAwq+6sN3qlZR4F1aocCt4j4nx0rvBF\nIOQg\r\n=Ey0o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmgzFG2KjIyx4+uT1SAbBvbqyYEr6SJB/+a4ai5ikUXAiEAz0vaEgcYz1iyoXV8d1EE1nXzvF9QTSPAZXcDvx8SxY4="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0-dev.20180718_1531873729745_0.5282606161393046"},"_hasShrinkwrap":false},"0.13.0-dev.20180719":{"name":"@fimbul/mimir","version":"0.13.0-dev.20180719","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180718","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.28.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.13.0-dev.20180719","_npmVersion":"6.1.0","_nodeVersion":"10.7.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-5i29ahP3hQ9Gc2vR5fZskD9Ta65YaZ1Hn7BuwQEYvEZYoCO+osbJQvszfUbUK6wD5STOVFube1I40s5lroxS5w==","shasum":"dfc4511cd0b04bd88997376eaa49c6fa4d35cf9a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0-dev.20180719.tgz","fileCount":182,"unpackedSize":386834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbT9s2CRA9TVsSAnZWagAA20EP/3ZqOkdKug/OmaUclZth\nVU8IsfjM9eYpL0s/v7pZ2Nx2a1YetX7hp2jYecGY3CYeJ7xMUeKUdIXO1Rxl\nEH3z6YD9ZA53s2NUcXK+Dck7lUAC06Aj/9wstI9hmYzH2jJv15EQ+4M3Wv1g\nJJ1smpxiMo0hRweZgWwZEKqhmPmWQ3NDhIGVTg7e+0zHUKCrMzherAsFfwO7\nicbc9qPDxTveeA4/L3j44jTbbyrSq+9twjrYn+IA6QS9c2iN27Zq47KLIxLa\nsimGYzGlUP41rK5lhct6sk30iOlrJ0MjvgB/LaBezgyTIIJg4HzuJ7OYNVm3\n3jB1sxbHa7Yv6F7rZ89racaKja0wxQuN++sBTt6NtCT33bxuCAI2lHJ+9AfC\nF7OMKndqlDdW2kizU5evFY/LJPm13ehwqB+o1VI8LpR0tnLw48uKK86/hz/y\nokg/kv1M+n2gnl7t4x3U7JRYIboi18JbeHcks8OFEPcjJxIwxF3W1xNPCMHD\nRpEPfohnlR7fq6cN5ODSHgNXjeSYJCc5ZNUCk6Xi4l3NxJxzSp4VDJJCJnfj\nY9BMVRNZ2HsbPz5cFid1RFAhfl16ctiZ+HoJ3ypOzVQoZyx9LnBWEZ6jIWwC\nmGw+OOOBZbTY73coRFRFircW23Gbsxo7vUyro2XHdnJjIw5nSXdBb16b8MUU\nYwXI\r\n=XIam\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDef+LusNO67c3GXd57vfKqkB1DlvLY5rmUvq1WqHqxawIgAJ/X0a1vDNTDLzAH8SOBL6fvy37cH67U47BWOpKEgTg="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0-dev.20180719_1531960118320_0.5005793769447353"},"_hasShrinkwrap":false},"0.13.0-dev.20180726":{"name":"@fimbul/mimir","version":"0.13.0-dev.20180726","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180726","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^2.29.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.13.0-dev.20180726","_npmVersion":"6.1.0","_nodeVersion":"10.7.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-4vbmEWLtgN19thvfghOT4eET6IHpKwz/flXCwHcqgGSVkdVq3IdoyDxWdg/TowP5ViEQjLlhz5JRb32afU1ENg==","shasum":"5669abfc9807b65f5f415f445f0ba4a32083c4a0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0-dev.20180726.tgz","fileCount":182,"unpackedSize":386906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWRfGCRA9TVsSAnZWagAAnz4QAKGLfA+NSwnAxONt7cQX\nUHEQRgCKQNaolC0v/OfNgrCw7tqDJDWPBU3qm67FB8O7i4ucJ/YyohSGEusp\naNQuUP2XBjM/56IvYSyGiXqenQE5pc8r3u5K71YRPClq9W6FFCDcByshsdAl\nRA9XBMFivFd5TpAHTV5JPtNyfBfvsaD/8I+N8CW+0ycICbvxGaqHT5FYTmol\nBY0DaKrx6lR35EhDOQdI9Rm17xOXa84w/Vzp2lr9QO1O+CbVIL5ThIT9Vnp5\n9yJW1SdbjrbYPI+la0Vu4H4wKw7Q2Fo7NRqDIS/7ZE8ZPV0UeD8Tjr/xYJST\nnH127DsuTVRi/jK4liXy8AHT5ENK588YOFbWBl0WyYNxbr6FBxSKTi/OmB+H\ncBDnlPcDvnIq3Azww2kzK9mKqqmsfOZAFQhB6FmtdEy508t314zwj5GzAVnZ\noDxeUpUsRQVHWnruXpxZOxXGsAwZOq2ohgodFTsfgWF5kCV1fKFHIwmjaQ25\nVq6QWfXvlMP/BF2Ms+oEeVUtKLoNrIKyGwdxx8qhkSztNMCvD+Gjnmjfig80\n0VvnwpOd5QCMsIRa9w5EQNrZyjP/RBKBAqw2T5ry3WjeqamfG5nzG1eu01Gd\nHCKZjd7gvCydH9DbIzkumRS848UiLWwmIdKXxDTQ7AAupU4TVNrzg3lNLnSZ\nsKh0\r\n=7FxK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH0lEwAaJ+NvJcmoRBW3rOQwzh82Xr0jYXKbICYcLir7AiAXZJ+HsQPiTlF3ZD3f1Tt/0w5X9l3esPa66YrOyOrvGA=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0-dev.20180726_1532565446753_0.154316122344206"},"_hasShrinkwrap":false},"0.13.0-dev.20180802":{"name":"@fimbul/mimir","version":"0.13.0-dev.20180802","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180802","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.13.0-dev.20180802","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-RiBqS3Gd8lONnHiqws0IrlFvjv/7cNqtQfV5dpyQ8RCEy993gKnOVLjhudMyyYoyiop4eU1qWHpQCzhWZbk9qw==","shasum":"96980d302ab5e79572a7d798b03d246153a65d83","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0-dev.20180802.tgz","fileCount":182,"unpackedSize":386437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYlHvCRA9TVsSAnZWagAARgwP/AqcR/FZMX8MbYFkiZIo\nUnmG+jMGuyeMtApvegkd0moTK9FyFY382f6zMVMzWGeD4jh13REBSTBku+/3\n+xsMe+57lrHGSQ5ZjKxZ+dXIOZ4IVFmLdyDyK0WJmq/81f9QmfpbvWPPaeAU\nOQnozrQRLQOrSGgSJdlSgR2uwnNUGqiyZq3ZK2R9mbfVgu6SS2M4kR4kUj9A\ngRM7SdoYESYu4//UMzBdU3atZTnDYFBbanqjoYupverSs/nTwm0jPCOjJABg\nLuBMZqZhGN1mYgyWSa9BfY2xE8hokSnTFn1S/vmQ/QuUnJM7yUDQurdilgQ7\nw1Nsjia+VlJEOSU0Te+U+ijZ9fx0at8vmjxUXE/coC26zYeFEVFALHuWzYVf\nmXyarAXs0kQ9i0p1JlSfmGptJskjxzG2144N6G+HeuIsohSHG3oyMZiLrTlT\nnD/8WLDGUScUgmF9uw9wZORZmU/abhb4bm3bgIdXJBHqeO+xyDDbAXn+a4sS\nV9Rynyb2I3aSh6V81ms1izVboq+j9xgf9SeL8KuY0d+QJDtKE+N0LAl7o7jT\n8c5sxz0O9S21CZJ4UoDaENuGWH3oIRUwfG0FJaJq/k/CBRizB3WzQ3/rMidE\nvri18msQhwZwHObLvEafzr9UKsajyfuJn+yLz4NzGlIAk8yXqZ4O1h/Wj4jl\nRZAW\r\n=UIDz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCR3fB2ezkP+Wq9qPvmZmit1sVF4b/9oSEPN7gsI0nHMwIhAKSQuO/uq3E7fs5owLRDbeYCgK+o/H37t0eF5qo4XRNO"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0-dev.20180802_1533170159372_0.7400293217777214"},"_hasShrinkwrap":false},"0.13.0-dev.20180803":{"name":"@fimbul/mimir","version":"0.13.0-dev.20180803","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180802","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.7.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.13.0-dev.20180803","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-kgAeWxSGQluqcoT8ZdBH17SL0TDR89oNE2N3fxsO0OYTHzl/5lqtQFDU7kDf4cZuBM2sL3Y0jAuLuaDDAdTSjA==","shasum":"5f3141bfd3cb6349f8b8412572021bf6bcecfaed","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0-dev.20180803.tgz","fileCount":182,"unpackedSize":387516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbY6OUCRA9TVsSAnZWagAA78EP/2aKWNNhU9bnWhEUQ5lS\nH+L7NgYXz4uvy/gdvN957hCaA4UYyVMdR46aJHXbDEDkIkwLfUfbLBLUY/Xn\n8luNzQ7tSy7SNO6tCAOus3dWSj28t43HdH3whwExfRg+2fybAasQoMAEbvLn\nJGgC3YxCvBgDDq5VXvIKh8OR7wkH5gz/jOURLJDL4ulOW63J3UnbHDVHzTtJ\nCER0bx19a2jybnNtmjkpoe6lZXKGUMjZBBswSs/uR9fELkGcdnfjGn6huuY8\nE4QPHfh7yrb2LS0TdYj27cGpA8cTJk6uGCXD7RD6u7YywoPY2s4do8mg9z4K\nph7c3MwSLmqrCRVPeitmZEaE66J99YxU7S/YWbnKBjnwXZTQkStDokPaEGKZ\nVmR0sr7XW0DykyDZ6sNRAuEhwbQCMSAeshZZU2X4TluVMZFVOqt2osoJt+FY\nasr74he74D6XIsWuGak2KlfqQvhq4HYJX+aO+bgsOyjEMXvotYgpzajgy7UX\nFXIuq2nW5gnkVCBPfGcI6l0+oVSgY0xGBzTeiUOIEKPOzeL2O5u4nxRJF7g1\nTkrDbmIR2tf4aoNMJKgk9tXeXgA9HDee9xFyVH0bKNAAHC9iM/g1puOgTvEg\nKQTzM2xwTUvlYWtqtZIHrSj9hvTrSiQTcFCcpadBVfEupbMDAUQbM4KVCYb0\nMOqn\r\n=hU9F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqCOP6zvGNlVwVF+ivHberchtrpfAvqvFPfbO4HBedRAiEArfwqoK99uMlgSJTND88nCyNlXPoTX6yCR6fJJ8PJQ7c="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0-dev.20180803_1533256595828_0.577421034894815"},"_hasShrinkwrap":false},"0.13.0":{"name":"@fimbul/mimir","version":"0.13.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.13.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"_id":"@fimbul/mimir@0.13.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-9WNHRAhL8P0Lo6K/BJ9zRjBZSIakZAL+zYxoAPMP4XHeIiWgVUyV+ldcLP58TRD3f7bMRQrDyPggEi+bjjHHgg==","shasum":"6e75266df7f397e519f41b6332fea51b38c486ea","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.13.0.tgz","fileCount":186,"unpackedSize":410861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhEMdCRA9TVsSAnZWagAAT1sP+wSdc7k3oyIoQrdsfeM/\nsRhFJwnDOh8mhwIvH9VlSwTe4gtSZUZ9HOS1tgcV90Tm8CxczSTPLVSDks4P\nkLzWzmx38lHGOslBcXxzxE51f8SUziXVkQopYdHXd+oS64+LFkqMmLvdKqc0\nArUh+3hZpTJ3m87Dq2T3jOlaehvKhjqThO9CDHPgys9Uj606yxyF3VHeKmU1\n1soxQS5ltnoebreoCdoUXGCaRknMM8dscNlNfuyXjBxFBXAlDqR3qDkwjVwn\ngvqPFeAWy7T4NhA6HyaS6ThqpPSlgZx7POeJi0vBuRK5Xe3xddC/DWTo/3YK\nJa9SW6z9JI8XI2XcK6ON8Z5us5P8VfmwldiloCGx+uXMJbLImFfhYi777/N2\n2krfosYBXzTqyavYvE13MHGtX/jU88omQLFguSdrdgcG39QUAWsKWxD+46lH\nIBNtnrMwPM791X7coNquGAaUUhRPBGIBCkzLY+dF2rocmvMtYQQVVcRINZyg\nHRgUlgGKnRMX4gllVwLfZMVWkIpPwjbM8xWzDvvAPdKUpfK2yJzJd0UY9nzn\nA8FpEu+Lqztif6oMo9ShdTCMG2bWyiVWvKRLQnUbNcG/A4nA+bEqN0mWOkDm\nWQ0wqwRGNcrZpf06a1ZyeBeOJTpHiSjs5/K8mxuBzphiypm61OaQDaLf97dX\n+bJM\r\n=b/Fm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDG8sFscUZ+yVfgiOFh9X2Mph0OKtrCTjuWV+OXIIB7WwIhAJuZWJcI1xHj3BhzQOLU7oz9bmS4+os2sxLjPD3AQSbt"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.13.0_1535394589245_0.2546421311447469"},"_hasShrinkwrap":false},"0.14.0-dev.20180905":{"name":"@fimbul/mimir","version":"0.14.0-dev.20180905","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.13.0-dev.20180802","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.14.0-dev.20180905","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-lVTabxPHjrBVJJV81W5Ivx5nPPoH4AfX4Qnq7kELMpoViLmSKAaj0hHu5H5mTEqP6BT8jAtbOW9+6kUAJQV2jg==","shasum":"e11b8710a2dbcbe07cff454d195ee04ea79d0079","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.14.0-dev.20180905.tgz","fileCount":186,"unpackedSize":411003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjyjaCRA9TVsSAnZWagAAs+oP/1tBo0Yk2P5tdonJplWf\n2b2gEyGuOynlqXIypTleTU2zQxRkzmYBjGKd/8z7KCqrT/mo37Bm+8V/u+2r\nQI9fFKHs4AXkby1kpHtd9PKhQpISLlmn0DVQTj4+yqIzLshfB3yNRMT3RtSX\nJ/8zRsOCahvbSI8GlG3NOH+vR4FdnGBbUU1Pi0LcI2q6Ss95eFcVZwD6cDBW\n8b0G4wz/wW1y1IvejXxiVLbBV+xnDmOCFEI14bLIhlBz0m65WR2jxz+H1Ogy\n9y78rjR3ZBo/t1zdNMZWpMGfD4ZbJOAU9nAGdf9BbopSvjFUD6WLrotN90Ch\n//7Hfk3x+8NuxNB8LX6jlwTL1aKvrbNTFLvWINN0IIEAjuY5ovHMKsOJju1N\nhSNANrivCRPHskSYgaRfp7cJPWm9tNEqru/KR/0CuhHwpgYXgZVixl6ClYKy\nNoG6FP2cCxbnxIuxATQe39Z1tdSADFthfZ67qFc6P5vLVIpipYTdpbTOYoiS\n5KnGHI26IoSl/pSsiHE+Zm3xkfAUSEmGd1SUebd3cltYXs9A7z0Pb5+nQ7yb\nACnGUvTfVf6SCqAX/ZUyYSHdkONvvg6mo3ergAymCokeU9MurrNJbfn7x0Jp\nNbnFoEBDqP9aqsLNoLk22G4bQrGLXGnKQQSX8cMe9AtF/9Xjbzt8qsb0ApNw\n+QFW\r\n=yfFA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvD8jnwaVYQI3BeJKHc8qkCjPWYX4N/TQg+O41e8r0mAiEAzcT8LLReIHa9YqUnrmP+qOA/c+zhGP1ER8rihwLoD/k="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.14.0-dev.20180905_1536108762354_0.8116947247842266"},"_hasShrinkwrap":false},"0.14.0":{"name":"@fimbul/mimir","version":"0.14.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.13.0","chalk":"^2.3.2","debug":"^3.1.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"_id":"@fimbul/mimir@0.14.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-LBzXp4vKdA90nXXlQ6DT7fp55Mt9oQvoHt56R/YhWUFPyh1aLDjtGAzXkqrRb/rn1RIpZip7X7SpFrZ9PKCsQg==","shasum":"6866595963734a5b5f56718dfec47509810cfe28","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.14.0.tgz","fileCount":186,"unpackedSize":410978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkQXWCRA9TVsSAnZWagAA7VwP/2x4Pd0cjeOULxghTJTu\nIbGPLtqO44YGKCe5nTab4kTOTzSgmykg8SBsJZ2tf6KS0fzVjJKzWmHbEYy5\nZUuXhMfnLRi6UM/dacXQYT5bpBzLFsMmy5qblO2rfJunMYZSarrrBE8pla6k\nFyR44OkZEOvivB7tN50RpWKFlCF+pGco2ncfibdzyFzLnqehZvgxNLnb7HjW\nxvwDH5fPhByyBxwu25RLdG13yjxP2xw33zWcQhMpNAgJ7a6BmN7tbZSk8HiC\nRfJnsvEZIf6OxiWSh9xHJn3Y6TG9NGpZrHXk4KAXFgQlcHiauJtmjWJI/cOH\nDvg2ED8ChatkdmE3XNDUbxyiots2pzA2zlQdyqPFfqoMAnBfRl/WI2Z6Z6cl\n2lK4+o885GqSVefPivG7lknyn9iKqiKPFH1wWQJC4JhoA4yIw/WOU9svtYMC\ncTySGxlkRvd6Tu1C5cZ9A0fX+PuKrI41dVNR5FPStWzSMYOwC+QrLl2eNP1P\nCtga/WafpqyjK6/BMMEUGD1ThKHq1mG4uGG0MNph37IzuU2PucM511uaSIus\nHlIPZv3l0VW0lGvMpk+Hf+WPj16wetBVeSfH3fSkFrXVLArzEV94p2WgI7JF\nLsFsksXOIpOx9+dfjqkEmM4G9aB/g94p4yDUBV1usNOS+ldKFpi9YDZocWu1\nAr3c\r\n=d5aa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRpXMq7tQLRtzjI95amOFEdmQY2h3FjfJzN4ahyId5EAiEAugOQfQQs8+2IbHROiBDtzBt1BCNfk0sDUD//4tJXXdM="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.14.0_1536230869557_0.9203538850676538"},"_hasShrinkwrap":false},"0.15.0-dev.20180913":{"name":"@fimbul/mimir","version":"0.15.0-dev.20180913","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.15.0-dev.20180913","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.0.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.15.0-dev.20180913","_npmVersion":"6.4.1","_nodeVersion":"10.10.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-KaGl0hbuRNOg7ri+jMIc04nmpAZbGAb2KCa+vI2hhpAjQUVQezEFHBlPCq/CievNeIYSU1dW/YMTSLn325dJ0w==","shasum":"97255d6f09039a1dda6a681b15673f4142137805","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.15.0-dev.20180913.tgz","fileCount":186,"unpackedSize":411003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmbXtCRA9TVsSAnZWagAAuhcP/iF3gQbOOLLeXCa8osB6\nZTj1ny6t1GOfcVxEzXy8wMXj16rEJZ82rq4cks9BI8aO6VJVdWayGvZ+J4xM\nws3qCdiB9yowe95GXYgRpTpZIJvT8ofQlrzJ1bLjqEZBGsDpvXtKmuxXlxqQ\neupeazyVKzYlG39w+nW1Wvus6fo9KvjCkG2brxEpy+mR4ow7EDaw/ejk4ZoJ\nHESQzPz4Y+gG7YPxy5+YB4O5AFIUYm4kRkfd7+2IrR8cwQ6aqxKabC/+NiYD\nHtjE3iJvmCUzHt94HcwjptbK4vZ/uU56sI7TiDn+McSwvbbiIgtgPDOm+g7s\n9tYxsN/y+pfpSWnXvBe4nQZqtL44+mTSmWUXPNAsDHhLRL4o+6lxkZCJZe+9\nxMTm/36cFhcUzR2Z4DPQ36g7n1Bwp2eyTR16qAr0ZiZcuOTdP+vGcjppMan3\no/jAuFqwId/91Hd8hg27cMPR6t9hVX8tL1hAk0K0Fsp+Ti3wYg1KMWqbXX8T\n/6GoTfkxtdq9dTWArRsvvMDFspiJoc8nu4CnNNAQ11+C7mXAyneJvXWS4bUW\nd9H5Rd2iM5/20p8zFgDDZb5OGl4kWsl+oErNJWIwjlKVpSAtfKZExLIPIYh9\nC0zFWyMy484ABDff/SpDYicoomg8rG2wq2af3DTgCsg4n4O5LGc8vcYU8lnW\nzYCD\r\n=pUFc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWYpIk/Mm7Qtci63XwkP9B1rAaFfvNlhmj6ayMY2NwPAiEAtOPA8g63OIWpwUhGhIww7X8QUj1NAJhkjp6mRDyt4Fs="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.15.0-dev.20180913_1536800236463_0.011167060754057934"},"_hasShrinkwrap":false},"0.15.0-dev.20181018":{"name":"@fimbul/mimir","version":"0.15.0-dev.20181018","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.15.0-dev.20181018","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.15.0-dev.20181018","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-yKBaLFWHrLzK+o20CmXVpiwsvSmyANNf3DEzsNjR1tKZ/y84pVmgbKFqClUeL+MVhWxZh2AVEGNZcOYRDQBHkw==","shasum":"151caed86565ff87b44cccd212a7101e7038690b","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.15.0-dev.20181018.tgz","fileCount":186,"unpackedSize":415947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbx98MCRA9TVsSAnZWagAAVwUP/3r8+EtUk1dVTGMV56bM\nJWIwm8MK/vup98/PjparbO5EtW8SG3o08L6C4fX47XKDBYkvYjDUfNDEvnaA\nJOmPRVGT7XB4dnHdJGtzFu2hxWw85sNLbk7wEwi2O3d9hhdYy3DuHDey6Agh\nA/mvB8LBponJHCqGCkMKUqW+1plV99utolLQ+pp6iXk+39maP/NI+2RSRT9i\n4svk8VePVh8t4hf5RF8x7svbuGYaddseF87BeXsT54ti7dn9Z5yBWLTTSN0m\njmDJ9jPiMpKQu4cZ0/+E/hR8sm+WLMMXMu+nygOjBKz3FoTg+H4AErs9+Ubo\nI4Z8EMkcsFeagXPl3gYxKbBB0mr5GNHZGILqUmZTvEYh4oKoxJny0F57eK5R\nMOcVwMnH46RjxrP5LTWcWKkyGkxhxrS5udkFww4zar0bC0QIZxbXUpojslf8\n4efvDsQ5wYNguuBLusb4GxNyEOPJEbBytJWPNhYTwb6LY8X4Qq2TsnXq0OJa\npYdaQs0hEr/lBZq2HN07sTojyCyy3b2WynLdxSJYVQTrsPHKwLPHwRAB9iMw\ntTejk30oxEXoDuezASM7vb1OeOqAORTVc3VbIgZjmOWvstUn0SnMlA8swtiX\n5LDZx7wArTZBidypjLIuywa1fkZuvG7UdUdiEzObKA2e5hyirBIyC23jMzAN\n6yYT\r\n=BqEB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGENexvyp3lJPAe/725+V0e9zdoZt0zJITtzw2FjZyhgAiEA28jiJ9efQe/uz+hv1TuyvWaFtlZEB90T51QMUGnp5zs="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.15.0-dev.20181018_1539825419744_0.16873200663285903"},"_hasShrinkwrap":false},"0.15.0-dev.20181020":{"name":"@fimbul/mimir","version":"0.15.0-dev.20181020","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.15.0-dev.20181020","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.0.0-dev || >= 3.0.0-insiders || 3.0.0-rc || >= 3.1.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n`prefer-for-of` | Prefer `for-of` loops over regular `for` loops where possible. *requires type information* | Avoids the false positives of TSLint's `prefer-for-of` rule.\n`prefer-namespace-keyword` | Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n`prefer-number-methods` | Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite` mainly for performance. *requires type information* | No similar rule in TSLint.\n`prefer-object-spread` | Prefer object spread over `Object.assign` for copying properties to a new object. *requires type information* | Performance, and better handling of parens in fixer and avoids false positives that would cause a compile error when fixed.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.15.0-dev.20181020","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-fNZtXgFjr7xpWekH6zzcpH8l5tCXDheATr7zLtTQ2byVb6QxJS5YJ2hiFsZ66uMc+QQP9ERTCyLoaoERCPHzKw==","shasum":"8bfe3c6144fba0bb48cc51a5ada7c4eaafc0e1cb","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.15.0-dev.20181020.tgz","fileCount":186,"unpackedSize":415285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyoJXCRA9TVsSAnZWagAAN6AQAIWwpDeLMigW+ojth+EX\ngp+y/fnKx9FC7S8X03nITA8BwSb6TPRx20aEx2czL49USSJJiPdYn5lR1Jyl\nTFQo2LFM3yfrtg4XQ0ODZu9rE5qQNfGea0Q6mIaQAH4yf44kG46jO/0am16u\ngnKH3cqFJ8TyNt1IBZIKODlFHmtMLVq1xW3ezhPv3H0MPCmTRWS2Pqrd0Qwp\n5V1PFHtO7l8fe4y1gG+xJtqh0seRwK/j7nD+b03t7sQS/tFbG/3i8BlKJ3SI\nf7lIdw1j3jIe3YN+WXj6bRpTlhqYyPEFcP9mA4KmkuFFlAXTiFU+ZM4F2lNY\nrJKPLqMp+NKoqlz3A1eZA+qOShxsjBVVenXSdGpKpntAaOZNzmMIO6z+0bS7\nOJV+3Y1zTDka+0Hn0YDtagwXSHypMjm96VigiBhlwtw8PUy4+InGTNRQ8tHm\n83ctRLJ0RpP3d/FlOP5k2xNeUcOHru0SyVhGMkx0CORT6s/sjY1B+mk7l6jU\nBYl0zSl7G1mXryiWCyVHjaePmXLKG416UALRJWpkR82xkn2eyS46N9IZMxaB\nCC8cqhNj+wJ/5G5pDYggM3RjHCnXnOc+u5t4I2z5iPhOJ4BrYZMlnCY4hClL\nDFVVizl7yjS2Pt6Bn9ZGLcXo333/2we3I5+CZhEoVRx7wPEkY1gQOxWtaasa\n8f8f\r\n=fZ9I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpp+xMpFrsvkl0zrSNBEaG81y3n8kwxHOYCm575KcsAQIhALSNLScAb+CdrkXc00tvc8XS44+5zAHcoXf/LPUxNc+n"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.15.0-dev.20181020_1539998294404_0.9738922215522958"},"_hasShrinkwrap":false},"0.15.0":{"name":"@fimbul/mimir","version":"0.15.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.15.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"_id":"@fimbul/mimir@0.15.0","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-OkhjfeghoM5RQ25qT3DxNcs/PowymmT/nNlvKPmt/+QN+YQSb0/TnxjoCuwMhwlMe9acGwut4tg0SyJXXgcRiw==","shasum":"eb9af129fc5a89784b1a97c6df9d84ae3587e1dc","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.15.0.tgz","fileCount":186,"unpackedSize":415929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzNk/CRA9TVsSAnZWagAAe/wQAIsOAOVpiThKeFJlUyo0\ntUlSYR5rZwRhRufDAEZViPQaLMqNCLMqfn6pMSP40pgeQ9a9xLs8lXHj81U8\ntof243VTTIpwgUiOJ3tNVk3VFUxLhwSr6SEBtqxUL5cZnhl+yPWKzAcZdcNn\nMD9cPmsfV+L+6fv7HjD/tDAbIhkXgkPPenW1k+ZTykhFvtI+BsDZldQGGXQG\nlP4NjK96w7y7+NQAQ+86oG/sd/ojI8zKQh7yk0Eksc3L6y1pzNOrzU8uoSYO\nZ0mRWiH+f0eIz5vqVu1GUYTqiEjQILfR9zNF3LtM1JZ31kypM+xYnojc7ekj\ni756YKlg4yQyoqAlYgWo14Al/S6A3eSS56uwOdkCEm/xso+6hhxCR2L996E7\nUdkfq+pxzjkJ41AHWVd26xaCJMw8GJHEnnGBG1/U4Fpr+we9dpKzeKaJYY6A\nT2J8tiysfqWZr7Phuyn0JyNbJPWU1cgv9bqQJcSpcpyFrKdyzL1QD62Od+yi\nEiDPU92hesmlSH1zkHhBa4c33WausJZHMTbmsp6Y7KLBDK52JPzzpoCgHav2\n2DqKGWZKC88SwSsqV1SwV/wjpSyTPT+ChFNqwpIDotP/BK04dyGQoWkXgN0F\nwB17QY7lI1ICUUyaEY+wYW0+0sfnDP43/kDwsPPJ08OZFNFUY5Z7qwPolF/4\nQA+f\r\n=cO3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/O0nhB1ukWAJgsJo9xvALxcF1lT42eyrNRZyfBFg1nAiEAg8qZDogD6xOaEghhC67V2mxHKvXkIFlwD3jVFNfoOmA="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.15.0_1540151614965_0.6011651332972971"},"_hasShrinkwrap":false},"0.16.0-dev.20181026":{"name":"@fimbul/mimir","version":"0.16.0-dev.20181026","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0-dev.20181026","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.16.0-dev.20181026","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-3qUmGT+7IjqjZPrK0StcXx7u/YOnsRnJDVc7M/UWju4gIWAzbNrREsgH+2tJryiEy54rzGUk/4yF/+LK7hUJbA==","shasum":"249402de87a161aaa1d73883ee5d93d1cb89bcfe","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0-dev.20181026.tgz","fileCount":190,"unpackedSize":421781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0muzCRA9TVsSAnZWagAAtpMP/jMksr7q8ZFuLeqqJSjX\nnWH62JISJZ7L1kUvAA+OcU6bapF6hYrvpk7uQhQi3WPohx1my6K1RtWdccGB\ns2SO/CLKzycjg3sF5ZA1TqvSAi4Zu1XAfxAxNI6YF4ijs1NS2wyY09Gujli+\nrmUggHkBW0h/bRy3WIw14yJQod6z8uXOO5hYruaxqHt+9PJr1CrAYr6WVQnU\nRVjFmo8SWyXzWPzHa5AIyeaqsk5Q1/0+zWbr/Nm6c/ZdrMSSHR/YW9Bk6SoJ\n4X35j5qckw9ge29g3K5P5IYUQK7wLY4r5DFcXI9GvmYz0bvKw+HmgYhQ+m2d\nxZD1qoDUbUsY0yNX2tNS4r32kFRzKRQUGG5HrHdh4HBOSuqohKA9yGeCQ0xt\nr5coc2obSZCq7K+/CzF6xcP5+ZFwgjyLts6tcZR36G0A/3c4qFfWd1j/4LZD\nQeHAT6CyFqV4lzG8U9uj2I+zxqreb8emw2aLX1sT9Gy8WIPng7wJeEWuy4UD\nDNuDrvLCa3tA3tMOekwZ5+5grHd1acbugRdi1oBNbNKQdUJoYOSGHOwTGdeo\nRASF6c7uYfzCqm4QkyHmILgFob8r8CP3vqZuVbhn/7YegFtN3BwrcAmjftTG\nzR/AZhp4CPLHeXyf90MkBjpw/8A8Fxqlvvw/0RODsTFcHroKPyw4pxT/Zg6D\nF+ZY\r\n=TGg6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPBkJ9ByfHxFz+pdEER4h22YyV4se0r3lhzk3b8+CPuAiAzStihN/kAxkdNtH3hQ1w5kWN04gybeXoXYGYSAOgi/g=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0-dev.20181026_1540516786976_0.14123194464644362"},"_hasShrinkwrap":false},"0.16.0-dev.20181031":{"name":"@fimbul/mimir","version":"0.16.0-dev.20181031","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0-dev.20181026","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.16.0-dev.20181031","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-4x3ZH70j7nkL+A31nMQvk+8CGRcf36LZ05/v8WIw7D+IocSIzvHOwohdh/BK+RNA4t4YN5hM4bx0D6loLN/sgQ==","shasum":"508ed8843c2ae7ec032fc1dd9a99fa394d91e856","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0-dev.20181031.tgz","fileCount":190,"unpackedSize":422488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2QQxCRA9TVsSAnZWagAAkPwP/RiatGGHUZJEyyK9e3DE\nUj3xXa6aPw+kQuV1pFiRS/y6LmFzqtrw2ayeTpVT5uuQL51/r36kPGb22y2c\njWli/LtiqvmHHEOCGmx9x7Z9Me3wJ4say/QX2pBjKXCAb77pFIF6zWOpgxBy\nr3frlct+Li8ZxRJ218irdmo7bxH1iwdTzcnC9WGBYZwB1KY2yVUmarFS19ME\nN1rcYgFPdLKCdwfTcmObiAdW3NVHmE1YnCStUuWnI1GUIWsba1Fw8OW0WY5g\nRbqSvUWiB8HXrZKSnIAfDcHrK497+zotzjD3dOneinFVQ3YjelHKfW375jtT\nEKFn0bpZZyYMG4T8zzjdRH5nL4kdc5fdYuyg5ROOQ4Mz0CysL0CMtF/77yvL\nV59EFgFFcIj63Vd2Z+J05KROEigCPUBVXrm2ZtpQmAACbjO0ar+Q8iBUC00s\nxMA2XrpQiVs9WgxVhqQ3wrTiHJk1dxkgXPmJTCVopOUgCTUk4H2+k5Q/z6z5\nXSsXhOc3uK08q5iwu+dGeHUGxfosJnCuY2SsNYxJvKgFHsAezGghpJDcerO5\nmnx4csUTLDB35MlqpiefL9Eb8qH2VEDWKL6sw2okInObdoq/SeRgnwkeLM98\n/BdY3GPBD1gKGilkZkOGxVho7WALtEXTcKP1neSTqUsHIPKs8xnxoTF2GFgV\nIzVU\r\n=FaIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGAEKFMvm5sv9Ao7elEFD/XerVrh9ol0rphsn7wYIiLAiBaqx6g0QkzEK0MgS4kcaOvADj2G7I4NgKUXDA/2gPEDQ=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0-dev.20181031_1540949040584_0.9706057270335045"},"_hasShrinkwrap":false},"0.16.0-dev.20181104":{"name":"@fimbul/mimir","version":"0.16.0-dev.20181104","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0-dev.20181026","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`no-useless-predicate` | Detects redundant conditions that are either always true or always false. *requires type information* | Combination of TSLint's `strict-type-predicates`, `typeof-compare` and parts of `strict-boolean-expressions`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n]`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.16.0-dev.20181104","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-lKUcwfz3GnoKe/G/dF+p9ogDT4qOMoAzho0DG0FsP36+Rnw1RwJFILcvXVdjnTT02KG7YjpsQpLqMX43A32jZw==","shasum":"c8a0d152182c8bd285deb064e68e08785f197334","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0-dev.20181104.tgz","fileCount":190,"unpackedSize":422858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3kplCRA9TVsSAnZWagAA+ogP/j6omcgl6D4gvgfHsszr\nOwPjVbtUar+DDyXMJusuTYzLQRO9g0D05yJ5RRkT9bIhP0SlyQwnQjrZisFC\nBVrKGIQN/M+cp6oP/4h89KsvlWr19PlbbZ15G27KyuZPQB+/GAjGYjUb1ZSD\ndSYmP0/WW3aaglQv3J/ux1BRjx1QmHstseMTniay73AR/0byORgo5NxqVeha\nmeA7GDxUVFBPhUHewYNOG7MaU0gOyN32DSGJ05gNzbDFLuyqeB0VINUvVYD3\nJCk+0ZjQDXJNJ5JqlPFUqPoOicsX5BWv3LodIeqK+E0RIlHx8SULSEDHajfS\npgpfcnR3cAo3KdPoxsAD5TsZ2pzY2SEpYkHG148gTKSOFWGLDzOLXnbKg9qq\nHl3hlwUD/HiCvymz6MhHiMNrit0cDqYWXnTzvYOUDfwFGB6ukGRFt2vjZi3/\nP2TJJjqRi8RYtGirTOsy0f3SWdFOi8SuGF33x92t5gl15ksujQfUBDdZlxSN\npsqlgN9oP4p7zKjo4UfpJdIrzQEtc4JD9Z8is16TcpEQde2++mTxvnQ3Lcki\nAMCW33QYNxoM42RSl6QYp26CIDyuSElLDKAHbpA3ZzxqhNHggescFntn23qY\nGbKx3/h0rIfl19JQg1bkk3HuT33iZz/SEGEqdUwzuUkb9u0ShxqRADIXPs3R\n8rZR\r\n=nTIz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsgkcTlDXRdnWNBF79qhSS+YxwcQZnwgUJDRWd6iwqlAIgCspC8Hx5WwKngi5enPVgaS0HAPRHy2K+7Bf5t/VrP4Q="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0-dev.20181104_1541294692789_0.5333314329665857"},"_hasShrinkwrap":false},"0.16.0-dev.20181107":{"name":"@fimbul/mimir","version":"0.16.0-dev.20181107","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0-dev.20181107","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.1.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.16.0-dev.20181107","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-l78fld1RFLv0opEknQJZnyh92LdSIL3wf4UguCo7OW3UFhF8ar6ota2q53FaMQ3J46cT2QJJCnKtnM+dS0l8vw==","shasum":"d645026a4792208530058a8ad1201c9f9ce4f8a1","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0-dev.20181107.tgz","fileCount":190,"unpackedSize":422836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4j9gCRA9TVsSAnZWagAAjWMP/221Lk2STVzEySac/E5W\nIfdTXDxz4CkEq3c1bKs+miQ5QbsJ1lmAa/hCCU1o63xsUbEHBsC+qRpHqDzv\nvwtAabPWhCTXnkqj5kDbYE1NCKTCArlQJaDjfvjPKHp/7UEAF2eUEGar12Ki\noBw/7FtqLHhMqEEVx1g2KmD/4Db1O+azs0WVdlroFVCoFF05IlGRTkg2Eada\nQJy0Mz8RfPDNKsUoODf/Te0PaBDxkSI6LtdFtfZO3LiXVefgRJwXYRQbI/jL\nDPkNPnhrWcym4CsgcawgQBqQ7+YjSzlSiLN8LD85GZKkOoGUwG8YXALNUv4g\n2RpTTRm9VayQ249nHNlQ4p5tkwfH7sDHKn+B4DE6JXaWU0Wcd+2WmK8xG4Q7\n/yARlhVbElN3ICVJQ2D5668YU+7WkGVBpQsbDra0i8PHMn5owAEk9B5WbEO8\nEwj59RXbf7nURbEG9mIl2hl/v+nJ35vTBRwMMWxLyvY2/Ut58NKAzQeN8HBG\nF41qWT/X4ANfBeBGwbvEzq/W4rgSEXfNssZBDRrcHSesIwBpcL324RKL6djs\nJZGS+/LFnOCr3eKzp4sf/CyEJrIBQT8OyzGPzrkMmH/KvQevgLPoOFH3Cz9h\nW1AvoJDPPSfgy5VhoNKhEEyxLpbC5E0DNCE6DSFqf5tP67BN6HM4do2mS0YT\nB/ka\r\n=PbOh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtnRPI5crgnkihE3ZZjz+iafwJDVpeowHGgCrqkQ8x5wIhAO3jcCFPb6cToBLkQ3hNi04Tut9odWko1yvecnQHrD0p"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0-dev.20181107_1541554015545_0.6916169731982451"},"_hasShrinkwrap":false},"0.16.0-dev.20181115":{"name":"@fimbul/mimir","version":"0.16.0-dev.20181115","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0-dev.20181115","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.0"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.16.0-dev.20181115","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-clBMOewV4LQg+4m4xB/BDllF8WF8SQMs+dS6mQX3TWKoPk7vHpLNWGv7g0af/zA70fVDujOL5FmmuPS6UgYTiA==","shasum":"ef5e9bb285a52cbee95875494fd220ef18d8806d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0-dev.20181115.tgz","fileCount":190,"unpackedSize":428760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7MxfCRA9TVsSAnZWagAAdQkP/jdMuVHy+VrQt1Yhrn5w\nnBufRgMMS550I00CMudeHNkxcifFo95w5PXQPll96G/O2yZlPHknegKWH6os\nHxHAs71vVOaf8srttsNt7zLE4VTdWKLbTSj+4nwRMMeUoX2NNBGZw9gYVzcl\nxQzDelu/78x2Awpzi566f15hGoPTrTPFmP35Tewfouzmohvtrere7S9jeEaf\nyMZ+diSMiL/zkAT6Y6rbPVYMx/KtjllMUEKApxSsTvyq6LYm3LYfNIN9Mwbe\nfk2L8yTdm+s0gYzFZLj/0Jezu83vyQgRek72XpvqUpqUip8+hbRO03WQmVlG\ngOi1EG7ctlaye9zQ5CLH5yWWOta9AO4v+oQTVm47jFv0CEVSPKGiQgN4hz53\nLTQ66dbDQAAwSbd2ngNwizJ9/SY8nZyAqnwKCei0tbP8D9xebxZ9QRa4LNGZ\nQ9F9SB+Txl/Wesk8F/b7Q5LLthePEV1NAfKhNv/6CUnGfskgPSvpvLM/JSby\njG4xgywX7uvaVbe7RABx41dSvbKdIJGKJDiZXEjxy2CRXeb7WGIqdskK3TBk\n+dqFhTXCXEKqMH/sj97tyi3psTFHLQAFjge6NAMJwRjko1StjGEesswTA11T\nR+yAXDKWqUkirpTHh7u1WxDMNgL35gTFr9lABEM+qryM5RxrnixKkFBegSCT\nJPFb\r\n=1MWe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHBBQ6SJtcYVfVG2JAO9uy/ZjpoOsFJFf+BB0Zitt2tgAiEArF/rRjh5CEh3Sk05MDT69yMPD/DvHSNnTuMv9guMFEQ="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0-dev.20181115_1542245470879_0.049837214914609795"},"_hasShrinkwrap":false},"0.16.0":{"name":"@fimbul/mimir","version":"0.16.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.16.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"_id":"@fimbul/mimir@0.16.0","_npmVersion":"6.4.1","_nodeVersion":"11.2.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-4X5cu+eGlhLMnY+qTwf4Pd5k4uaWwb7gdoeJ32H03cpeuvQOpWoYG8vmX3TjIq63bJtA5BtNRMFVqWiwoRyL7Q==","shasum":"49d6f1c22ae64518c275939e4a21d8c551803adb","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.16.0.tgz","fileCount":194,"unpackedSize":440531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+H/0CRA9TVsSAnZWagAAh5oP/1xchfeIGkDVqYOpxsWe\nZNUcrj2Yfh9X9qs0V2AfGdQzy7ZQMRrPTkiD1KQQy8Wf1aKyAH7ICNbyzU/S\n8r7NERlQI4Eoj67bLLJKySmloIIRDD4SLrn4VhtDmzBZNM6vVLYpzV/yl6CD\nbNUWyJnT7RpttLBwFV8zv2ISHb5Rl6mwnnPfnsjMah/YD/UJB2RmYS2LAk+O\nbNU6wvr6PMgAW7z1IX2fbmX9fGjWII5UfMiizy+pnUTvu+UIp1sx236ljEI+\nNOWE99KqkxMmGup4gdDpyBrZMibYfvWQGkFaLE+7EcMPFIiRofduiyfBkkPN\n2qr/+9pgwoB5pMozfCEZSwmFOzMoThEHOdr/NOjgxntEqTTuWy4lC8HsAnBo\nvA9dwDjtqf1irrQ581a9LAYcxbo3NR1Ro8DndeM1YpI29uuwbTXqbhqYJT2z\ns4KQwC7Nylnl2mIN6m23EcdprlSC/ZKHcWQep2vMTPb9qvxTCtLmpPzyeD6v\n19WqiwdEnQ5WwiG70+9EpZ7DYKahcddHC9pH78J8X24ER2O2gMM5EHvLJ2Wo\ntsVBN80tHuk8KUQ39y3yXJTOSNd42MjBDZoTxh9ydt8R08geNHtHb6JAvrpN\nINrYTt/aIWCweMIFJhOH6cx/9+wy8lVQfDdddFz/vKnVQ3TmNHCTEANgv+AG\n8xDK\r\n=aK/3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz5g8jKQGVHl50MS2UawWMXen+mleVfg0Tbw5xsEFLSAiEA3F9Y3XXgSttnaVm+hJo4z1rqw6ke12lj1qwlo60XWSk="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.16.0_1543012339771_0.16128709516961148"},"_hasShrinkwrap":false},"0.17.0-dev.20181130":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181130","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181130","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-nk4nPXaM51JJv6LFVeaZqlb45epEGeQjQilcyV3wxmQeo6tRDVR9OonlP1bgIxJ9qHc6In17yxKs6BikZ6fYgw==","shasum":"04956c517da32295e644f64f2e181d852ced3924","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181130.tgz","fileCount":194,"unpackedSize":441600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAJUpCRA9TVsSAnZWagAAX/kQAJ+sACBnX216lMmGUsH/\nvjNr/pBJMIfJsaBueX6bqqKTQfrwxCKlI1y6RWJaQ6q9EUqPcaQ1tAxG6AeO\ng4bbzvE5kx9MJAiVXTlxpZF/boguKamNUpxAgpnXwHU8n0AaQeIQIX5Ym2IQ\n594ViEqXI9d9NTNx/Fnj7Fvpe/G8kceriaNrZgwOmHIY1DYkphsL5zHpUPOY\nuYyp5lmxaLPbSvtn6S2+Nyvz0/ymTJAUWSjcIpuvnczmKA23hAI7VGSkCKmp\nuS9fk26pvte+EL+/MdQYnY+at3eRfu/DRAL//jJdJvueq3Iwj3jinFE5s9FW\nsx1FdGfzpf2lCDxxncSzanSCLtzOuzq5SerrzLYWW4uoHWefzhCF8nmAc1Gq\n5GW/9r8yCfgCD7QfU5rHkC+Ncf3oS7p16Pd6gJrar6H3Tp1SNPyz8TMu76Ul\n/U9IvbQlktsJzbWx614d/Ccyd79TvAuChdPEzXp2WGIFTqwWtU2/5D7guXOf\ngOuqe8pBCoCIdDpia2W8ZBZGj0V+5aHoG2iaFWKHf2aDCCTRTwQJwI2PgROQ\nBO4W24vMhNkPWg5N3GFBU/TlYEVzJZ+fTUHLwqWUTKpe2gYf4Bsprxy+9Eey\nlKgC3xdn/mI5eEmJdhetfyg1EWsKWQ+b8Q9QBbxfiDK7x2OOlBKuayoBzH2x\neBep\r\n=q7T7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCI8ujC0XMpMFIWkiEaQrU7E2uyxlYycfK0y/k6wYJc4wIgYPwd2ay63yDGCVsLN2QMyzE+3X6x+4T8xgNv29CwhM4="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181130_1543542057149_0.6465942618490763"},"_hasShrinkwrap":false},"0.17.0-dev.20181201":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181201","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.16.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181201","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-fOZvgW++JpthIVQIg3R1NY30bVEhJol+hnFCKi8FHstm26c9Q/gBRJKuGTDyUi83plhLWrRjDIFaFHSZvB1+Lw==","shasum":"cce0ff83972d94e76522e5daa24c5d19127aa32e","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181201.tgz","fileCount":194,"unpackedSize":440956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAebSCRA9TVsSAnZWagAAaYIP/08dZJu1q7PGkFnNrx2m\n5Z2YDAijcdXqi9RHIPL4c+hhRuF5ws8s1XJwlD/sUBb2PzvY61BMqqybAEVh\n5Pi02cVA7yo/RGVMCtLYpm042XzXSzlSJLYnT9OX5RHhJwg4Yio5K3sIU2Lq\ncs13kbW90XRlK6LTASStr2Lo+0c+JQfOWjRf+iztZEvyP+xr8iCsyNqxe3WH\nD93lyur4MtwVccAL4EFNHvgU9nKGx1pe6KNgOlYkZm88DAjTaqXFH4lTBxwq\nkwZzdaYOXsmOz5+vgpJTM/+1u7zXpcr5zSFoHvLBNOLlJ346h8y2V2x5jqaJ\nxeNO6aojrFdXR8PfNLLv+mGzT1AfGuEsMP1jlzWoe6cOOroe2CQygmlQKzZr\nRNzTh2n9KUoRs5KWFR4+13GrDYWoklRH3D/jPYbSm3eUSmw9x4NIuoCbojhU\nGHRbSSxthUO3OHt9WW0v2LJHgAYIbXwuRcZxzSE8+5fDIF+6wfjvPYPF63FT\nC/yfDY2eOw+yJSVY52jEuB14sKsYkOt7Wjt2sJPRSWJwkBHQ60Q4qDDTqXaS\ng5mFx3YtPUh33/m3I8vf+3+tjcoy8A6KrzyEfLRPm3DlpNIbq6Fl1wr8Ao25\nLaS09M1YAa44U5+I5mBZI6T0MQSXyYBECr7ENrZKAnAp6CZASLgGBaTwn3M7\n4bss\r\n=7sCO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWMM5NTkMYTt4XfRZOGYTxKWwIs7eCTF4c1u8/mXIu3AiEAguwbaXHSB2rbNUKD5vRzW8hCkhu8h+1d1OpCwGuJdys="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181201_1543628497113_0.18103002595593432"},"_hasShrinkwrap":false},"0.17.0-dev.20181205":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181205","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181205","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181205","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-bWMmfum0P1cq6DO3lcd2QmZXRTB3R7374kSsZU31Cj5CIxfIzaUeqQkpmBRgN7Fgi4aaPnhBAVGQMLX5UVx6Ng==","shasum":"24d1282f566ae54a05c15fbc55939ced7635ff2c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181205.tgz","fileCount":150,"unpackedSize":374410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBy2PCRA9TVsSAnZWagAAJqUP/REiSggwVL3kvkivh/Ff\n7+MXokfbu1h9asFhInYHWFj6FnFLEu/leT3tGK17EkTawztRIPSpAOwwnLJh\np9DCtn1Qv6Vlr1z87vAO/xyeLua1r6LOqKd4qmcGF1QZHwPI1cdk+daVDuuU\n6tJr3eJ6VnXau3WdB6AE1rQpwPGIk+WcRIjsDyJa6xxy9o5n2o1YLsXQZE1g\nrn7ZZQc8GCG+vVCKfzItBmYdDQ0w9hkZzUWTTqFDv4e5heFkbU4PyvvP3Im4\ntZnlG1XKNrxLX0lHg45XZHz2elgpFhehM8dAMTM3+phbC7mrBVJ3BvuxplAk\ng4yYG6qwF/f8p7i4r6K3AtEZOu5AEqd7ovNCzKCbZMH+oWx3vA03+MGp6Lk4\nt6jmki6FXW6QP69MYBt2zaABan7hcLTEAO0c4g09Q+tV8VuURAuKWK9w8IZG\n1RGMQERki0SIpGb/tqkFinJo5ExmhJT58LR6UevPTgkGCXzerGbtJNUFpDwi\nTptd2qjJofUUUg1cWjkGC5NTEtbb3Q8ofDaeBLsVcdBt2LoWlav0eQNNLtE2\nJwm6NV0L9S7/1ug0jYidMnNJjhQi13ZfK/KF/Q48bORC+lBqJYgaoUJf5if4\nffl+MfpCwFfrQRJlHAS1j5myEJarSfo1YCCr3Seck8ayQiFqUedpa8XLcIfu\nHMzn\r\n=RuK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFLaHCx4L7PwC6vMizRMNiczXbJZ8plkbsBy5McYSEXQIgeorwAvcX8IdnAGXF9h98XvW6D3dYxMpB9ZsXXPVNHJo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181205_1543974286996_0.6163104307854479"},"_hasShrinkwrap":false},"0.17.0-dev.20181215":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181215","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181215","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181215","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-rterrHrtw/oaEV+ZoodNnzAgMiIdbnKdIJMn7+g8HgQbwaalrA4XRjMwy5Xyh52nhOasGmRaLheTp7cF9aQqXw==","shasum":"82312f200468cdd5940f532ed517e642d1c60708","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181215.tgz","fileCount":150,"unpackedSize":374410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFF3VCRA9TVsSAnZWagAAcDkQAJpIIN4m9qRtM04x/FNk\nVztwoRb2X1Vjvw+gu9eV+FuEvp8lxQZsh8sEQXQ7CR/xyCqMqAooZUBDwI6h\nWiIGzkMry9kA4UJDvpFoAtwB2wNfR7Vl/Wy6jGh7RAvSUfVT4iZhbKfzDSJR\n52+ICeKp1e6N9JSc414lA3g7qKTXYSR/PGWGxUCCTQo6SaKDMTT7EowMTdtZ\nz2NDhN7RsbQDvb6zK5ssS0b7LGFW0qhgMJBec4RdJYyMPcrw1bcZ3W339apQ\n4cNUKs+i84DjOtaA+Kbk121sunpV2LWea+dYTnI9pMYsGrG1C1J8roX9ZPcT\nwOVE4kgWUcBXV7m89VosTdp71Bql+Q3brIKmFFS+GtSES9EY/w6UYI58ABH8\nCfr1hme8FKtMhgx/6UvakB4DR73K7wGuqsDHx2emBADTEWq56B8IINrLs2yV\n93ZL+fAu0mhd8hT4yGMk1IpCFescDN7P3CosFRn7Nf5os8b2tx7bfAJih+M2\nfx8zT+spdo+dOZ/M2bzgcFX0kND7F2DvyG060vy3ATGicD3NHrxcjghyDs2T\njuaG0S6uMItOf2u/hdsIfM0DeMBZ/QVkeort/cuDjOxm0HoUlNFPEvTNVaIN\n7feiDjZS0i4X33C8RJLKryHr8EfrwW8WR3T6G5Nyt/NsdhKYbz7I1WJ3sJYI\n0nit\r\n=KKxR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARdbTDj5lq4xoBrS4vvIAvG4XUPMCxmYjnCyTVYBVQuAiAesEnwIBy8I2LZdHWGPgDTdGoUDsNRyplj5qbutPluuA=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181215_1544838612621_0.3966036378172504"},"_hasShrinkwrap":false},"0.17.0-dev.20181217":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181217","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181217","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181217","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-uJ4sDOyH9DfupTpBx4vVbTyoTRRad5yNDgZFGe2VkPvD+orphe3Scqhw6tOli6NCkJqDs6aG6rirUjNv6+qsww==","shasum":"c99ad1f36955e852a077d115e97a6ecbfe05b24a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181217.tgz","fileCount":150,"unpackedSize":374410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcFwEjCRA9TVsSAnZWagAA+xcP/0f/Fbj7ZV65+N/fyvpK\n6JcBVXwMWA3gs5PE42novJ7YzP5xNpWTPqtfqOH4Y/U4Vk3gS3z1GVZCYHgU\nhpqIXj1BMcyOZsqWuVp8zJ3db6tcG2wqzpxCjyU+to1eDwpbkNDdMCFop0vk\nFCIp0YXCRdTGVtBiAo/iadf5iq5eV930op4uKM3WDCiqQFnMy1sr87W3z/oo\n/D+hHPbAFrSEvPkE54j7neFwR7Aeufh8nRXfXUN4dhKlf6l35CiM3zfasTLk\nWl9RBLd25wNJh2jst0T3BQESoTleWPmMiPqvV/4BAVRLuLhPAJkrTQP6E4Fq\nUTCjENgDpBLM5JDhuyyqgREBb8hXEBrTIxGv3UrslrcB3o6i1MMxrfKyqPWZ\nh+jeuGix1NCt7I9J0yTufd+9j22WMFlsnE8x3fv05bb1wRMi/7luM6RXUk6Z\nJPa8CQ9IJEoLD2X9eD2So63j07IsKxSAdqIMIeSAtzKi84uZtQGHxSs6be/8\nC5eMqSSHhP+QoXmMFSvdcy3+foYEpNhHkHNGdjnG8yByzTc9M4nB1/cFHl4O\ncXzmPTgJ2VWTglkBLtjdWQNmx4SoX13J6/1TqlHsrBK5aIaoISANdDB8HPQi\n3cK45lZgj4MalyJL6nn8uxVlqFCabDUijWDHHnDXaqdJctya0/ii9NK878G7\nVpFk\r\n=GYx0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuaZy3UMk6utEVqDhZfwP7k/Ys2EIFjiDxcw+L7ZSLkQIhAOPBSp6S3RAffDj7zUJv0Q/c+y9vqs5+7H0/rbrZPHBI"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181217_1545011490519_0.26412064453275996"},"_hasShrinkwrap":false},"0.17.0-dev.20181218":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181218","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181218","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181218","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-UiSwPKCGe3fKbyNlPFqk3jbnK8yYJE0WNnZguK7YDc0cQhuGi7G65twYcjCRaODkkklK22cCbv/c5lwETZdcYQ==","shasum":"394edde8acae47e627f005c0c4372863c6b755ec","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181218.tgz","fileCount":150,"unpackedSize":374410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGFLZCRA9TVsSAnZWagAAbOAP/AuZIBOPpX233kSM5iLN\noDUaIe49I2HyekQjEPKZyMK46kkmFkZo0+5/o2s8whN/K4FMDpKO6SkenlBd\nyDUfVG3Jjy2oQUfyFi35SfyqmUkaxVeRt55Ony1pyimDvLm5KaPpckyIYWQp\nJr0H+l+nye0eN+RNBbQQgjNoM9w15rEzofLj7EQ7+wD+L2F+88Ir8q1aLvOx\nVSFp+B4/2zGXrkpr3Dl7Ozfu9Y4Rf9DztwW497XFfmkxGQjTWPS22sVTHgyn\nPhFx5RVqeS2cOSCy8fnH0Ya/lKMrmwUcI/ZMYWXjKobqF/y2Xw5Uir3GS3Ew\n7zwRfjYhsfoPe4EKhPXFax5YhD3KzY2jsl4SoteK7ktgtkztZgnlxVR6cd2s\nCjlWTv2LilBTUQdUXUcalu90thX/3GhV09Wfh7jOZuA7Ct8lYzE4foCcOg9U\nRYihskjg+Ne8JeMAXzc4ZUJHu02rv+UlWaXChTKocaH4w+h5Tgh0HGJF75MY\nwH8/ACdKelPLtqa71dU/Qra9H0UXHVn+CSyuLWukaI9CGYOWHbXntPmwVGnl\nYLQg1x2x5nl0wPRAg7sJClYcadMlqJyzcUdcDCFqMi1pCGs2Tt93O8yYa4WL\nLDa6dZI46JQYt7LgppzXuxLBUh2km+fH+qirH2wc+3629xSUJs8y0b1S8ydl\nUOWS\r\n=XK9U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDa8iXT7eUsi4SNL6sojHTNt28eAFCEx89aoY5rAMpgAiEAv/xFQ/M0Bmso/GaZeQ3kq3Z4W2W5Abe/3iNIduv9MIo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181218_1545097944839_0.004375760300469267"},"_hasShrinkwrap":false},"0.17.0-dev.20181220":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181220","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181218","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181220","_npmVersion":"6.4.1","_nodeVersion":"11.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-bmX36iH01CCZmixkZbobzA+f8+F0kZTzVeOz/PhvQ3INXe/kmO0VPZ5k9pn2Fo1FqlTF1Id1lMA+OJCSQBBEnA==","shasum":"0ad61437fc8a1cd642fcc3cecc98eb339f6520c3","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181220.tgz","fileCount":150,"unpackedSize":374406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGvX3CRA9TVsSAnZWagAA7jIP/2Mo6wcUVeo0DQVNetmt\noLGxtaEjy2iAGGSRK36edSQ+TEbpSWjYa7/tQt8zJ1o01fDvbXJkW1za0IoL\n0q+K/HEmDDveWEnVuM7IxkGlB1pcZ1zJjEFxwn0G/j265BKwPsPs/LwdCAHv\nJ1L3Uhxj5S762K0NPH6ZqpPQ6NC64Pq14P5kQGFVZ5Hotd4xZJYLk7AyXZgW\n0KLOH3EhuBp4MziGhkJC5HmzpMi9bUNUpbe+fxZcJDuZe3ZCRjB6A0T50HoA\nOzytpnoo2HPSKE2TVeIw61ykclHralVzlGXoyHlBGrI/bqXG4k64hpy78ANT\nr43QOm6IqGOEn0VVScWOTQSULlMVq/41pGl6ZvkXFu9L5xGWPfjjUH9mXFHn\nAQFIdHT/LpmMj1pc7Rvnxt69Fe/oBd7EDBL0eVh69hpxh3djEFZdYI8AMv04\nVFKNPEC3NRgAOcd4XQEVkaefT2G+/tszRwRqkVyy6OclkWmr6CJ/Pimpu50L\n3DrwlVxjsoky1GAGBSSaGBeUXCz+PNjTbusP0LrH/kKZo/TM2kCaG4irMqsK\n9YtIgL6Z9rRlFPInvJVMy1RPCQTX1TvjFqHC/LUSAjLO3fKumTSUPkwPGZ2u\ndCip3BlGU4N2W6N5327rNtPG59LZw64bwbVxNzKtzFKZ1y5b8mZJaaW+RILg\nfdS4\r\n=rhHB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKdphckQKm7lr4CFu9wwdSX5jKTuG2qS32VFrpbAWntAiBqITKV66qSnQ+iAuzc53mtAMgIkCvTSiA7Iu7DM6mXuQ=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181220_1545270774863_0.4904689943363245"},"_hasShrinkwrap":false},"0.17.0-dev.20181221":{"name":"@fimbul/mimir","version":"0.17.0-dev.20181221","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.17.0-dev.20181221","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 2.8.1 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n`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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.17.0-dev.20181221","_npmVersion":"6.4.1","_nodeVersion":"11.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-0BIXnw0nhlRRjr3i/dUTVZsdFhrnFy8Dm8P9i1Lb+rWkSR8JzFLLyAfGb2FRGCj+E3wfwal+UnlF9Cwqo4vrLw==","shasum":"565f4453a952dffc1791b82f9023ffe16b5e4bbe","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0-dev.20181221.tgz","fileCount":150,"unpackedSize":374563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHEewCRA9TVsSAnZWagAAWD4P/0A8TiN3AjLg8QPWfZ1d\n+1FOfAaRpAt4DD6oCRGg1CvfbKzsPVdDY23qXB6W9NZM5UqWDqpaCzS1yVH6\n543P+cCEg6ko+Umlp7C6bZEB4Jef1GnFtHJD37n+7PG78haBIsDrBP3xx9nU\nWpO80H9nruxNC3IzHCeSQmxwmELfG5Uwf7/3Url39wP3abmu+3AJ1YcJ8PZ1\nnEVGe6vtqZs3AnWrfJXJCt9K+LjXinu4hOxgpzNwk2lYfpJMSzzszs5GP/Jz\nDRtS80/LPcesEX7i4ykgRSJMn1OjyWh++9ARyujiH5xyFJGFqL+ztFia1tdT\nr0g1evnrYFmb+aRRqlafqRbUkCUaR6DDg7b4J3K2E0fLDfwj/O42xNR9oF9n\nAzKqM+nTDEKzyzpHS4tHP2G2TBMrgzMBO11To7kP4qIelcpDgpBrGG7rtovH\nAmEscfxNJ/LhUcpeOt/o5k3Ct+gQja6Vj/tP5EoeDTWYSKR8YE25LhsTylKN\nXJK6C5jBt0Fn6+MJRPN2GYQpuHvf8AJRo0uWMJ81RS6X3Fdsa0Ed+qTk4mIW\nf4HYMKzNya1Trn2G1fjEZ/mIFtWXWl8v1VoqGDqZQoNsudBYFzHfHlJhTC5F\ny57IKnkbl06fwi/vIJQV7fes93Xvq1wajeEpBcWM9Zh+hnfBeQAMuUQH6gvU\nWQv6\r\n=XAh5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHUuy8ljsoI3Sdb0VZzwk9WGIelLZEWOBHN7LsRU4hq3AiEAuEer2v8vIuKxGApWSalFU+cOR9Mu5SlLNxZ2icFCY68="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0-dev.20181221_1545357231415_0.9366145882106747"},"_hasShrinkwrap":false},"0.17.0":{"name":"@fimbul/mimir","version":"0.17.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.17.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"_id":"@fimbul/mimir@0.17.0","_npmVersion":"6.4.1","_nodeVersion":"11.5.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-LNnftuFiLbrZNvA8a69Lv3egvjkOfIzTE/50EQRBaNxz4nG+Cbuz+EcxSP61NfnlZ1OeMS9ciF/bkXwfO+TG3A==","shasum":"8c4c2173ed57080931137fca26eb4f0a94b34d0b","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.17.0.tgz","fileCount":150,"unpackedSize":374522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHUnNCRA9TVsSAnZWagAAIWwQAJy6/zKVEBwZV/Dn3Mu7\nRrn9EtKOqvtrBTjjebqTRRWQ2Uh9IL54b9OJ4y/PEA2YWHGkYZBdwv3nkpyb\nCLj6Qb5Y5eZZGomFadi874MUkhhXX1nXMOaHzmlhcv/iqgxGIJkOas2MJn3W\nwwL+gyMD0hQmJdplScHJoTFiVFqWIfv9VXTdvdtfvT9z8euW6n1oPG0WitxZ\nwRo8OWev91OnhzxV9GbwHQtQxAdBOk0z4gXH/dw+XSEAOnVQPf/x8I33Sako\nl3ImyXTA1AiK603hFDf5wJZ5i9oU7WE5FwKx9Rl6wn6IX6K+zvMLH0KUkxTr\n8WOoVWxv7ItgxMPQZZ62MnEKXOXgEbzPfDD4IW+3p3/qRrFMYIEhLbms4Z2p\nPXXfNrj1O8VTQlN7VU0GdVmfxgpWqyx02qNKVLXVdooUM5R1+oxvViBorkWX\nnjujvy2wc9eQeDdsxPedFylvVWbvU/fo51Ydpf8LsGKfc8YAY+SJWzeWQoIW\n/XnYgX+3jwbu6OHgME5hVG6t7YCl4GBb54bqEFlyRRivwB5wexo/6KEnlK0l\nhvVAt7N387FKtiKBgkzvk4+Nu3EWyWSj3rBG67CW2VvXzbVHpcwt+T20hGiS\ngt4RJoCu5YYzxwCwU8/JmzmWiuYuWK2+SiENMopJjEr4j868KmfnN4w2H2pe\nHIJL\r\n=MtoO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLA34YT+dv8WJchfvMQBMFo9OFg7u/e3GR0dFuDu2NhAIgfLL1edZx5V0pn45F8ysvxwP55KM5UYNazN0p+sIH1wU="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.17.0_1545423308943_0.7205552915342768"},"_hasShrinkwrap":false},"0.18.0-dev.20190106":{"name":"@fimbul/mimir","version":"0.18.0-dev.20190106","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0-dev.20190106","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.18.0-dev.20190106","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-EULVEUsNlt27Twmx5HZ+31NscGMbdVEUj2y5EbSnyP9+LLI6NUfAoyM+zNi0QKbseDgksoXa3iVps+Pua1ULHQ==","shasum":"ac4e1c2494da7c946fe374655b0020149e3c54d0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.18.0-dev.20190106.tgz","fileCount":150,"unpackedSize":374579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMWG/CRA9TVsSAnZWagAAu2oP/38OBB8o8h17s8jZdPVl\ntP0nNUCgW5cN2VHow/0LAmEpztIc4eSARfpMSA3Dg+cdUeur+9yc266Vp5FO\nlPnoNquEKjisfiUr5YC5DR0P9jaJYZZJK9RO4QqT/YcocEq0tYZabvlzXMqM\nn62MpMGb5bsRwYO7hVjHLfyOUqtTy27hMg6vz0TM4QVYgtxcHLC5hp5riFOc\n6GYvjbLEf9lBjX3Kkw1MEAYw6xrKpHn9a2mRu26jkcAoTMwAkUlOfINe2dhA\nWr6/pYRogaDtByubuzw9fREyzM7zgy64MKkhsd/mcRYt/mfAIPPAjBUYHmGU\nkBaCcCnFrOP97TDjsSroOcDyf2eJBHZhjwpNcmYtHGdbi6Kn/qQl63R1JCDw\nCJYjjj0S9frGAtxzjreIVpp0Nb6Q1jyTu8izxo8EG2stuGqiJT3p/2f4AJN5\nEZ+BM3ycG25gSXrebX5JWiHMIQzF3MdbG+Obb5PRUJI47z4bUOA4B2SaG3Ta\nl2ZvsDg8N4IakJtNM3Ko1YkOSb2aqjT5qlXIQ2VANOsdUasTkJAErsDG+okV\ndFu3wuiy2q+yHPLMgtkDETS3r6QUeLXlpLZYAQB7IvmnLRyEqL0O5zqgdUuo\n/pDFCOENKqI82c4nhjehXx4zU3CLUIRiiSjDgpymXs+3WwI5Hqvub/NRwGoL\nHYAC\r\n=k6U/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGomBMjqubVtDATusI/1H8bxUyvXfwxRD1cLfWWth6pkAiEA7oYDV9m2l2N3A0TNHk8eRAOgLV+VrhNapS3qvwY19dM="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.18.0-dev.20190106_1546740158738_0.8825916523484896"},"_hasShrinkwrap":false},"0.18.0":{"name":"@fimbul/mimir","version":"0.18.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"_id":"@fimbul/mimir@0.18.0","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-zQ3of5zy9JoDCroEWbOBfxcyc6Gy0CAhr2WwDW27F/QE2vRg5ssUkZxKFXl/ie1g0vRtMkhoyXiSA4rtPnLlaw==","shasum":"37e30f531aa96588b73262379b523c482d8c9807","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.18.0.tgz","fileCount":150,"unpackedSize":374554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMhzSCRA9TVsSAnZWagAARA8P/Rtt2v4Lo0uInaM8E9ph\n7PLSCOUvxchwdEkbPBIrvKCpkvo2gdNN6t3sLkuDM3uTmRsLcpUkdIy/2yMw\n9F6bGtOcw9E0H2j4IZBCedmW/vhpHqpqFGlDmfHbypk8KJ/HqQJvmmT7PQyc\nyC/tZ4NpLdLz+++afwhl5cUxddo8uy0wHwtC5Ht+s3B9PEFTF6S9IsLRNeYD\n8fIWiF5APVlOaTj+hUwcDk48vg3kN/CPJTVrvXgLKCi9VPb+IAQ3WoqigR+O\nJi6OW1sPrlItlJ0VD2BPDlvorM8SZHm6+PMgUuFSwHkMYoD7LjI8yllVPNmD\nBozTJ7c0PJ9RthRC90dXI60Oh4tsErfqNfzb4tYLAm7MKSAHFN4Gsi7Zrvem\nSuo7MDBGmKk9RW0mtFAAyAAJU1XkBfrRka6jp659G20t8ui17ojvjjnVxDWu\nZZp4mxe4xdjsg+Q9hxY6keOSBISGpbW6fKmAPbxHJH0U2UNTB3CFg1U218vO\nvcjkHDLT2QVdAeMhk6nZWiZQAgyb98/5KabFwCOmT4JAqDybNO4E/iWfx7u0\nuCMCAwekCFclnyJjg3DjPlZ7BVx8A+cB1tCtQ/KICZDtzOyd4ui4nuG4zDrH\noYXa3cJmU9yMKcftxuxx5Rm7CFZy31KIAbAPaUsLrriIzsURX5rE4vscS87g\nAb6S\r\n=OoxG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPChK+cih/M77wVyUroElCB4bGnltAWPJBHXO6MjR76AIgbzMVc1N8OMR2lBC1D/8qw72Ubio6KADx4ecf5dRFUKA="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.18.0_1546788049595_0.8355391432916652"},"_hasShrinkwrap":false},"0.19.0-dev.20190111":{"name":"@fimbul/mimir","version":"0.19.0-dev.20190111","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.5.1"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.19.0-dev.20190111","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-DhUSS3NX16FRE83r2zUwfE/c15ZZC7TOO+JHAHYoEiZfcSh5+SR/nhLgNyWQlXnMgoHtzEHDOBb7Nzj2AiJRpA==","shasum":"40d4c7da721c631bde1c0798bb9ed2b7e41e9578","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.19.0-dev.20190111.tgz","fileCount":150,"unpackedSize":376883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcN/ltCRA9TVsSAnZWagAA21oQAJo9dLP+YDskPB94n37s\nsqlGtYsKq7kHlZYbDG7hGlmnQpw4beCON90isBlgVQ75hBeFeGezUlKcGxsy\nfdU4vbHvtolmWo7FM3kqvz3uHLNjEio++mTVlpDo2LBI1kBtcCV6aRChn9rA\nbNksB4Oh2ZoZu9IEDfwSKDDcsNTpsCAGP2JmHd3cI4s9Zftt4sSa2DzPkJqx\nrV3X8QMflWjNUgZA2Ybeq8smJgd2frs+vEmxPSrwOH+kHXqDlx6R5NXa1d6o\nBBgKxrDkSY5ZNGcBnme65566m/ue7soLkgK+vY/smroFWV3/WGW7HeYsgwOk\nulDooRp8M+iGAPXafx6RU0oL9/KkPH6K9FF42kYjeJEpIE8jdmWGZFmhYhTB\nTozCOjsoxf/r8ajjuqEIj8j4NlDJWdZJCpghp09dZjVERercUe8HmXkfMAeR\nGd9SkJVMsEtoeuMcNEYpXp66cNC/5o1kNnMxke4N9HVrfoU9D58RSP6vnpDc\n5JIn1XC3AhU4TUCIlbIzP77optCwpmJJJ5K5VwtSmgxv4PiIRxt+Kpc4+73I\nLGnHrMHupZ+3/vbbY8KIOiATpaj8cDRlwGDDygJIq8fjJ0lpr8NMasiRnpyF\no3ye+iJfk0YBixzz0SwdcuN54JN+qYJhLw2MnP5nClAZ7eREnhScz/xbSgCR\nLGLP\r\n=wLbj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOe61TutfShnaPsfCg44GG9Xre9TssqCgzZ9RYHSUxvwIhAN7Ins+SjWcuLR6z8Qz2NxzX6xhX27DncTVyF9a9O/6d"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.19.0-dev.20190111_1547172204622_0.9581064187883148"},"_hasShrinkwrap":false},"0.19.0-dev.20190119":{"name":"@fimbul/mimir","version":"0.19.0-dev.20190119","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.7.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.19.0-dev.20190119","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-ZUk3WyWt3GD9wWq3XglnQnDkOB4JYNe9Lja+bXMEfo33dmRQTsaoKUV/Zr9F/OHVHp1IQdwYgYOv7o3+O25fBQ==","shasum":"531813f89a8e8098b3bb00b7e236d0fcf2ac5a75","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.19.0-dev.20190119.tgz","fileCount":153,"unpackedSize":385266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQoazCRA9TVsSAnZWagAAI5MP/0Rtfh8A5ii4oa39YDjl\nrVVzU0c0JB7QUC4JaIkWpRQjXvcDyz9UxcWJQ49RE6+3yOkTp+cHhpd7mFpC\n5bk8P86SRnQI1NmD6BWOK+vMHz5tk5dDEWqljQAi8cUoECtebnZUb2ab08CQ\nlJHIZzERLwYkMOVMU/9O0OMxcB4OsKkZWRMwNqt10CoGcv9gx9Py7dPyp0gQ\naxj8PxHJ05FrUMaw+gW4QkoF7Po32577s2HmYQGriE5lXdoEJ7lorha8h3mY\nOx/ALxkycpdXWtvK5xGYTqTSe2e2U0gUROngHx1H5fAdoMMcJjrvQgwxjwbv\nmyJA+8QiSbkQ/0cR7DKgzwZm8K0J+o2vUrH54QtIGmQIxI2e3PBTdh9rRAtG\navnX5VEa+sUGVxdeVFUiFopBfvbU11ZTvpKxw6CiGnvS1vSQHmgxBFuoFfH2\ntbxVT84EVQOZL5znHh6RE7ngZtQYddlP2QHC7355/32MHAruLLxOiQHM7MqP\n72xOhnXMfjcVtHf5q2s36bLsvJc2nsH/+HANq0tv50kuCov2HdMmcvwfAeP4\nsC2nuJU0xCuGbg7HEL/mBU4LxKLUpy72jwtK2nF61bhJxhC1PF8V9O1wgQB9\nmqoFTQgdnFvxNVRcmI3zrdGL81/bxg41GeGguX8PZh2ku1VDy10XnzoPXAFX\n/rZK\r\n=xFY/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFRR6dO+Lmg05AiTH1VTU5IWo8Ai/swua6Qf1cRWW5G0AiADiGsS+787vOAc+GCDvzjWNLFZYEssrYMkN7RRvujE7A=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.19.0-dev.20190119_1547863730631_0.43257890358527495"},"_hasShrinkwrap":false},"0.19.0-dev.20190120":{"name":"@fimbul/mimir","version":"0.19.0-dev.20190120","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.7.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.19.0-dev.20190120","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-/r4qujj4Og3EwLLno3JL4BBvYSldbTP1IUzLPoOZd9bBOIuFgHYzQL6Wo4W3E5ii9LuOAEsZ95y0EKYwAqMsaQ==","shasum":"933e861329e34ef3cdfceb463769bea5ef68d40d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.19.0-dev.20190120.tgz","fileCount":153,"unpackedSize":386779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQ9iZCRA9TVsSAnZWagAAXjEP/iDG36l4pQ+noe1DAXvt\nAoF9NKKDb87ONcTmih7EYEa9R9ugYh4xn6/m1Q5q+tuVBbESYqxHk6ZQTA8o\nY+7VixQsERY5jt3VqVh1R/EPlPztKfj4ob6kbqscygevirJPdEBwZv7KtMFr\nPT9Q9O6+YuFBv/oeP1nwUjob1u6RMaqxO5tOPXiqIdydWWfK3VZaKVmf9iTV\nwq1Z+4iB+tUti8DQyaiK9kEnfasdK4/fAE5QIyL6UVZkeT/C9YrrVXyXpptU\nszLCMalWx8DUuzuPnLsDg1rO5KjEuWyK2pt4cql8yX41l8kVe88H67Dn4YHa\nlTsZVca4j0NipMLcr1LLaT9+OQkfYy0+j9IBim7RAubZauNRAfsJu0ud4k2Q\nB/QsYv+gyap61NRGdYHAW6hHrJco9oTjY/weWD9WRMegXBW4uHOkRF7STXdc\noIGkAaGbWQMkXzIGu4LSyg39rWDG7H9wu6n+TKZgOwzU5zpakj6DOTyqoZBW\nBjKQzJDEkEzq1ZQr1gd4qhYFSIuelVIhKIlInDN2GJ42InofSYZbUokhn3Av\nHCUaGG4D0RcQ/6WPNKAfiNVSRumjWq0PFyQNWc5Cv4JEvyqM1Q53EpYJF1hQ\nC3kPRj+TTojTXQsN7NjqCMyBuu9R4PH1dRCZQ4gl83LaFFQHYIXZ42azNa70\n7pXR\r\n=Ja3X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENCLtZ52EpmKeZZuphAmZv0QZl4drUJS0MBxtWL7o1WAiEA1RcHcejGZ5He6fuhp8vRGN07RQQpSJTko8W232G68KQ="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.19.0-dev.20190120_1547950232740_0.9977047180829599"},"_hasShrinkwrap":false},"0.19.0":{"name":"@fimbul/mimir","version":"0.19.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.7.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"_id":"@fimbul/mimir@0.19.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-ABfeTWVe6sQZ0UYlr9wLjJVHUQnj2wguTv8IixAGJyKuhfUIdrZO3qsAChna2C2O8wj4xrKBZ/fuRiStBP24zQ==","shasum":"5fce6369a4ae80ca0b0296fa6e2a9b06a2d18147","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.19.0.tgz","fileCount":153,"unpackedSize":388657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRvvECRA9TVsSAnZWagAAuxsP/is+Mq8kyURVgvcusbqu\nWx7EM2MQOftI9nZ+CFAXMWLgbPMT5XpVKxdwqYJFythmMDKnrWLhGxNorMRb\nXTKI+xTxhQF/cDH2ufSoUUSFFOVciMc/DzYNYB6D6VONujwtBsFnhFUgQmR4\nSFuWDLRindwo4EDJPGRTnufdKV5iisiESFW1ASaOV1/KZjnzvJBicz50vaWv\nYZp4oRaSAFizgrdbdlXhUJcBN/V9V53USnZ306xY6PFdf6TnS1ahttszrW+t\nB5ZVnDVljfOIlqcLAEebsd50vajVYAcNN+zbIzgpXfeNf4koIjSjgFZ42Khg\nt0MWoIqkwrB66xQkXYqGlpDF2nPUEMSCavWep2tccUj0dZkqbSFRIm8NlvBm\nArS8iDlFILUQLgD2Tp4QJMZpW/owjChQS1nxGtmAGoQg2ShVaW6YOB6xv9TW\n9D4Vy9On6pj17AK6ljWAwMWmv0Os5a923qhSkOZIDvlC5dD7tkgOVBqDMgyh\naRk1vgZqjBQUgrs5dBWDvzIz1KVl6IC/xlH6TYuMCkb/i+GW6jpZZn108aeH\nU58cgeDyLyqBAxjiburfK3yEKTUZ5pLjayQxKnpf+Hgl7jjheeS3sS6xq2Mm\nvMknMx05mrrtTr/P3AmlfkFGlG6FmPstY9tXte1RInvfQtREFQxaWch1bRv5\nyLNB\r\n=ziUT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2idURpOC7wgikWwydKzqWinCmj3DRvzKgoBn4RB+QSAiA/OTFED+Z3Sgsny/HJERM3SgFNGThXC1W7HgiQDKPbWQ=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.19.0_1548155844056_0.6961562144961428"},"_hasShrinkwrap":false},"0.20.0-dev.20190126":{"name":"@fimbul/mimir","version":"0.20.0-dev.20190126","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.7.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.20.0-dev.20190126","_npmVersion":"6.5.0","_nodeVersion":"11.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-tljUGaaYZXEU2k+Ji8B6M5SvH2aMvYqH4kiYVzdKXQZfpBzrUqPtr2XcLiQX0SPnHC5rXf6zCNXZH8AzwhjdmQ==","shasum":"0abe3bcaac58422c93f619b822021d1f2b36ac4a","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.20.0-dev.20190126.tgz","fileCount":153,"unpackedSize":388774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcS8JMCRA9TVsSAnZWagAA074P/23xwAubLQ+HjAuxI1T2\nelGAbdYiP2bbdVwTpib6rqQJNONJrvn2mCuW1eYiBispz4hf+e/qyy0IYRMB\nfDyBz2NyfxjjsFjTYb7R0j2Y9+86vod0XJ8b0qtUMu2rdXCGNRKzvyBih1/E\nqTRcySIoLfpYb3Qan8FRyZUadt1d06MOZSjPi/umxvgZ/ID54yQy3WBij727\n54feiC8gI1NOI4iXI/Rftwip1pW7aCeG0+wJswGX4XJW4dn9u+RjmCI2cdnB\n/fxyT9XSojnXXuZRa1i1g7fWoiJXHrm3uSW+d7QCgkMBRRjUxmh2rJ+WvXK/\nKjiQGf0TNBH+6HFGW7/AHz+/2/I7OTqZBK6K8889Uhkrr1Ggy42q+rr5h2dg\nRpHYSlUkl56m1mAeIQMM2Udd3cbaIn5meAI3kZllYt+8eWwZrngMEfpV1F3R\nevNkP17iYHz1CguWyDrIFC8r1EPimt/WnzoZ+tsFd9PAUslbEWHaXbEOVNy/\n2qelV3oLQbgpvyWxgXoskI8dAY7LAee/4TSP2IOvfKV7mUnHoumY2ERIP+A3\nV3GM2/qfXuBkOhAUsydhdGp4uvwWxwSA8BdeE4VNKA1NZ3HPUWAIQhZdDC+O\ni1d0vzjXkyxROXaOVSMqv3T7g43r0BoQ79M/mVztmqczQYZcLu935GjMRcIk\nGauQ\r\n=f3cz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6zvijdzTB6/WKlAux9RNli01GBHLsWWNSNMxAJe3VkgIgL9CYKXIosoHUpoelA+0CMUkWWaV8o5fgMS5e0s0u63o="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.20.0-dev.20190126_1548468811801_0.6301069143271689"},"_hasShrinkwrap":false},"0.20.0-dev.20190129":{"name":"@fimbul/mimir","version":"0.20.0-dev.20190129","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.7.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-desttructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.20.0-dev.20190129","_npmVersion":"6.5.0","_nodeVersion":"11.8.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-GIEpnqsK6893huB9BerIbqQnTYVSJIgS6396luU43KrlmezHxaOejXo2wMdO1aXDtLZc1vQRLmkO304DwFFOtg==","shasum":"fa1fb03b43f8eb45d8bb60973199af21aa61c634","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.20.0-dev.20190129.tgz","fileCount":156,"unpackedSize":400245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT7bPCRA9TVsSAnZWagAAqlAP/1PL6PqICi5BdLAnSTfF\no05cbyDrYjwmY0wKZ5Fme/XmX3WSdxM8xT3jzivVx4iXFNMERub8nSBEq225\nMelKK2dKXfjKoZlis+HD/rjqy1GfzMaqvNKCrb1vRALLS5uNd7xoflZNUlAJ\nmDDALRJ2bVg+plM9T9Id79D91HPkaxRX3RYJkoRujHBlmhD+GnVjT5lBIjHZ\naemVJwbtTbEZX6d3zhPqq4hzcy/xL14QKHdM+KJSamqGU/Gpl+1EpxOOYQL3\ndm3qMLG4MRriVBzoOxA9S7Nv4ygARB6M7JvF9x2SrN/dIC0MMmp/PZWw1eJD\nK/KwXjXZbT2/9iiX0EK8sQMD7ZcZcivsgUxRoBrVu29KK3w821M0m/KbZzy/\n+SeLdfUT6ZLN3U+fegGd8itKLl1SeweGImbxnLAghffGbYp3zoacMdF+Xrwz\nSqwAByb4TybGX0fYlBht40kBiC6kFFInmgw7oBfSBZSOpV6828jlWmk36pM9\n121FchQpdUnOcmR30n+KGZj9cByyMwp69UK5xCfPXt9hJeH7Wyt72hgc59cs\nHhxznLdyhTzc4zo3G457us/cNIaW9YOHZg7fyuCKYj7lRNuD8N8CYyznnkmC\nlWzdnKvcQ/K3auHXsUKiKIe7F5mKB/EyEm7X8YxqmtjflQGb/dfS97+7qwcl\nXSuh\r\n=jAri\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSJEdBFppnSsKRHTJ8+RZ4Z4AQV/DX5uaNDqPRnA9FyAIhAI5TJDB0DHaXSO1VKdtfCwPsmU5LljzaOgdOQT8g6fKs"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.20.0-dev.20190129_1548728014439_0.3095270355817916"},"_hasShrinkwrap":false},"0.20.0-dev.20190201":{"name":"@fimbul/mimir","version":"0.20.0-dev.20190201","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-desttructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.20.0-dev.20190201","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-cyXqd5UEha6suziF2lOwMxJjb7sOePFr9fZI0jUwSU4+x+RzMKQf6UXQzdWNMe8+6qIi5oMbjhKbJw99ZCWzBw==","shasum":"ac2ed2bdbd0eb85d9c859e937562537d9b55b240","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.20.0-dev.20190201.tgz","fileCount":156,"unpackedSize":400463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcU6xMCRA9TVsSAnZWagAA6+4P/0t8GTv4sALVG3/0OkIS\ns4SI9fptzdq565fsFSiLAhUtaBXiUXLISS1y7neL1lgOvM1hsyc3Tb6M+qh7\nrvplMSpsNtZvm9cdJDDbqwiUVTkfn3v++TKzioCrGiLQfELmNPeYAtIDcbJy\naVShL0SQG+sdX6+f9KSq0+hW/G5WfzXxYkqdpiBe5OdVSWp613kiLlVaGmTk\na0xVESnsq3vXC58ygy9tNBOeS48EfcfS2HE49GlZz30KDU/c869dn+EXHHmE\nHK9WzdQ5vW9mnf+DZ1SQCq4cxXbgyUfO6245+s0tBCa3yfgkpbrb9s1u0mzi\ncZnFi/1Rv66maWHiU3urFPPt4XvI+BNJq8QPUs676/x2Ncxlie689epVuLtV\nwQHm/N+rWbDi12KnGyO+sRYtp0CGUYpx8mBAHfU5Vmh4S3vKJ0XuKvcUaLQw\nxxNivgHp3s0fcO3AxHcU0bWPRG+yifkkvhXGAfwVPBpw1hs0xX3C4MGj44fq\nnYJ1Gv5T76Zc15rCb96J4DuW2Gl/a1u/Dkorj25lbd66HyvKlsVCepA6xX0E\nZkyECGcGGFghuuiNQR9FC8HHPKxOMVtMSKGS3YdGs2yjJqePM4lrgAiwxiRH\nZHtNkPQOfgteH4CYHJoQnXqLlG3lCSSb7okolbLEkEjoqttZ0t55tmxeJW2w\n8akt\r\n=ox9O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZL5LgfX3Ly2i3hwkgof+6PHD+EDPNNPUY2oSCfAo5dgIhALcz+3u0+GGm1Eb517CAjjasJBNZ+4SieKTFfjZaZAro"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.20.0-dev.20190201_1548987467605_0.8273731039816086"},"_hasShrinkwrap":false},"0.20.0-dev.20190203":{"name":"@fimbul/mimir","version":"0.20.0-dev.20190203","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.0.1 || >= 3.3.0-dev || >= 3.4.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-desttructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.20.0-dev.20190203","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"dist":{"integrity":"sha512-QjKQi2DCHliaHI34xctV4WbPcPtEHRWuU7d1m+h3AyDMtsdPqosi6G+ybzt3wYhkR5EMQjOqN/yGMNZyesJm3g==","shasum":"adbb793caf73a9a72332133a7adf715d867a49fd","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.20.0-dev.20190203.tgz","fileCount":156,"unpackedSize":401093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVk96CRA9TVsSAnZWagAASpIP/33ZYiZ2T8SC1lIMBhEh\n2aGKsY1piSuoftsn9fkEChZbvInJiTTzJamgMV19EDpsgOszd0Je/MoLdgBz\njN3IHh/rjHLiI6LfzcreWZ4gOzdGXLtmmqXi3l0V8xkh5Z8HYO21Ob1CHM7v\nJy3liox/tou4YwY2QjRrbunjodMRzYjxRE4SYrKHh2otEejwV1qiJhmChjrD\nLXTr8zGxFfUxmwgJ1HNaFefVZjTrThbk/x2v8/xYdAjuxiyJu8/Ym0ix9w7K\n9H1RZo0OKQSZx6kVmVR/CCfkh2CNpPWhFJbgREgyMPWoBVhY0BnQhZ/Qq8CB\nvQYcM5EIyhI1TxqxFJDSVcL8EKEiffpwVIwtUQgk98fhHerzOxrp+0xbl/qv\nszsqKCLKik2u3LPWGyynjiAFvWnOW2y+tR9AQSZG062DjjGraaCVmLU6G7fq\nRPpviwP85AwWL6QfgbhZwo35P7WGYyScmCeCeHmazs4jjLc4V76pr0+Pf2gO\npJRr8xfVqAXlvSLv/9gT148hQi1GD51uNws+JlVG78WECJnhaziK8yIafrMe\nogaS39PrScbbhCiGjjyqgTvG9HFuaCNod914TWsSExjARnsU3TXT66P2gOx/\n0I/bNPbqJ/Ckhqy4TvEEchbHq313xGhAUtXtXJAh7rLpVrAW6q5zD/Dut2Ok\nOG38\r\n=2RoW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT/jb9vNJll3Xs7v4A9fa2eN2jmzCZThkwbCL9Ghjk2QIgZ9XvJwq/RTgVuB8keEfFK2nWfJNIyL+mcZaBsA1YPFc="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.20.0-dev.20190203_1549160313848_0.6184465180612393"},"_hasShrinkwrap":false},"0.20.0":{"name":"@fimbul/mimir","version":"0.20.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.18.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"_id":"@fimbul/mimir@0.20.0","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-AEts+tDlCJdPGpcPEO5AhKPne5VdXOchlen7QwUxAKfmjwmYk0aL++FpWjzm13nYzsGimugkMjVX2tNdzgwQyg==","shasum":"6bf88a87b65a111cb3d981921f87f61f259cfc71","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.20.0.tgz","fileCount":155,"unpackedSize":402065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjS0FCRA9TVsSAnZWagAA4MYP/i4PPeuZifebzWE4/goe\nC1waRaLfYG78Igm0de5nAzHES00KhKceVxV8Iggnp8C8vWDFMbk6YJmSBaab\nSs6/uysZlVYUEtYiBIifIuz13DK9emzgh2zo27hHJhSKbr/GPqmJIl+UOjo4\nvqWOS0SmFnkSHyqxhy62KV1mRWQz7sqyP+eD7RuqGZRZngnXQSLg0Ey2XWzW\nVgXiXUXZb4xypjOZG6m3w7eBNd/zs/JsqHmZX4nSUe8XfFNx6MFyB/CDq4+d\n1dPfs6Lo/qUPakL1DKdlexoUu7XlUplEUfRwj0qGd41nJlgGz5RT6YlmZy5m\nZXYDKcOJ7kzGtF/cpcihYaJx3zwxODF1ERuGSc1Ac0B+UYNy+Rw+9Eb/B6Cy\nEMhnqgadfAWQ4ViFPc647pFOZpDwvd/7tO3UzlWBrpZu0Xe+WkCptSI3ozwr\nDkL49YVzbdxEEdy0WtfB3YBducKb0vf01DOrY2FJ2Gm1RrSJWJD92YWtwv1K\nXsMXtX5Z0drI1jpx//j+zyA5gVGEFc4mm+O2WXGdX+y34MJtGOIFuKe0o8n2\nYjXTXgiwqtmHX2o3tBhPt49NyQ7G3hTqfxi+8Jh6r2Y2Za7ckUyGVyoCQ+N9\nIeKwXI7NW5k5Vw7r+NPz9FPJUThwlrddSoH3Q/L+xLYXJW7eI+qr4xwQJvOF\n4m1r\r\n=jkIO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS+j3pwj4gr9bzt1xXAoXsQKH9HqMIJxypsvB2Wg4zLwIhAPk4tQw3EunYm7zFNYd4C6Npm5v+5a4LdAB7Kk+C65/k"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.20.0_1552755973049_0.7732124365842412"},"_hasShrinkwrap":false},"0.21.0-dev.20190318":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190318","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190318","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190318","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-TVH1IcaEFpkJqanoMOxOKawpwTFiiO/Dpj07mGN8hMjC45HezlalGBY1EYrYM8afFUygBe8S19t6CALtfv++mw==","shasum":"9387b9ceec0cc46de25b602d7a954463838c2a39","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190318.tgz","fileCount":155,"unpackedSize":402007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjwUzCRA9TVsSAnZWagAA2fYQAJ5nJlFYuoNsDC5e1AOT\nVFj4bktqG4xVrSxS8AhSp6ouFaLdhR4I2VUIY7uAb4NlMjczCkd9IMOvcXSi\nAPG/QqJ488dEJjb//j8T6odnRPExjI4RM1uIFRZI9DzCWujuM/ZrTU9IeYMy\n370EoxYnPg5PaATIo42uSB/ac3x9MjfLMgw4vRR8RhEYDM7rf/KuWRaRI3W6\nhozbiC4iS2R3xCVjS5CSM+YUszk3nVwYYLt0gM4hM+FqmQtaz5zlLyBGA7Kp\nhEIp6UxaHlz0NKYLIqQxutEaPEqu8Ch3wj50ffxCKAvU/eJfQb2Kxg9SUrtR\nnyGaufKzrawYjmsUNWG5TCzOgl//inm9ApYfDQ++BbPz0vFe9VwG21eZuiqy\nYK88Zuawfmp1nyMMTYOKWe7MRebGB9h8O8vH/WJ/d7GYGzPaRR5NunI00Hv9\nTjBaEsjgd+TEH+LIlPaffQXX2haPCrk4Jxr0HHN8GKmBoIqiBEIRiVgC2nnD\nxK0c8d8RpQDNfQ08fIaARjJky4xaT3zF5HqFAi/nWX1vdwJAQXtSQ+pRJNn5\nxEr/upGOKmB/TFd1FStPovYji0Bil7NapCfBmZDWqY4yDpgyCQMoqTj8nLzf\nnX3kBXMGWJWb4C+hqGEestpcQ89hmSe2xoVRK5g+tD1YqZpF1Zy7ofXk7htw\n0Pwr\r\n=aBJC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuxvg5AB2bQLnDPkM2u/MSonGdM62NnJndIHW0uo/B5AIgb3P35miosywL6mzFvKDeX/oexS2vd1mXTU8EY9r5Wy0="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190318_1552876850815_0.631039655346622"},"_hasShrinkwrap":false},"0.21.0-dev.20190322":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190322","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190322","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190322","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-5W4i2y1TSGJufnJuqTn7ohMG37iIBowg6o8rTiCAeuOnG2MLxp2Un6mYot7tdFHCO88/BzX9Y+xcPK5QDmgWnA==","shasum":"cc241a461017999d318948ba28376c13c3c03ee8","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190322.tgz","fileCount":155,"unpackedSize":401979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJclEySCRA9TVsSAnZWagAAVcUP/3cMlIenv5VoberoT2K+\n0uJNffWnP9UvXQ+WvkxyC/s4/SJIbpCX0avYsyNGG1j1EdQ8We1uxq33zK6t\n5Sg2qRUtes+fwD2JftQumqGJVfXj2qYZnElaUOSqr9euLxUdCMH0vH9tcp4L\nwtVJ3YVHzPqfMLgVBAd6gqKvwNpfZBi8p5VNtZZv6ENy/KkMHnPm09cFpqbd\nKIWlX+oDx0QArtWMIKRzg8mnGUs7k82sOITXsdI8J5LkdFfbrB+FJ3OYTibX\nJZWfLbIXD8I4XMmux7Qfb6anA0CEto6HjG9xYq4bm2JScgBv+2ntJ2r8+D60\nMl3eYUiTnCisJscsG8JSwdSKrRB8HFM0TjdvG4W93GYOull/5Qh34OsoV6+b\ns/RIR/WA1JoE64G44YNyhtaRrm1f0psfN8b6Qj3NcbAyGSxThq+kGS4S7bnT\nvhU6NCDU7KFFlxNJjTFcUIdGKrW0BIhGxzAYTOHPYChfSgCyrsfCqnEip1Dm\nNLqkSBrLbc+1qWDGh8BbuT8iJP35c5puQoNnLuT9Rg+b7gL7JshvsTvR74dj\n7XXaWTkQdTNdhf467vREbeSAroLVCEsM+GoNO/gseHCHyCnfnJytCs6ekrkh\n9TkvJzb9Gk8JFFArDH/Cn22gShojaNWn47IofiCyE0UMIG596ceyZ1n1IMsF\nUXgR\r\n=pMR5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGgDKKKEatplMp7J8z1nWr78aVJitBbTsM2Grs9ew46jAiBvP2KekLap0NXAEZl7iKMNOGs6pw3KZmOdsv0+nRsrGw=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190322_1553222801756_0.3102825263325115"},"_hasShrinkwrap":false},"0.21.0-dev.20190329":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190329","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190329","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-inferred-empty-object`](docs/no-inferred-empty-object.md) | :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.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190329","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-HOH3V1s9ZZRBCac0rBC2SYvin0xwX/jfDPAlvVUp4+4gNAwyNBsC4DUWC1g/o9OmAg2OQs4qe/roUSCRA3bu7g==","shasum":"0843258cf9cb5aa28953fe68d77e19c233f89b31","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190329.tgz","fileCount":155,"unpackedSize":417896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnYgGCRA9TVsSAnZWagAAmB0QAJ08MwPRi9fJbUSax8qv\nLycy6XLaHPUmMjrAz1cJpWuZL6+A5DPa/bEagwZlmRmWW5cxDBTYlanQiqa1\neovHTAyobIxoeQbVlTGSjIoJlfJAevLgFUVtwut9Te5d8CKuacX64+Og2Wgr\n3/icuqFhM+WE1qz9QLrlp8ndx4IbOlXxg612w7PkaitUrqO0jPXE/G1hPSFL\nOsQzzVr9iPotwwbBzDgEY51qUpcAAtw+Cwp7HF8DYNATnZK5Htsg1+93A71C\nXeciJ6ILFHXJGWUv3B9LOAi1fK7HOcfubZu48kx4xOe/cvPFk2JBnXSw1hoh\nXBijpfk7OK4Uxfh3Kd01B3vPRBjJdDf9ifhu9qP+YEwzVnBWViZ+zia87UOU\nXI0XjOKduyYNw0c9l+cJ01dw3IMGYHRfzHXwz1UbGJszGdj0SElBt4APmboz\n7WPIbPG0G6fUxshjbuocNSRAOagjUTiuXdHzz1v2ApU807QgxfmyK6buhhrF\nHp8MsgrXUC5mO0eOxb1k6Isg06gfDoGVsGxg3IqySo8qGpjyFpcENDnk+VGf\nRZkvRm5fCgBaVykRJxhRTqf0O1s9fiwkkgOgL0xAsNq6AHHJL/4uWS1fDlyE\nhaN1QgD/+ItOV6KqRZgK0cvSXVknN9w6KFh2qio2YPBgPMtO7q2gLPh3vZ9+\n/qF7\r\n=cfrJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIByxfrG2j+oqnNH29yk9Obf5n6m+o7FJm8HwcWRpQHETAiBUoHyJWuooMYdQq11evIkmgRLrJP6+NSNSwNMw9tFzxw=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190329_1553827845173_0.6710540770248763"},"_hasShrinkwrap":false},"0.21.0-dev.20190412":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190412","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190329","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190412","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-L8XXXbxCYlFQIfT9XWSLNf6ABiwbpVbO3FpbUONwCMWmplh/v0Q411oW1ObZl+aEEahKdPuSwUbQspyp8/4BPw==","shasum":"049875c68d563b8ffa4e61684cac9965843c267c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190412.tgz","fileCount":155,"unpackedSize":419342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcr/7wCRA9TVsSAnZWagAAfc4P/jARq1q9bhKrphOnEr7j\nm09D9hal0so7vb4T3P/sevdMqL5cY1lUS1zGHpNwPG4h+abRu9GqsCz7gOl1\nvjS/l6cjQglz3OmGQBBWyKq2Dryc7xijuv3Saq7au1ctMPZ12acFp0cAT02l\nldM6C5riJqewXhIH+x7GpuUTAbJ/NR5Stft7EG5Dp0L6pD3Pj9YcSchjaiiL\nkTlpXHRuf6a0Hwb3qb42/l5SDEwCH7A2Ts9KRCR6IlZcp8tm68ozFzbJrMsF\niUCqvhRbI07+UQC8i+UyoOAJ3hoLGr0NhdPffjYtlC/ZYhchTVStYMoKFRsT\nPVwhf/BxxIQjciBvn0SuadkWPZBpPQ3W+T3pgCLabtzLSsir21sKLboHd4To\nfVI7/r9XHF5xK4Tn720g0ketLVCjYtEcoz9Mpe6RB9ApuA4dAfikz0TKiTXr\nr1N+hFmng3a165jFXS9c7sDl4PJCmnnPsW6sOO1pmiBhWnLRPDRN5lrxYiqI\ngfoLgUq//LS75Gh1yykaE+YlfyKddgWw+VWeX3wTDSGwDGYlAXIwMnZjasFc\nBlp9TPam7Mw3sF0Zt1AaxaP8WpBwVPWcjvahmMvgUZbMLlsMkJKM54bBdczY\n8jswQ/FA+0JT3ejXxPu1r43YOdT4bGpCoZefivxTrz/OY/C8fyBCH6Hjipfr\n4YVW\r\n=1whf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKlbDeXybFKYW64u3Bhpx2gvU4wvPUGbeQ2LXk6Bsq2wIgev+P/BGN9tRdS58M+GgkJoEXD7yBAwdxCGnw7ycdplo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190412_1555037935160_0.005974555933468295"},"_hasShrinkwrap":false},"0.21.0-dev.20190507":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190507","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"https://github.com/fimbullinter/wotan/tree/master/packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190329","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190507","_nodeVersion":"12.1.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-nI4oav/VaXj0/d/p4a9z7PxixpfpmH0zO2nyCVmPUPGf4M4OmJ88lTgmXVCov8DTBNNBq8fBVWiu3vaQ+z3tCw==","shasum":"8eccdb1aca9e3f549ae9e7affdaa9f276e869926","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190507.tgz","fileCount":155,"unpackedSize":419902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0PacCRA9TVsSAnZWagAA3gUP/1yE/X8ZXdnkIh4nlLy/\nDEDbt3QAfAJFT4Wy7qYa3rwMYSSodXk5e6AzVpvnlThBrSR7VcAQoNzB3ej8\nIsgTQe9LRvkSGmw+zVTMUacw3Z8xRU50awUw1Xjq9V5nCAKpPa4lPjCx1VA5\ni0lcj/HSLJf8IQ356/KVGmzAcUEYI9SHArmHWn9hA5D8Vh687QtVvcNAPq43\nKQu7rrUG9oAEteV01m8bystq4KPhkusqBM2mZacdqF+EYbmcjv7CKS8aY+zP\nO9IbsQA8IG/reQdrkwcDyE3Gta8PFvmuO74KicLjWrEyvuMJA0oKPSwJiEkl\nk9e4iYZCFd9If0hbYsTtfzaamr2hx6Ee6U/YFhiT+x9pzIm6DtcUlxmFEtLQ\nHFj8O3OzSFSWbS+zn+Mr+zUQ5EYtuif1pH4KetAxFVgQIc3MENQ+M7RgiikB\nNoChbUUZPG1ExAN0Uub9c153Ub8TK1ZQKTuuZvL5IJycVNmcNvzOECMuNrb5\nuCUGK3OUtm0Rfb5XNcgs5MNxUFce1GLAOnwv65KMY6Gk9plW/TRx9MQwNHBN\nX2nSiWoem9VQWnJCJzN88dY0p75UIOAgc3AN17js/m1KQ9l0nAoLWplKNE1q\nGbSgtl/DAK51+ulIDrA/S2QJZFrCHX/MsLYsjl3rPcQKoNyilvmapO4LcZza\nNYVr\r\n=1ulj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+oG/NxxuAhsC+CiSECH1iFV/vLqrJkGwvalPPUM2HzAIhAN8fK9MjLXyibgENVecTL+/tTYHL/tVAZWMDhmogEJpn"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190507_1557198491746_0.285693056682383"},"_hasShrinkwrap":false},"0.21.0-dev.20190518":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190518","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190518","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.8.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190518","_nodeVersion":"12.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ZVquOab2ByZmGs7iHpql9UYnkpMJ89UHzATWX5YduiGWAt1Ldd6MrAkSq43M0/7zDot9GlkVKfJHZduB3m0fYg==","shasum":"260e66635cdd72465ab0123e5fe849de7cd4922e","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190518.tgz","fileCount":155,"unpackedSize":419910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc33jgCRA9TVsSAnZWagAAlskQAI0bet1NiWtHHAGP/4p+\nE+H2zQD6YKNaLSpjpSEr8eFR+ICLeEz9K5z1COsRPqj6JtXAgPMTqb97D/Y1\nEgeY1gJUwk3CL3LsfhuT4AUqbn32EO1Povy4nNDvi0ao+H1oGuphEJek1Qt5\nvhW1u7xDgxDyY5yzrerpPnRwbilL5p4tqU9Wgo8KuF4cnXjeFDlKoD1zwhKh\n4GPIg/PkY4ud1U6utdkW6SnaFbtGKsdwD7a34uk5I0yIluTPzSseoXoKRx1X\nBNklgMQGwQkWckcpcXhBoVDiqg6vekO8nPtZR1MMu3kiz9gKo6lswVokNMte\n8luxIQZ54KtklBc6A4aTeaLOeqVUptcg3gEGBOg8xyc55X8i2IzwriWZMMft\nt/LztnAiBhKTHguN4TDEU9m/HLKJ7WqUryVFoyRJ3g/JpqnxnDqWxcF6m7Id\n8OAe24hu5k2qQ6EMOx9mv8sHCxSo7h+y8D0lKv+Dq+KKytSJzRDb8KLUX3vl\n4oM5ojrBKYZvUtsshUXECStrAZtOUs3QJEKQd8DvG6i0Qhi+vJPFzkjcEcpY\nDABEcxgT36FPm061vUqqoEnfcqQoXUANhIImPSJMI8U/7JqGW3ldYmaU08Vg\nRe8aHHk0ruK8cLEa6M9gf4f/1cxIP/emzH+JOx6sq/GXsiD5tlMXGpaYvPi3\nZUqi\r\n=Y+Fc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcmv+pF3Bm7xQFWCUZAK3RvtUCWC7JAdMTnVcrXXbDuAiArBd/SYmBbZyCDzmM5EFQtC7E4TDLrXDMu6SlBG0/Bkg=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190518_1558149343599_0.6191330230749426"},"_hasShrinkwrap":false},"0.21.0-dev.20190529":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190529","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190518","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.11.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190529","_nodeVersion":"12.3.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-S2VuTKt3jpjx24VkOApO8Le/GPRWPZBlO2Dgr9ros5AR1JPjywfnby9FCpN8rhi1qNHLqC3qvN1eDytLnDlONw==","shasum":"ec987c6ba56f73c330787426d932fafd759f67b3","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190529.tgz","fileCount":155,"unpackedSize":415786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc7frKCRA9TVsSAnZWagAAyoAP+QCV6lXBQondSEh6gnRN\n8k1m85KzfMFCeU7YcyK+E8ixm78oJAgJUw9EAwKbvetMVtxsSBnITzRqAjfz\nbouFCdW/2+DMC5ABd3WPkEKlcAVipkHFdnDy9Hz6IShOPmCgTNwDpvFpcieW\ncuhvDHkAOYvzvnbBM/VwuKaonAq57BEFsNSXGdUZGKq6LtCyKvadjHbZuSF4\nXCOu0Z/ziKyVlrcvuo/ajQ1wTA8ek9MNRCtIRrxfTXv5840cq1RZD1me9VFw\nYAAB7XGqq45JIVRbf6+KOJhFxy5Rt7oR6y4nDR2USlSApsQV5h+PtcrWXdJr\n3gn2yDgMnq39RVZJmXIGLiQZl4mAo+VtiYVb2NpffTiZMVqBgLMyCLgS4o85\nJvO1TfzgTwoIu3WjdZAPww9exM9R7WXeJV4bx8UA+LDENJ5pk2/gOCKTeYyM\nQf+56Pn9otwT3TeQWVhaAVY68ey52eAyF4JM9paDVzO6wwR22qfFtVf5ZEyx\n1YNsaunNY5gCZONBB15TheBcq5uzHVStFNiOLOgUQU88ZHao0E2Abb3u6Wze\nYGJ3+oH/RJIrOnSU5ZhaXg5XuqVKKs0H8UzIRQC/s4fGnOrEMLk0KgWwC10s\n6JQzPriFWMhywo0BU70U9QJ0gF9TTix9z6FCr+28UTGiXw0lBxAeLSIHjMkz\nHl/h\r\n=Xtlp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHB5yFbT1BmAK4cBr/aQ6u79Ob57Hwu6rKeDAnwWzFnaAiEA0oGeSP3WOHdw5Efy0ytcz50nA0kkvWElNTHAKyQaNyo="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190529_1559100105539_0.4622224828233328"},"_hasShrinkwrap":false},"0.21.0-dev.20190603":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190603","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190518","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.12.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190603","_nodeVersion":"12.3.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-4JkG7ycjoKZeFnjnJlwGpIKUF4NMoC7xseALbRTnd+PREPnb5ML9ClPFKu67aMJY3jZ/FvWmvsviheE0gHv8XQ==","shasum":"6d4f26d2efd389ce9b002c4df314755a7dfdc175","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190603.tgz","fileCount":155,"unpackedSize":415175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9JKgCRA9TVsSAnZWagAAgLYQAIyS/+sgbot0Csi4PkAO\ntt1/JCk5+mwHPpG24CJLtqhc7snwPWrYvnDPpHJJJ6xDGyXeLNTrQmMwo8vW\niT2uoIiClkQPlshgYbc5zk+9EUipwatouSZMQC3CNPvQSOwiXYOcFQ9kcJ7I\nMbf3zG/oSX/Z8GuVpQ2trwnGxztEgiHQalTgJTaMREK+BitC4RfSM4sQ6dmr\nvT6MDVIysbWe/zMuRv8Fci4KEZcYAMtc9S4ATeu/X+M6jTTa+77VUYIwemh2\nfDeCkXk19bjZtmROvpEGvAH73rFCPBKniXYMUPcaNKZHD4kD4lskrBz6imdr\nw8dCBtNsASQsOS97536ynAjjbcYVascJyRFQZdtFc6Lxs/yrPdzjdZ4HEY3r\nNirFSoWEASZpMlX437uM9vfFlDMrQR8KimzNC5LPR3xPIT4n9F/rPcWm6/qV\n4eRi14RGtVlgcxY3wTnlIWH3L9+UGDPT5+Mi0RNuU0ZefLg/2r6AuC6PMj7q\nJZWDRtvC8pzl1YPAj1WTYyToI6og/dKSwEbh3By8srZrTC4rZ5frJ5zY1Dw0\nh0EF/2VPY4K38z+msMrvi2KriZAVsdICxCXYkJCvtAOeFPN6//MHyXspkaih\niWSwi0i+3+bg6YsIdiX/DKkvF1zRR71OXhpQ7MnMD4vqq66qZmKPUUfygPzH\nKyLI\r\n=HMrW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBVPPSXO0fQQxnVtPQ6Ydr6KSoKMbAQ4Ax5paG6Tyq5AIgH06fTV0s2+Q0x536ru0U9cL5pisahgieGx7cmhCSXiw="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190603_1559532191301_0.8077044076022426"},"_hasShrinkwrap":false},"0.21.0-dev.20190604":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190604","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190518","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.14.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190604","_nodeVersion":"12.3.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-V1ktLgAXvl5jOBXqIPqbSc0XN2QFLhBHvbhMIhzrtEYdvLYL/wdJ829sKy1qjCsQkZmRUtXUfy//s95795Twsw==","shasum":"aade600fca5ced97afd0cd01ed0ede92952d1c0d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190604.tgz","fileCount":155,"unpackedSize":414804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9eSYCRA9TVsSAnZWagAA0O4P/Rtd5EOQRZ7BbhIO53z7\nfrc7tuPtaRSMJBgKmKpy6xbtmBledokP2tVOyXfVMjQuaeqcF93+zH3S9wu1\nRtbkBKYhg1vFZGVd3Lr+6BiqS/oV0K+CCBP/HCvhmQojUyX9KKkEIhQrBw/C\n4gWq3wthbOpzvTfiBU+hNKuhskjj6nn0xZQc10yZZvvQjKcOMLktgMpo0GqK\nDu1aCRotkCf3cVupsz7X68IkwOw48f7iRkzDOrdvtKEQ1M+3A7mh91cJoytS\nMISyGRmd1snIzkIF1doZdsO65uZhvFxUSDrqbsK3vGdCtXXiiVOSKwPursog\nv+ICn2MDh0sechZd+77yXPvOpMZhwZAVLyz1RYFGKaz5huMX4BL+enSHomUi\nbWcZ83bcqWmrDaKb1goRnybEto8JxQI8R9htTDCsa3IvRyGKZL5NQH22VHzN\nhtt/69avzZISf6mCdf36LQ0X9IpXqinSA35Hh8mO9OzVrUoCyAhCczBQCmib\ng3AAvaxB7kSiZ8YAdjzu1k1lEUkTvstns2QIblkQNBL0N3YZzMsbT+A+H2SC\n1fiEgAOflc6sJUnVPHpzfk5s6qYK5w30NFgs68Ykcq0xrIfhRZcuzQlvft2i\nukbWRWtinOHVRpieMz4EbSd8PjllxjocOyDYoYS6tUg9q4vV/5P9WQDHImux\n0NoS\r\n=pLPx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBpjiwU+PlWEmCNLL2ALzUd82gGFgyNl/pTvGi05gmTAiBGSo3r7jzwmzevh49sV/FLYag2B3lIfeX7pQ3We5VgWg=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190604_1559618712203_0.8538068946203567"},"_hasShrinkwrap":false},"0.21.0-dev.20190605":{"name":"@fimbul/mimir","version":"0.21.0-dev.20190605","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0-dev.20190518","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.14.0"},"peerDependencies":{"typescript":">= 3.1.1 || >= 3.4.0-dev || >= 3.5.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.21.0-dev.20190605","_nodeVersion":"12.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1o4tITPDxyiItVtKN9hpgEqut74NaJjjadB4yT7aFBKw3Ya4pXDVKoLQSEavuvG8UAUxdKKlphDpW2GP4Vh2ZQ==","shasum":"9768dbb61bc6955c369006bdfb3b641339369a4f","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0-dev.20190605.tgz","fileCount":155,"unpackedSize":414804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9zWNCRA9TVsSAnZWagAAU88P/jYU1LlvQioy6CHKHClR\nrmarkmvvkWzkCyaXKl2FRWQMCZjdsmuFvw40UWu/UW8ktJdr1Pl5VMd5Y1uL\npoNTTYZ3AfW4ZpvBuEKLRqTNmsdzR0MeMBYBFqGclOqktp/G4QBZ44JIKZuH\nPz3AZVmgaVMahQAt6SothzvtOyuPV24hqoDgQBi/+dpMJL+P0FDeYvJnY/Qe\nIE4E4f2V/3775d7Gpp8TNG7MX/uoouQMrXf9RQRg3l+RWOZXVdfju1lxcraf\nGe1SDzPCEJ5Mh2pVGgjN3/CdRx6RV9tl2uqFbNPJygyn2mrdLl0M8t6/+0oM\nxZ5pPkfMDntECVfZSJ4EIinIqU5G2bvC2YG62GGG1IEldUCPALBOreMW7v7w\nCnqDbah+a+UEvM1RzEYE3NVU1mdUC6iPg8rkJ2gTh82qL2xPjwF04x1O5beK\nsGKce19KFJv8BSCrrLW0ElBgC0xrFiAvjnGb8E8Rguhd0kF75RaoRXsza/Ul\ndcMyi3SByzr8Iu2eFUxoOB7TsvtEtFrLCk87m41oyM4Cmzly3S0lVL7tBx/9\neiVF9dH/F+kf3hOlMUm7EvJpmrwfMDxf/SOPgtF+0FO8UYuT5PeaVUL15VBt\nvoVF9ubSdmVbBvZm0qOh7hi5eWXVC9gdyDMomG41bDIfYAI6uRj9fAuRnNH+\n+HnR\r\n=km2U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoCAmMVUpgyEOu3qOm4ALhgSLoO6eoT3AdWOztl2itSwIgIjghgkJfyzmMhICTYGOR2Edo++QQH6NITX8x9LBjRlU="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0-dev.20190605_1559704972932_0.3022455245596356"},"_hasShrinkwrap":false},"0.21.0":{"name":"@fimbul/mimir","version":"0.21.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.21.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.14.0"},"peerDependencies":{"typescript":">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev"},"_id":"@fimbul/mimir@0.21.0","_nodeVersion":"12.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RLZQgAAH+/4iUB/Az2ZlkG0/9vJe+wrF0ZnbARzHHEoeNnUL+WIjskPP30FTo8xXfWlwdx39lEFXQYSGx1AmpQ==","shasum":"09cf6f59c38f630bb1b59401e67cabb31885624f","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.21.0.tgz","fileCount":155,"unpackedSize":417923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+W+wCRA9TVsSAnZWagAAn1cP/jwlNo0kekYMKVqRxmOq\nyG72WYoITTsUk099MEvfE8WlopjIiv+7rKRTYghUUFVMXbiN+Y2OlXYOn/nZ\nid3d4mY608RDfqG6d9LMFnv/16kysGQwxEv/UTh9PFTevzREnP+afJ//gVOd\nSR4PQfZUpuhlO3YGDPN+B0MbB4zwK8BOC7EcZ6oW3gPLSd3NRI2zE8J3Pcxt\nLrPCMlk8JfVmMQ4McYcQc03aQ+QRCz+tTIvCgPDkUtpQqORa3lplDTvsPRVF\njy9w/Al0WqdnI5dt05ucMLBV8q3f6F92N769lkNKFZe1fzx91MiwK6rYl9W2\nQgpG90R9xwWy56NOe66+36g4UDlLs8czHznv0FesiNDeT7CfmkiTNwYqLGlw\nR1a/YW9ukm2liQ5d1tQK4mRKXuOah7fS4QA8/k3sQrCu6hzKnujCLbS5JNTV\nUpo8FbC7xh4nnsLCB4mJJMeOv5tgz2BMMgriePK8bBhLAp32DEcaRC7IoM3R\nwzRe4dpmUaE4mYR02lAOL9WdYyO75Z0Yh67ZttcMElNS0zM8wAKuwVHqdspx\njul3oLpFb2fGKSt10UW9g5tQQDq/eW/eyDPtqMnci+AilOMprBGZyr1FELyi\nIMBOGjNNY1L5++AWjWNxYnz1Sx17+Xb4+QioNQeeVAJRrlKdmNIGmRhGf7hm\ntiDY\r\n=Db9T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJbWOKkyLNEXzMFzeSGYShq6JldeX8h7/5hyWY8dwZvAiAimu28KdKXxtHbQAJFb2b+HQ0iP9sTXMvnUONWUo16Fg=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.21.0_1559850927371_0.7780436759358982"},"_hasShrinkwrap":false},"0.22.0-dev.20190806":{"name":"@fimbul/mimir","version":"0.22.0-dev.20190806","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0","chalk":"^2.3.2","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.16.0"},"peerDependencies":{"typescript":">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.22.0-dev.20190806","_nodeVersion":"12.7.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-eoWpM6QoR2fuEFvulqiN1fGCi4Kyr9hVigkH3gByUBJFqlvp2twbx7M/BfSy1AmH4DYEPWdbgWRfL9gR43PZzA==","shasum":"84a505a8c594890beb7f5e4ed515664e8f18d493","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.22.0-dev.20190806.tgz","fileCount":155,"unpackedSize":417570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSPpiCRA9TVsSAnZWagAAFz8QAJu2HHiRjOw0rnXoRHIl\ndodhC1FaBOkRChVdnrmcqkAZsM/h9FXvlfYGuqskmWQ5rda9AqknfXSxpUB4\ndTRMVxLTYI6i7vRkB1kwmZt6Ym2hI06GNqKZr8IfV8aM1ijCP1RFmNhJXFNo\nEbygNPsp0ZqI5OsUA+mqv2P8Oyedtvd2YOijVHhuZ4G9OFDgUYEJm+vDD1lO\nwF2vNKd/cOwq62CXO3dyWNoDt+zYtKzK2TnXF+a4K1krrQow1q0wQTyVQohf\nvTkoTcIwM3U0L8JcvF6+wx7e4FHJ+IZSZ5oQJlpF6FxuUfD8J6cr4PYIfTLr\nTyn5hrXmhgb3G6utvXJmxxPiSsRI8IMbGCe6n4Oz0UXohEKKZd9HpxdoltpK\nyizq7DoKda6v6cnTb6HRFHje0GQnHnY5/8toHa4gBuv5HuN0nbnXlNLqewRq\nxGjIEAfwE6aLmVM/mFKuaACRVp8mvmaAXxfWz4m/mXMDyR+OncBpq9EaZ2/8\nOQFzaiducBwcVankBeCm6SJeDeFFmCgj2Tt8RM/i0sA0bcoFyRO9nP101efb\nmHH12ptEkzm0OOASQbD5UCHDYq+49cXNgq7pddss6LHyazjYdg2TW66blnk3\njQJv+5gjIziBZNj+jj2/6xcKoq6kp2+7THhyAHZuDfCbwC2mHfzNkKAKbPDF\nQ1AN\r\n=ZLF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiH1t3HkOyVP6+9ite35tTcbAvOyj9MBmD41X0WqG9nQIhALcPTojsQqJWKzOVrPVnhtoMNpu9D/a+AnI8xfKf1lVt"}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.22.0-dev.20190806_1565063777189_0.586815997285429"},"_hasShrinkwrap":false},"0.22.0-dev.20191111":{"name":"@fimbul/mimir","version":"0.22.0-dev.20191111","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0","chalk":"^3.0.0","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.16.0"},"peerDependencies":{"typescript":">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.22.0-dev.20191111","_nodeVersion":"13.1.0","_npmVersion":"6.12.1","dist":{"integrity":"sha512-w2Opvq9VnCzJy+55WO5FxiduNC2esITcTcHoWHd4EfGun0AoNBDl6wbc9+/AuabkoqDe0rR+S+fd7BDjn7kjrQ==","shasum":"3ef98723e9d3da46b064ea318315c055736f06f0","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.22.0-dev.20191111.tgz","fileCount":155,"unpackedSize":417478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyOkuCRA9TVsSAnZWagAAgfUP/RFvfdj1q+Hsw+95S3Ho\nJcqiVrD3tSa2h+918fv0e6NsHRYbGw0mQgr2UF4vnmDRf7pWru0/Px4ZvLao\nTQl+/f9tphHWKXXtbbckd+fmmfrMq/d4TAtga02fnBMVtHTrnzj5kc2qr19y\neVHh1oGFu6DR/bz5vmxJM6tONvI98pDucVBFX5MccxS8G2+u5BwqCgDMpHVe\nYQX7mx+gj+sUR9Ewaizjt0MtIeLBBOJC/e40glMmcVCYbzG8xYK6q4bRivlt\nitol+bjRbvABL+9UZZ/Y9Nknbc0/+GgTC5GSDCCrCzq5It8+JmMt/bjsWUhC\nUl3McgDFjRhzsokstwQU9cE/rOs2g1rbrJOEepf2dFbeo0aA7htq7eP/42x4\nT1QCOTx1oKTmrgemu5tORM9+tO4dGomL+9gR/VYciS8vUs/Ar4YNvaou4nkH\nGzUCy1E9njpZAYlSeKMTquZf+zQsACflIrnccGhlej5rNftbqS4aIY1y2BYW\n7cUV2YYG/OQlUZ2jvuO+Dk8k59bM1l3J2tQUftdUQ/bMVAMwovPVKAtb1m6t\nhnTnE7WcQ9nVAfr05C6lVJrwrlQY+LVGe4qjPbZXn0N5dUKKEAn4c2MO/vd7\nsiZs0St+pPNlYtw3aEYHdoNkQxtE60PUROBdocqaxHLEvK3FUHirRpuaV6ow\n36jQ\r\n=HWjf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAvnr7GAEW2fmUBXb0TGszOM61DQY1iaGRvq8d4PwhUAiBuO72frqeOaAFm3xB4sbpOEdHdKFxwSn93GG0V8uk91A=="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.22.0-dev.20191111_1573447981510_0.6947136116794419"},"_hasShrinkwrap":false},"0.22.0-dev.20200101":{"name":"@fimbul/mimir","version":"0.22.0-dev.20200101","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.21.0","chalk":"^3.0.0","debug":"^4.0.0","tslib":"^1.8.1","tsutils":"^3.16.0"},"peerDependencies":{"typescript":">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.22.0-dev.20200101","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-vwY52UD53cAcmb0csugssfMK7OCl/vl5mbhbawHadG5bd4NKkE45GEEPun+fP37RACd6YiHeB/CPtByEr2MGRw==","shasum":"6fe87f3ffce4abb2982583763d92b06d95e44f21","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.22.0-dev.20200101.tgz","fileCount":155,"unpackedSize":415355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDCvUCRA9TVsSAnZWagAAaHcP/35hNJ63e1lowYOP0RQu\nn17gFHBiIBF3JIuh/M+KDUm15SKPy/E3TBzosnrfFUcpdfC3hVfcAT9SrJGB\n3KyN1KFhVaG3DzQ5NXnFbMxvaqxIVKmQZ2pKDiS2vEJfRhN1wgRjlyWcd7n/\nFZogdHQaUv4kE7sFAghA0jiylswfVgYqkfk9nMYJjEweVup02qGISRO59mac\ndgF828KrB6RCqwjymYLOKVizK8R34YUTfKvGvHNw4FN2lFoQagWJTjgAR0dd\npcxMxxhyKhqaX8EEKJB8mg0GeA6pod8F0LEPDu+KLjvDjQeqKZ34eLUAC+Pn\nmOvClE+Zxd/OWl/sF/gGEOR/OkJvWLT1LHRPGPGGB7ilkhA7sOA+XAf2Jq/4\nq/g0DHQIXWD2ok1DmzWisKyO1s51V5iME5F0FsjUbd8yAp8T1tNNxmYDfDgV\nED1gwyloetFBIaFlLu/fq3T+Z2zYaGXtt4sWhbxvOZA22FGHCeJ/eoJlpoFx\nIqY1JddKUflfBlNAx+M4r2QkHJqPdVDRAZhZ/Yb3Me1Kp99Z+c90NNifeobJ\nAA6+bLdAovEgSr8D2MoiXtxgSLUaWPYczMzr5gTsDlQr9CV44m3tu8I3owyT\ndZqdlwgyc8Id9QxXcEbzGoBc0vKXpwWx7Z98x1A2s7XCObsrm82T3ags7TZY\n0ppJ\r\n=wOGn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYAvWp4vOUSLMOi2CMT3Dhy1gI0mvFKc40B154wRK1DQIgf28nkXgmStF89+iZPMvIsiFcBbVHZfsiPWj1TUaj/lw="}]},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.22.0-dev.20200101_1577855955664_0.9774599384140186"},"_hasShrinkwrap":false},"0.22.0":{"name":"@fimbul/mimir","version":"0.22.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.16.0"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"_id":"@fimbul/mimir@0.22.0","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-qK9j0xmNm0bhejFLXLPTBaG7ynzfOC6zSF7S4OjybZAVy2uHMvt8mGBevNVMtljB8b3rkm3pUznSk5Dio6Y9RA==","shasum":"e42a52d7b460e20b43d264969ff32c782abcef48","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.22.0.tgz","fileCount":155,"unpackedSize":415831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0NczCRA9TVsSAnZWagAARRwQAJ7lkyyIIMmAI8F2S3O/\naYwqjjn+jCpJ48k6tKb+dc6DCJUrP8tCvrC+yu5HYrqcPkcvlATlOtbKtxms\nX85hhXkmabNRF+StFYf8tk+4pVeb3xFhenr31dfBy4F0aPbRICdJba3hNLey\n4jptpvs9FGdAJCJF93vP/9bVky/BHzXgrmeEsNGfu7x6sACFbB4vc+1PmzBD\nqsZk/L874EmvUKTHjsUVwhhBV7jVuZiZTXafWiijjG5zG5/4xZOVJPmZSK3E\nx5A7CdUJbYNDJPQqL794L/17ORyox8QrCbJU0lmgtZ5ch6Cd7Y0PIfulNaKb\nv1vPDevsY5Sbwx0D+fSNANWs0bqSb1JQ7TNq8stbOdX+9VVrkMZc/xKZgHoC\n3j+y/mR7grl3DY/rbCbi/dt7TyoDsIthc9XkUeVaLkcgzNoKvr8EKkbQRw5p\nvucM2w2c22uqba1md9sIgSWY5nFtwej4VmHjn7ZUVrUnqaNlVEW91vewY6lE\nnyOCK5xQ9ZxC6043jVA3CcZt1xjqtG6XZjT6pefZLScnoBIf1BXZZmYcuPbg\njM+EFMVKZHmRhLzdonPW+3e/sbWRUdX7XfDUwbeKOqQJjiYb+ng5R15+GiBm\nxUStIL8wQk2ps4dnklb7NYXa6j7BNkBzVGXb0Nslr8bium+X+Fkl90PZxrKT\nYq9q\r\n=8/uK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDlQiN7irnSMiOw6lQzDnmug8fs6eCOuP+GA7rUee/zAIgcniBMB7qItQh/mauI6anaIpNuyjkZ/7OHR44NI9nki4="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.22.0_1607522099379_0.9347355437046194"},"_hasShrinkwrap":false},"0.23.0-dev.20201218":{"name":"@fimbul/mimir","version":"0.23.0-dev.20201218","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.16.0"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20201218","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-O3nFWtFt/jjmh57/dk+0Yw+MxsqlBJ82wR13RsYFCFbWNIbbalEQeFPwfnumgI08ZW/cNZnbQ4jIUTVc/IWc9g==","shasum":"99c2d8210919ee89a8d6b23ff5237c6da0f9072e","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20201218.tgz","fileCount":155,"unpackedSize":419039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3GR9CRA9TVsSAnZWagAA6FMP+wU7bCNV2RhykId0KT1C\nfMAE9Q2zB1oRsU9CgFJWInL2/hI3JfxpjFurOcohcU1fzx50XYSlL4Lrbs/1\nnfNUBIQ456lnAFpIn2r8W9g3iwSKmBpMzEwiO18HdiHqRJiNq9UyT2cawA3Z\n0Q1wbsHIbc7kAyJJHT0KPy3IxiYRIn2YdhHMIdc6r54x9BhFInXa/2LFVVxB\nX8fG4RLjT8YC/QJB/fwSzvFXE9WBsYZXzm2vnNgYb2Ix0V5lfVpEqNi2hmOz\nyv0Nst9l7LqnPUD+AyKUwmmwXrFNdcvJIxDLf/MWF1/Tsz3cYm60XQwCIatb\nTuB8poFSSIWMVPA5ArRxFY+xOuOGPARQD7rVLieiO5SEDlgCAOf2OYSncTQv\nwpI0dD0xhkbQWOqgWGhyhopFfn0zbH0VjWnWesacPoVlu+tSr6H8clIwh3KD\nO28+EcKTRCbnZx9Y9z1q+u9kDGvkhm3Drhi3pPSokfBIN4X6qkYBQxgdFq7I\n8Q3qgKi+Aa3WKXuVJF5GGTuJDNzVG9W7yaK2veTl5znm30sc99D+GlmI3+84\nno70/ltG6EnZ1E/8gYgzHDFBLMSehkGgXdFlK9TktSWZzzuPYs4JkGCLiAtY\n6uO1V/wHf9ycfORWzdU/p2lYom2V/boajm+acr1/1T2xYKbQDN2gRCgE0K1v\nIVt0\r\n=gHaD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlpaK8n664+KlZebepxuz3S0ix5Z5JtqrtkTrQJvQV5wIhAJqw3i0XJDxx1w5iDcDFsNdXkAAsqyYndTYJ5oiIeI3N"}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20201218_1608279164895_0.5849911026509214"},"_hasShrinkwrap":false},"0.23.0-dev.20210107":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210107","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.0"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210107","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-GnsxOTsbyFYsG2XVuWZeGsAWvG0tmwpoPYlvx/xBuOw+pJp5+qMN4F7k4hw9cXjt2UB9AGsI7ylrxWH/25LSqQ==","shasum":"3295fce7230e913e0f545ed9d4b0fd63bfc4c230","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210107.tgz","fileCount":155,"unpackedSize":419398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9sQmCRA9TVsSAnZWagAAYMwP/jcXmYhRldc5k9BGo+Py\nyeFw9pgt8Q9xtWL1lrYLqe+L78TjHGWo1UbIco5BarV6Zeprju6PJ53JGNDz\npN40HQAXQkUZD8qAqZgqtE1/IR1fhBQrtQLUsj6z0yOFQbSPs5EnW3cLUI9s\nN1w5S5y+oHn5lZEIDOaoALuTXS7ztWIr58/kSOcmgahxkx+rB17b3tLXtvEz\n5izuyOooHbMwswMovMAUCY+QRShp7YrhXEX9hovN82ZCFBCd+2a6zwtIxppL\nhkaJeRGXVj7/N5AqP+ZBEjZWTfMujEsg0dsHiXtt/cwKbFRR53NrACbclXQE\nXLZcsJBcw1ztQMmCfELkmJZncQbObbdbBwN38lmf/ICcsjYCTUyxjf2IxNvx\nL3QUJWBClYEvMS4x11mF3NSsl7fjSnP1JjT4NQS0ovm+MVN4nDCemrpFviDf\ncYNnPS/A9pfin7Gacvce2GBy3+2uiyYYZas4eUmTA4PDq3Qj2p3YdZ9dqPUW\nas6t568GYzxEV+LM/oeDSY5z7uGJd7IVRYCq2uloOs61vhjgg8qcqbjelXZ0\nQkw3OP6RX3QoAQngd9dnfbcgUbpG4Ah373S0JAY+NBNSj6NrRUXaT0mUASnE\nHNe/SCevTMK59+7KqeDAp0Z0kQUp9K3XlcsPtodCzJOsPvfNuhzr2po00h4T\ndb7u\r\n=FqdH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeSY4BeIifa5wOhyn2iUFFkiE9Hn4qw7q9UAVhadT0ewIgGaeXQ86LDNj9WVVI6rarB/6q0vE8Z9s1CznlhipnswM="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210107_1610007589543_0.9756909514080361"},"_hasShrinkwrap":false},"0.23.0-dev.20210108":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210108","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.0"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210108","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-LNcaZ1fyARVwq2txwwfsEfscWKozB8xemtXDAzUyNSHgsRA1zlrAkKu85Lh/tXJsmqqENcFtbFs4KucKfikV/Q==","shasum":"1ed963df402a066ce3e1656a8093d509ad840fb9","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210108.tgz","fileCount":155,"unpackedSize":419382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+BXYCRA9TVsSAnZWagAAx+MQAIeLSolDD7D1V9b8g2/8\nRjuVOBB6nSYCwxNXHrQjNJm1oiFA4/uYSEeNEUxOKE0x3U2TjH4Bekld1g05\ndTBhF+ZJSZfp1D2SuIZap41gOfeoYJHOdaeAn0DDD+4DFR/+TZC70BlDYqNf\n4kWqzqaNcYLqecswXDhp+Hwoi+uAi2qjKC60TXzu2VNEnePj9KYRbzlMrBD1\n/gmkewoplr/S1jUsPO7Pfm7Bu+2TxZ7J7nt1eGXj/YLthNaKHBZEgcZ7mhWY\nLoM28bJBqLn39UTAZ8rnJMAGpAjKLFWO/PKXLGkow/qSfy1FnXEW0+9muAzB\nLXcDO/pPGJRxEAC4SX3ZQuewSYpn6uYkY8G4KxGLj0XyMEZnCzNu1zXm3bkM\nTOZDt8GW8Bo0Esh+Zkcb6uNE4fi+8SjApbdurC5rlXTyHxtchpfqHgt3etCG\nmqFYF6PfBUkcb3ZVouN1kMR+b/TVkkGEuX//VJ+bzbD0SYEiP5e2hmsG1ArM\nWU0yKLSYcf5N/Ek0lhvsdtj4G4ON94Kjk6WAWs6OFI11MVCtqGwG2ik50wDn\n5mdwqgmA5sdjj7wknxf1+mkJ/wF9fAvk7woVCA/9mAkV0VFwMKrjYLPOdAsS\nutgga+djgDRTKCgCXnj2Ac/o1W7AolIy5n09HHt29W5kso6PfnUuAjHbN2no\nO7qK\r\n=RE3x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDD12AwetTpd+9ACCol/LU7WUeMDaqa2q3RoAQoH+gdrwIgEoaVxwF12w5hFMTsQG60X68SFsiqcHOTYrkNyRZRuHw="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210108_1610094040263_0.2536729079782265"},"_hasShrinkwrap":false},"0.23.0-dev.20210110":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210110","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :wrench: Enforces the use of `obj.foo` instead of `obj['foo']` where possible. | Same as TSLint's `no-string-literal` rule, but more performant.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210110","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-cnAlwUcVND3O8/6LkjF+v3pmSbn2pz+Srm9c5SAIPlBWDGurTGGdeMhTdRP1b26vM5sY+1+NBJI21gIBXWfJ9Q==","shasum":"32ed667e4879ac6fe5379cc140bc09a2b387eb31","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210110.tgz","fileCount":155,"unpackedSize":423210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+rkBCRA9TVsSAnZWagAAbBMP+gIm0FFuokCwgI5jfqYq\nSjjmmp/ypfklplBRdjNSxZrOhpWBuzK1fIl5zQuZXY8r5QJyuXSuRgBwBUw6\n32nUx+Rl6cmT2CAztsA3TYsdEEeW0qTVjq8YII7TPrRS/Rk0lKNeKXsGYm7t\nwKxjiZrayunJiOLiFjHHqLMcaYlBaFYZ2p9X4sil4O4jWBWE1Pesgy3rdscL\nnm+0maaz/35m+ESxxaw8Kz1vCM0iIDYZGlncNQBEh05wQbWE4hOF4UpSabBM\nKLZ1x4qzbXQ6xuFqcWAp3cJLiV2LqgtbBOQ7PHD+niGPs2RLUJCZ/tF2XGjo\nyGjiRQzFpPJsW61VFByapUTkL+Xv94VEBKQxVBr9gqJ4XzXp2F6SeE0C5FFv\np3o9SUDzliCixU6O/xg/FYzjkjQLW2wJ0h7qw2z7E2/xkwqBorEs5ewcSuDV\nh2RvyHQD0USsEoISIu0xcCyBlkp6siLDtNOpyAMDR9L46rQTNwyFddSCvrLr\no14i+9K05Pg5bKHlDvla/etiagqXA8jF4iO7AXG2nOt27jeoP+N27PAY/zFM\nPiAorWbSwCPgLrn/j8QHUnRjq8YmxAX3EjeZxWa3F3UPhJS+r2dgKBItDf09\n2H4mJJ8/QMJECJEvJTGqu2n5JrAJSqrtb6lsIBAfeBoqRM+A0RoMk5pMdhS4\nD6Ne\r\n=zAce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDLcnPpj1cQ1BwKBFkP0nhvB2k0pkC/fQnYiDYByalfyAiEA0tgjmuKI0DdNq2Y8jSyAE1MBs8qXWCuwGI9zyGmXrY0="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210110_1610266880513_0.22157321593467483"},"_hasShrinkwrap":false},"0.23.0-dev.20210111":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210111","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210111","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-tkXAJFoZwYqPFZnOE4pY0wAWEonb9xHHLQY+z3Oo+yjsacF5AIGkO1QIBJsTYuDrY6pg0o+XUnIt7Grn1pVlNg==","shasum":"030e03d148e38c04ed23215dd83370679b12593d","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210111.tgz","fileCount":157,"unpackedSize":425379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/Aq7CRA9TVsSAnZWagAATvgQAJ/9wwuj8fM+L0CJgwW0\nlitWkNFTVmznI90m0RZSpoeC8f1bnO+CD0QxFQu6rtAHGxSXLp78kp8lJb60\nK6Ss9P03gZVyZ2Dk4lrEUpXcfGaDAATZez/ZZf+uBMQWBCx1OoKZdzYXf/Zt\n6HfkybObJMgPo71uJg3l0n72UfEkOG4c0C1SE7yc/HZHYXYSaTTvY/8oW3OD\nkJTI6NjWWELIYT/Wb8vjzOhKWKadspG89MPWqSiBRo5Jy1XpL8ize/dlQBf4\neMz7QFvmviRE7o0TTSAH8+KozJDAnnfecP4n4UHwERN4CTwRY16gjI8eiw/t\n6t0GqYIAhPXzj29Sqv2xZ+tEKo+ZAMSVxbXU2XajE9GptSW5duaxvjbGuk0c\n0PPbsFwH3vWEUlb4iCdmMmTB6tA7NGlljtvFSc9TlXMN3ayvVa+0f6SphAmY\nOzTRQK+L6aIvc9dnVlkCW4plqdsDZXje/2z2pMJ4TSC5PwAfg8IAxpnUUT79\ngT5BOgppmUlzBEHlklY22RVaQMDWzPbC7IIiYozw1bCExWHESdEywuYHlDak\nitKOm/gOL9wr7dQrkQn585ucZ/ET1e+UDtOQShnuAksSZdgpImDH8ijUDJMF\n/n46c0d5r4QoiV/ekxsZ2ZBhY6CGxDruVpZ6QLtTsRUWzl3G7mCY84C/0iu+\n6SzX\r\n=0eSr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhB8LB+Bo51ia3R3x4n3EZj1pI8GgD5+AYUXEgziL5AAiEApU4F+vYOIBe0mBN2zqbxyiXPsRbUXBT4MI9nm4brmHk="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210111_1610353339020_0.6462946152611946"},"_hasShrinkwrap":false},"0.23.0-dev.20210112":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210112","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210112","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-Xl9hYMrh+wKHpOP0G+Ce6MOPpzjm5MFpRlO0arRJxXlDNT0rfaLrLmlnIjurAmJF611h+yyLq8oeqjT9wxtZvA==","shasum":"f4ac692d66991a379359d3ce1d3892d598078d02","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210112.tgz","fileCount":157,"unpackedSize":425881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/VxSCRA9TVsSAnZWagAANb0P/0/G0dxj95ro7WAeEECy\nZJU5fcw6b3/6NO/2N+6bUVcstQIzo+1kV3iCcB5znC4mNIaxucLabgkOHSDy\nV2e30yM0SAUO7PX0vqTPhMMFfzPCgohNjhP4RLt/JX/4a+pNI4p1DsBhSOEV\nbYvyKRKM3cuKuRU+VH0r8L9G+mpnbhCO93vCK0W8ZlUgqBq4nT4PeaxsyUl5\nC3FhxRIikMGnHFM8aq0OepfjL4xFxudV/TZEzZP9kCRgdAgn7tSEpcKG+qbG\nN/vTiTmlOmi/Iy17U9oDGDd33hQpx3fpG2fyn/PKg2oQ5fUZLXnselgGHcsA\nQAKtUxPRbM+xeDjZWbowXcXE8L4zNhwqyN2XwLxG14nDqm1cjF7y3Z7paePG\n0h8ENc88dovIjJOrO2U/V6pa0RQTygoTyUf3pYQjopzJl9lTYR/fUDzZo9MC\naf0oPKLRgARN65PVUvezhTbiWB/e6h5uLylLn7/36qE09eu5kM4e55Jxsi8o\n2zUsvbtrgiPNaOC1AEPk7Z/MLxzcFtCQGoprGErtJ1dMfB5mPy0yayC7j8R5\ne1m7uDvibUwF75jV1TGFhkHt6PBTpELxPf7qZv39X/Y3nmVpM5Dp68Ff0tA5\nT4uRCKBV5HbxkPlCoRr+Pj23EG6d9Rh9kV1M+52Ga6uH6esKRXbeIjJAeYwg\nlW/f\r\n=aVn7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBwCJmg0I62tlv5kC9hmpXHC+BINnFEvD83itO+S+x2aAiAP832Y4YoeLVZamL0p2jPIinAGB6roCLPzDXtpyuSXxQ=="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210112_1610439762154_0.8858731351016926"},"_hasShrinkwrap":false},"0.23.0-dev.20210114":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210114","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210114","_nodeVersion":"15.5.1","_npmVersion":"7.3.0","dist":{"integrity":"sha512-BSCEHXbCnAsTjJ3moWRyh9T50XcbF6Qgu47EljF1BhamOoqF+tFRpsRo2Ag3xmjGar1hc1jcChaP+uz8X+ZoMg==","shasum":"310755cdb6907e86eeb8af7a512d9aad4b56e7bd","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210114.tgz","fileCount":160,"unpackedSize":432280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf//+0CRA9TVsSAnZWagAAFVcP/0zoCYjiJlGCTSbhmv9E\n9kpx54gGEiKtmHm8JTvUz95HtO46bxKoGcaUsYMyjz1ai01dF7xALDxir3d2\nKMDIba0SGYB68N1YigucqkJsCm27B1TPW7hIEMf/3UabZjM+ecWnahPfj+qY\nFKRV7GEFLR+kgj7MLFqxgWn09SBaoGUCC586ILGbOML6j1ZFWFIMkWONanOC\nXMNLrebAkn7e2IaHM3TycbTJjYkX6KuIpHsJWla+iRMIzRHjjErQnIK0SFuQ\ne9zdl2XCaQv+Nap11bbhK37uOWdf4Utvb5IE8aOGlJIIMMKzvE7mC4O5AMms\nN1YE4Cdj35MrPAsRXyvHyPbZJCfGhE1zNgFpDWTpZgetf06hl2iygo/H3For\nsdeDn5NwhY8yMgsXnKa9IkaQOqX/KhM1mrwRPTR8SkbfbTDINzpg1dgRq8YB\nO9H5LtTOjt38teVxVQb8kVVrPjSTdFSCOrqPfjFyw0E3ArPY/t/Rry4QEJ/c\na5MlSXB4FwJLElgFQkY4uzvEnAi76josW4vdmnq6LS/G5GFBVNApW/GO+/ES\no1G4R2KZbS1feZRaIaGf1D3qg0U14/kbsk8Wlg42/ddeJAPTF4mmoO0IVEnm\n0fy0FnDG7w6UT3pqagr1JVFmt4DvvahcK8bOTMIH5PVXbZ7D8cFxlcZPqY6y\n133c\r\n=zTHG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJOLdNWiLSXY6ApZMTGQiIvjA8Jl3Is/OkdGgYLuf8tAiEAyBAuenJ2xXPwcty9dijdLatM1WNlzwLZeHfNwR4G9nE="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210114_1610612659654_0.15965495725457646"},"_hasShrinkwrap":false},"0.23.0-dev.20210116":{"name":"@fimbul/mimir","version":"0.23.0-dev.20210116","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.23.0-dev.20210116","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-kSdhREcAJCvmmPOUgOml0dCwuTHq/30kEAhXT1kgn4GnFn5Q9TQmQF3Rta6VnaCArOtSZsHvvCAJIFYThJhYaw==","shasum":"c93807aa2f8b942a93467b1519c478951189a3c7","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0-dev.20210116.tgz","fileCount":160,"unpackedSize":438647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAqL/CRA9TVsSAnZWagAAWDgQAIUSOAyvBCEpXwBhCk8J\n0JEUSIkSlQbR/1djkWw6dQBzpsCmrKoHc8WttceDUxNBPeHrKYZ7IZBqeI9X\n+3DA6vtJ+fD3bd02Pt1ezgGkW7a+3uCuY37MjKaEXcqdStd32EWIAXsyXivC\nvvqj0c6aLiyEXdZ6prGFHSC53Xew9yZZM+yOgnYygTIoREEESjYnq/hjaOie\nfkWgIDjDi2ciQQZ8bjQt2oEYJyh/4VRy+pQCDc8uOpCZiTq5mUuTiId59lFs\nu877E3ElQ0Uly46pDZ2fuWKZRSSJ028a5O1gg3MbftofPryx8AKZOr8F6b1u\n7Y8kJRWM831BOkbiPEmyZxhQSH0yF848OYMlq3/i3nTDF5k9g7QkwkrPB4JG\nijG0pVcRCGbUtdjXtxs6geGFzj2foxJGTPkY/0ZFG079HXXSRMFzaENikfws\nimeRfQHK9k1YQiUC/wKMmCMv4LoUAH1zDVPsOw42fJokVwTzDRqpknleDGFr\n+pe2oRt0kuhWHViaQtUgPQ8qUbVg77lELSlBS79DVz0kbQbkRucLa3I6x6H7\ni4RNggXyGvXYqIVv/2BlF4A8f2Re0c17i7DaGfgKTveni0KZOXpUNJlqPIGK\nG12DGQFP9M7l0S+axhQcpApvoqovBuxBpucBwEM9oXRv+wDtWMlSp2FDmFIl\nmK0k\r\n=mjCx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuxNYcufYboRDDN7UFoN+7ncV9wSy5UEqDq8bhWe7gZgIgZSUlNbYXDunEYXgYfRrJlS20qS1LRr6qdaJcr01sLGw="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0-dev.20210116_1610785534977_0.28789687833475086"},"_hasShrinkwrap":false},"0.23.0":{"name":"@fimbul/mimir","version":"0.23.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"_id":"@fimbul/mimir@0.23.0","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-d4hFD5iW0WeF2WJ0+llD+glyMK9I4CysUonXpI08sCDbWZZCL3LCwu0Gy87fhghyHi5TAMOFMmFnHbBCruiUHw==","shasum":"f62c69825245a634292c53daffe2844abe9a4144","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.23.0.tgz","fileCount":160,"unpackedSize":438635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBDbVCRA9TVsSAnZWagAAxFcP/2xr6cRcZWKOtYVdf6Ac\nhqbvFTMbZpLEDhNSB70ta2emC0YXwb/qVf3GXE59UCcWStfU5QDQfgSuDGRu\n1qUgKQLCYMo/m81j8C+jwMkocgh+auqv3ahUGKNavqjSYMPkofmVfjE3C6g2\nuwQUunwruqUz0rLe1hXYH+rjA+MUjsbp+ut2C3nOdZ6Fc1ul/hUkBP5mL1rb\nqZeb4X9cBKbRmuX50qTtu3VQ0JipctkqfF9of9DZVUnM9cgNfTPpE3CKOoEw\nEXKs25lKkx2Qst6A2Hx382q7fUZRTBkV7eT1Sox453adA5SXniQePUIOC7pl\nu4MEmndDTwLSwUkktQ12l8jH1SuEXVuIqQbk+9ymtqATPrBqbumyDSfaBS7X\n4qUlKqDP4PbBv/KkeTNy9OeX93Rg4dyqXwpGdmEN0GMU9LYsUHzmZA5bF7Wb\nbgZLhW+RWVETF6J3M9Adm1z6nGrq4KLwSO+iGf+1djY/JfE/vX+yQoN6Iydi\nRkGJNoeRyhZluJCuZ1uQg5vdLrfgtwzD8z8ZT+zGC+vnj05ogB04iihJVW6a\ncnvIPRfnX/WnWx9ISPhBLxrhGmQGSwVFtoft4zMV35f9dOD9yJRTq5/X5E6P\nmo0Tg4JmG5t5P9tMXy2H76u0GnsZJ8m0qSH81vGPbtMhUG5APNS5tO7m03+F\n8wfU\r\n=4dQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSVyM7ylKp687Fekt8WqqsufbbCkyPvmw78njTDDaaVAiBdMtk2ON8K8zR12UgtjXpKRIAkb1cqXncOfKhxwDypPQ=="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.23.0_1610888917427_0.6843974314281751"},"_hasShrinkwrap":false},"0.24.0-dev.20210120":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210120","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210120","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-w+zBlqfghgRRmInJUsgK9sITZqOp0WB19wVybsu76u7f/F9ck8OI6b4+LNcBvwcn8AMKeJqF2IWvD+vHWdiSdA==","shasum":"be08e3d4bdea0e69c12db0f7e637e1523ca0a22c","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210120.tgz","fileCount":160,"unpackedSize":438671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB+pICRA9TVsSAnZWagAA55AP/3ENrjKHsx+yJgxjbzbA\nVmcRyow/bZcMgOXkuHZ6mVgSFk0SlyEj04DqaV3Qkseub9rRwRv6ZsH6JT1E\nEeOgwTCqEicW6imtZh9VahKjGHNnoBHaA7dpRDvTsdZ8cEzuXKQfOCnegDTF\nAzEB4wFIDzfJmKBQU1XBgydwyNUXPVqnwpcaVllLni1N3P9iwSCDRD84kvre\nF6iETg7RhBrv1Ss+Uj8LvLPy0Rxz4uFg/E2ZVx6pZRNtzttJbLlT7Ww10p4X\n6CrscNYj+YZQGrCskDZBDY2cNEzcITeUHDWc4OAuoZdfeEIzek9rzyd3YLDb\n1dpHbDWbkeIxehpmmtDzyamZxKFI9d6FpSpIlaX27VIpZenxq4QLyxec3gqr\nx7dHTrocbbr0UepouJtBUUIHu/NPH8xfZzQQ8IiCqHNU2xS+uWy3NfoSSxhM\nnaKot4oU+EkeSjtsv93iufLYOvP8xig2k4mJpX/letrT7cDzqCog8eQyswsl\nssEFQjiSDH/2q5GSeOCVya/KWN0Mwlwf2UYfk/8zI78+5LmuI2CeqU5JFEoI\nt0kJJUM+laV/vccrArprXE3oZsKwpFH1IJEkjFQqFHTaySuojwywwY8RHJ1Q\nsHca2ig7LrBvV7WS2RKjJ6LoEOmZK+zS/nfzietu1kP1Nu/wiPqtXydCRk4n\nlJOr\r\n=73qZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDh1NlBTHmRTT0w+nK5UuWMuNpV3alRU4lnGIhYCS3vpAIgQ+7GASdmcCAs26NDn0OSaHN7U4ZY9ZcLsW0YT5Quxxw="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210120_1611131463649_0.46899839085583395"},"_hasShrinkwrap":false},"0.24.0-dev.20210121":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210121","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210121","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-Y8a4951i5H3mBkdXH+qpN6JIkDQWjbHcHuIqDALnOYTEe4tnbHlvzMbTMXvZDdmoEZ69UVu0OZfUhjJjzarpng==","shasum":"ab9423196c7d1f4919786e326fbed9caca672095","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210121.tgz","fileCount":165,"unpackedSize":442314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCUAPCRA9TVsSAnZWagAA0EYP/1RNLaVpbdFTb7P5lSsb\nHRsoltd32aKEa0J6yuOuJhzM7NkX3+65uEm5YiXBWsDZ4gvMESd/Sz3oosEQ\naiARg0Q14M/7oSsIgPyfCxXF6mJj/OqJs1+7YDP7Qt1Ehwtm4KVB1PeIOt7N\n5/jy1xijqj/1FwtS1LMt2hv6uwZUYr5LOfB1zzSM5WSvt3OMkUdPE8zUXpdZ\n/WXPmUD0uooV4X7o4iXcq5NJCBYQntl/G8lTHmgWTUy/+zos4BNWAMzXeFNU\nanIMKmuly4AZhzjFlZD/NH6adoZ3nliDbTAPy06+nOMwow5NbfoGYayfMZJc\n8+VYOImLDmw9TRo9JseSwo3eLYW4M4mutMXASN437odFgQYM4u/YpZ3OdQpo\neVBCPSwNjBYwpa9JGR7PIfeVuXnxiuk2oyDTOjWkxstwLv4TTabT++QPZhbZ\n7EGY5jV3N44NM8+524DgU29M7EoCgaP4MWyW+YQfIrOdHzlge0jNq8q7hNTL\nS1TNK2D5qY68BWD8NICFyFs+uy69rBQAYq3GPFC4NnmuKAnyBIfudlPww7RH\nSII978A5ukQB7pztVkGsLF+dhJMKVbQbPD02014sbRB2u66qiCG72y7EIaWH\nbryIRc3MTpKW4YVlNrTBm7P9P1SZq8Vt1Q94K/7KyyO2Gyq2+aclKSn0mZoK\ndPKq\r\n=0kqw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsq1UgL4eFrPylZUPW0U3ppi1nbjuy6vcfFjLt0CL2/AIgchMGk+u+QngFZbdQK1k/jOWE9wNCfTvD3RY4g7P7Nes="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210121_1611218958524_0.717999856755283"},"_hasShrinkwrap":false},"0.24.0-dev.20210122":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210122","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-implicit-tostring`](docs/no-implicit-tostring.md) | :mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string. |\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210122","_nodeVersion":"15.6.0","_npmVersion":"7.4.0","dist":{"integrity":"sha512-48igzV5prFYvZi5O/CO+WNmbyTkqgi4nGFcbPSpFHWdTJ7BMa605sEBBdqHFSOw265U9N0+IhDegI3boCJxwGA==","shasum":"98ebcbcdb9201ae84d1075c7bab314a3daac2f46","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210122.tgz","fileCount":168,"unpackedSize":452025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCpTyCRA9TVsSAnZWagAAKLMQAI+LnX7S1r6E0CFhhXby\n0dsBj6n13gtWUm5af8QUmfWXb4Gltq0I8L900WuBF4UvuacBDrhEB0Ak8kHY\nntiq3zPjBcivlz0z3L3bxY/mkaticiOM9l+pegDYIl5L9KaeXVERBm23DBDo\nXo9/U09j6ygCekcj8lUsQipSsUCVmUVim06n94TJuPJ6Ecr1h+Kfdah7usfr\nZ5Lgi5oRWWeikvAdNf8vgiF09SbYbVukETmgXXoV5Aw7n7UUObYK7YPWEEfp\nBYFL2vstspckQIkKAeKQ+mvV/lTssg3bHvM3GXvUwRRLahP9h3wZ9jOkuLfp\neNvqmz7MQKV/wK1zUKOT67u3P6QDKTV4twunzZa/l1F6qMJ5/cyCsGFB7A+n\nxwKD4FSw8PZNzmu1r4AsKli3TL1I6wpcouNwitWuJSJs6QKdNQz0BsClIxhp\nphtY5aTyeQHYbed4rdAb7ETu4+kmMnnRrVaGLmEaGuIFy73+1P7qRi39fcsk\nyNFHFMvWJadiq9zFonxiEJDEK+DYJeFg/fO2UkBqXgb+dWt2ZWQPaB5looLR\nr4cHFqPBSk25C+bxcQzn3mh7+U8O0lpjIxAV10NQczWLixrk54o24NhdYjFp\nb24LgfP0KWQ/6aUNPMJWtnl1DTVUWw5tV3VOKfP6CBA/K1wMlM5PQw8HtSik\npT9Z\r\n=/JKD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYrOSIFpPkNv6djXWemG+nG5L/fZAnD2nJc/tU7DpuAwIgfkjiq4VqEJdkSsMKEHJPtnHRPaWixuPYec2mkoCto9U="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210122_1611306225257_0.3688484521897617"},"_hasShrinkwrap":false},"0.24.0-dev.20210131":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210131","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.22.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-implicit-tostring`](docs/no-implicit-tostring.md) | :mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string. |\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210131","_nodeVersion":"15.7.0","_npmVersion":"7.4.3","dist":{"integrity":"sha512-HfegajPGlNv1E6sUr6FUceUjACXbBPCYl2YcGgjmD4UdEsF2Yfd3csYtVw15tFf3O1kgq/6otQw3PSW96Aa+uw==","shasum":"dc03e52e770cb5fc1dfbfad2fb2c64b7641ab4cc","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210131.tgz","fileCount":168,"unpackedSize":452024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFnCICRA9TVsSAnZWagAAJS0P/1a99xzO9o6zrSzvTSZ7\nPb0gBzkhRTWblDydmFmMliq/NP8RI2Zb12k8MqolUoRQupAXDmxQh+GncsMt\nej02+q/DYJHFD75680viyfD1VUcROaQ6gF3FqlJvNn7sLfcuDCeDA9NNCDOo\nZoeRK+skNnczVIq8NpmF0oVJkVXY2B9wAsEfdpX3yO+BHQAUrD9b/dSuq5Ex\nA+GtYJQeZl7OJrzYC/3sWoetydqvhpl1ViljFesD6LXYj1iAn9bkwENODgdh\n2NqheMAzh45eirH5NHDkyKBiwRhNCWBbbFncPKJmzfscAkTUOmXorru4ROTH\nAqFPK8t2byM1j0osouBYVsKgE7QXHdwdXJMArs4f1WMzbrdxJULmKvKIaBTl\neg7v2r7oOy9/szda8H/Jv8llejeWwuGqB5dXDx6cy2grbCbbcv5rjs2BYqxt\nKFMK79YabnQdLRHsSFOunxGsaUofQuTeezjwTL/8Ef6j7w2yg8Q0p9bqywK3\n9MGx2mDpM+M63+5W79vgyv8VbAlA+wxG8sAAb1KTrml4vjtRQQz8kBuG7UX3\n3470KVp2l/7ouFvwoFD0K2V6RGGH1SGIPewC9KP4mRohZ0HSGQzH0XxWDz/c\nKotgW+4jX//8NaC8H8dBrJ1YZG6YMk9VaInavnQhYYPhlImxlvLXDx2YliwP\n4YxK\r\n=grQB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy+bNWRV7C2J+qbp6ogO0ScwANCo4fOPZe7ojxRUOtUAIhAKm+h6Nlx7fDgUu0vS4oZoka99xENBLdQHzLKb5idbyt"}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210131_1612083336112_0.0010152938538794398"},"_hasShrinkwrap":false},"0.24.0-dev.20210214":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210214","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.24.0-dev.20210214","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-implicit-tostring`](docs/no-implicit-tostring.md) | :mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string. |\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210214","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-nPj+IiSwmcrz4ZdUv0VqLWfc+Od2d2EuiRNa8XRD+Xf/XTcm1gk77y8ihzAlwDJgyBkoF1y/AIjvgM701EVRjw==","shasum":"004acce37740bd61c9090d103fb81bb9eac86523","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210214.tgz","fileCount":168,"unpackedSize":451935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKOJhCRA9TVsSAnZWagAAuEAP/3VL5slYoTzPz4FbB6K0\nlv1nf0vZqFCqNeExq1AnzWxUVLNa8WNxHrfFZ79bO4Tpzw6E8kIqEi/EbAAm\n7gbqFAcni/xtB6pMtDX0Oca/4jdEUia/dw7yDjhOQ0xTkz0Nji9d+OaQYQMV\nCrhUtjV/WqVxhG3wGLaeR04CWZH+KE8lUMDYk68EX7S//iJm9lfIKj4KmhjI\n5nUcBkjLcxMUDU7OgnG/JyaTqE0k7GxpskwXUr4MipfDiFZdAmCUkovunXjA\nryclxXLFI1nOTgZ97iQwrgEvR3mZKVogr2LIKfT2OHiMnR38uivBi8tk9qFV\n2dy0sT3W924xz5jFrz+t5KNWBZ/nvMZ4ueyppbH2Q+osBvr5f780m/RdSAyC\nJ05FCVD3qcMTruNBeXDJSHJhbNlo2T5ufWouqj0pR8AySM9CCyTSI74Qvs3o\nWEyYSZU06gZRQ0MlVf7H0ALU82wgGjYBjZy1cR8pjHxK1YPoG61JPdBKQqyl\n+YvVWPEuYBdnBpl9m3h8bcsZJZ8SQFTm0aBR+rBx5nWtJkyt3/BHQzPOkUYf\niN1VU4sSFlOJodnqiJmnQZvf0LBwZQQHwo9oZZ2juxQKbOy/YjkIUuJIPTCi\nioEuYYYCpUbwNHG7FS0oHBNiiAN9oUurVK+3WWIN/PJkSnGEzXv69oVg1Gd2\numbb\r\n=vdXI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1XsdHIFT7Dm1B5JC9itEL59YQQuG+9UjO9BsCIKBwsAiBSkIcWawHc5YG4HsIqXTXwtPN4AGnzfbXn9TkVC+Xflw=="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210214_1613292129513_0.7016637021628249"},"_hasShrinkwrap":false},"0.24.0-dev.20210216":{"name":"@fimbul/mimir","version":"0.24.0-dev.20210216","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.24.0-dev.20210216","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-implicit-tostring`](docs/no-implicit-tostring.md) | :mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string. |\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.24.0-dev.20210216","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-c4gYLBERzOCStZK5k6ML639yXJlY4O4rXBvTlHSuq5WRq1buCxElxgSJRAnFO+bscD6UHlHhj2qxa9Yft6llPw==","shasum":"d14d6da42b96f2ea7170359d12f9e7322bbc637f","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0-dev.20210216.tgz","fileCount":168,"unpackedSize":451935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK4VsCRA9TVsSAnZWagAAkKkP/j4J6i1vqgE8/1YehBUX\nwCUjkKCKPSoRRWCW/8x/o4x9m/0JRET5SeBco6HL4ouCxz+UnH1NcVFciGTZ\nwL50c9snSslC/UX+oNGgE6c7hnau4oVpfu5Gkx7CUvMCODf50iFVixt4cvlD\necmVSOqHF5lz1Fc7owkd5w+kbhZXqWAfwVh1/n7jYf7Nyt+Z4xM6nJA0kxmW\n0auM7m155S3XSDnnuoWKrCRmiXMQqFmePNjJ+tabMg5+VdlGni8/mlsyz+PK\nWQQe28rfoAl25Zp60rIo52cjRvozRjT6JE+PzfFzBZX+tipCX5UBh2wSjCe2\nYMoFeoGpJAAXFKL0u7YhT3pBDWHaAnxdkZZYz8z0oz+eTKLGgXavY6YrLnsQ\nfnOHNSaTgOkBf42jXYJQgTub4Eb59wccIPymquYShTrRp80QMto2iMcaBDKS\nLkL1q4XK9B58bUvQZzpkzZPD7cz3tlCRK3U8Bmn0FznhMXgNzvH73RuyuJkq\nCyY9vzraiTYzPjVPu/zBy/6UlCBt+Rmd8BS+lcj8/ewvJEU3mPN35jTCSvCF\n2oE7b7bKc/oVCSTZ9mr/1q+VGa2kREAC6XyYlap4uejWe2KSaRE4uBPgqSGn\nOLXDUglr9r3VTGZ4oDpoz9j/+U/T73tCPJ0XiiEcU60SdLGrdC24aILI9zp5\nZ+j8\r\n=6tpW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDhkTlKMoiNIzsQSE6gcJY+3O8NAPrC8BklYwZeLaFuAiEAnsM4DHah1p8wTF8QUdEbIJDkGTMthodVE6twY4rXjH4="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0-dev.20210216_1613464939920_0.15708750663178228"},"_hasShrinkwrap":false},"0.24.0":{"name":"@fimbul/mimir","version":"0.24.0","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"^0.24.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.19.1"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"_id":"@fimbul/mimir@0.24.0","_nodeVersion":"15.9.0","_npmVersion":"7.5.3","dist":{"integrity":"sha512-x0xvAdJrHMtPxzwj7a8YCVi1Z42JvCuawNWEG9MCyJYDmOADSbRNW7VAAv9kugD0XGJkR8S2s4iZACwlqKIXOA==","shasum":"10cf88731a614851c1a6e844cd7c7136cfbffb36","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.24.0.tgz","fileCount":168,"unpackedSize":451910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMARYCRA9TVsSAnZWagAAOJcP/jEpauvnPJnPtooKHY9x\neRcfOsys9f15M0/m9q3za+YOqZayix5pSU4y4rVj3H1LriQcHwcPhSJgyZqo\n5+sFp7+b/GrLZjxOEgJ0LmycFbZ1XmGAwbDXa4/CwPeYwR81dLCpEppTL1an\nsCl8xuoa4yek8ddL/qieyITv3BtwPcC5gkP2ebrIL2du1iM0+pl6yCX3Mopf\nPY3Q+Qs073buPOf3e5RQke8/pdHbWzpiTHyaa/KVzbDSlTpUE6t7gnUdFkvD\nDzkaJ9zQNGO4mMUHGimsAT9OQcggySrP2PYj76qxJOTZUvLnmQLdYkFHFIjN\nVPbZX+y2EHigzdIdN30SnmlqolXIxtkFh7OgCrwYMBRSGSp3U3LJXkQGmnTw\nrIjLlSIm6ITDhrn0PG89Y+i4c3ZSoBZMyBsFmUziVN5CIuwdwgMwHYvUvEnu\no/MMZdBEUXS9OrFe5doP4yqkyehtjvaWwzceulxbajlNcebd1+o0UDehrdjt\n+FKV5joviar2HIRRYfVTi2SoLwCWpW1PD2YpaBlBu04yovKckFtI1rZpxedG\nHPCsJBLXEsgiPNzrDExlUIppCO7g4NJNiksabaDyki23GHox1AZQLSiHOPbb\nsookfvF2/flDl09XeNEBcyomYKtjDq/HrhPT05S4q2t5A4gbsFt17ttG5gvF\noPk1\r\n=cdqC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLoNLOFEONOd9g1FAnU1+Al/9lhrp8Y+TsvJU+FD7nfgIhAPkJpu8OmOSP/j/ni8jhQr0fizUA8Hx+9KkoJxlf+0wF"}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.24.0_1613759575911_0.7049147722943447"},"_hasShrinkwrap":false},"0.25.0-dev.20210309":{"name":"@fimbul/mimir","version":"0.25.0-dev.20210309","description":"Core rules of the Fimbullinter project","main":"recommended.yaml","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"keywords":["wotan","fimbullinter","core","lint","linter","rules"],"author":{"name":"Klaus Meinhardt"},"license":"Apache-2.0","bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"homepage":"https://github.com/fimbullinter/wotan#readme","dependencies":{"@fimbul/ymir":"0.24.0","chalk":"^4.0.0","debug":"^4.0.0","tslib":"^2.0.0","tsutils":"^3.21.0"},"peerDependencies":{"typescript":">= 4.0.0 || >= 4.2.0-dev"},"readme":"# Mímir\n\nCore rules, formatters and configurations of the Fimbullinter project.\n\n[![npm version](https://img.shields.io/npm/v/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![npm downloads](https://img.shields.io/npm/dm/@fimbul/mimir.svg)](https://www.npmjs.com/package/@fimbul/mimir)\n[![Renovate enabled](https://img.shields.io/badge/renovate-enabled-brightgreen.svg)](https://renovateapp.com/)\n[![CircleCI](https://circleci.com/gh/fimbullinter/wotan/tree/master.svg?style=shield)](https://circleci.com/gh/fimbullinter/wotan/tree/master)\n[![Build status](https://ci.appveyor.com/api/projects/status/a28dpupxvjljibq3/branch/master?svg=true)](https://ci.appveyor.com/project/ajafff/wotan/branch/master)\n[![codecov](https://codecov.io/gh/fimbullinter/wotan/branch/master/graph/badge.svg)](https://codecov.io/gh/fimbullinter/wotan)\n[![Join the chat at https://gitter.im/fimbullinter/wotan](https://badges.gitter.im/fimbullinter/wotan.svg)](https://gitter.im/fimbullinter/wotan)\n\nMake sure to also read the [full documentation of all available modules](https://github.com/fimbullinter/wotan#readme).\n\n## Purpose\n\nThis 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.\n\n## Rules\n\n:mag: requires type information\n:mag_right: works better with type information\n:wrench: fixable\n:nut_and_bolt: configurable\n:x: not enabled in `recommended` preset\n\nRule | Description | Difference to TSLint rule / Why you should use it\n---- | ---- | ----\n[`async-function-assignability`](docs/async-function-assignability.md) | :mag: Diallows assinging a `Promise`-returning function to a `void`-returning type. | No such rule in TSLint.\n[`await-async-result`](docs/await-async-result.md) | :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.\n[`await-only-promise`](docs/await-only-promise.md) | :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.\n[`ban-dom-globals`](docs/ban-dom-globals.md) | :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.\n[`delete-only-optional-property`](docs/delete-only-optional-property.md) | :mag: Disallows `delete` of required properties. | There's no similar TSLint rule.\n[`generator-require-yield`](docs/generator-require-yield.md) | Requires at least one `yield` inside generator functions. | There's no similar TSLint rule.\n[`new-parens`](docs/new-parens.md) | :wrench: Requires parentheses when invoking constructors. | Performance!\n[`no-case-declaration`](docs/no-case-declaration.md) | Disallows `let`, `class` and `enum` in case blocks. | TSLint has no similar rule, ESLint has `no-case-declarations` which forbids function declarations as well.\n[`no-debugger`](docs/no-debugger.md) | :wrench: Bans `debugger;` statements from your production code. | Performance!\n[`no-duplicate-case`](docs/no-duplicate-case.md) | :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.\n[`no-duplicate-spread-property`](docs/no-duplicate-spread-property.md) | :mag: Detects properties in object literals with object spread that are always overridden. | TSLint has no such rule.\n[`no-fallthrough`](docs/no-fallthrough.md) | :mag_right: Prevents unintentional fallthough in `switch` statements from one case to another. | Allows more comment variants such as `fallthrough` or `fall through`.\n[`no-implicit-tostring`](docs/no-implicit-tostring.md) | :mag: :nut_and_bolt: Disallows implicit conversion of non-string values to string. |\n[`no-invalid-assertion`](docs/no-invalid-assertion.md) | :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.\n[`no-misused-generics`](docs/no-misused-generics.md) | 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.\n[`no-nan-compare`](docs/no-nan-compare.md) | Disallows comparing with `NaN`, use `isNaN(number)` or `Number.isNaN(number)` instead. | Performance!\n[`no-object-spread-of-iterable`](docs/no-object-spread-of-iterable.md) | :mag: Disallows spreading iterable types into an object. |\n[`no-octal-escape`](docs/no-octal-escape.md) | :wrench: Disallows octal escape sequences in strings and template strings. | No such rule in TSLint.\n[`no-restricted-property-access`](docs/no-restricted-property-access.md) | :mag: Disallows accessing properties via computed name that would not be accessible using a static name. | TSLint has no similar rule.\n[`no-return-await`](docs/no-return-await.md) | :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.\n[`no-unassigned-variable`](docs/no-unassigned-variable.md) | Detects variables that are not initialized and never assigned a value. | There's no similar TSLint rule.\n[`no-uninferred-type-parameter`](docs/no-uninferred-type-parameter.md) | :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.\n[`no-unreachable-code`](docs/no-unreachable-code.md) | :mag_right: Disallows statements that will never be executed. | TSLint removed their `no-unreachable` rule in v4.0.0.\n[`no-unsafe-finally`](docs/no-unsafe-finally.md) | Disallows control flow statements `return`, `throw`, `break` and `continue` inside the `finally` block of a try statement. | Performance!\n[`no-unstable-api-use`](docs/no-unstable-api-use.md) | :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.\n[`no-unused-expression`](docs/no-unused-expression.md) | :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.\n[`no-unused-label`](docs/no-unused-label.md) | :wrench: Disallows labels that are never used. | TSLint only has `label-position` which doesn't check for unused labels.\n[`no-useless-assertion`](docs/no-useless-assertion.md) | :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.\n[`no-useless-declare`](docs/no-useless-declare.md) | :wrench: Disallows the `declare` keyword on statements without runtime value, e.g. `declare type T = any;`. | TSLint has no such rule.\n[`no-useless-destructuring`](docs/no-useless-destructuring.md) | Detects array and object destructuring that doesn't assign to a variable. | TSLint has no such rule.\n[`no-useless-initializer`](docs/no-useless-initializer.md) | :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.\n[`no-useless-jump-label`](docs/no-useless-jump-label.md) | :wrench: Disallows `continue label;` and `break label;` where the label is not necessary. | There's no similar TSLint rule.\n[`no-useless-predicate`](docs/no-useless-predicate.md) | :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`.\n[`no-useless-spread`](docs/no-useless-spread.md) | :wrench: Disallows redundant array and object spread. | There's no similar TSLint rule.\n[`no-useless-strict`](docs/no-useless-strict.md) | :mag_right: :wrench: Disallows redundant `'use strict';` directives. | TSLint had a rule to enforce `'use strict'` everywhere.\n[`no-useless-try-catch`](docs/no-useless-try-catch.md) | :wrench: Detects `try` statements or parts thereof that can be removed. | There's no similar TSLint rule.\n[`no-writeonly-property-read`](docs/no-writeonly-property-read.md) | :mag: Disallows read access to properties that only have a `set` accessor. | There's no similar TSLint rule.\n[`parameter-properties`](docs/parameter-properties.md) | :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.\n[`prefer-const`](docs/prefer-const.md) | :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.\n[`prefer-dot-notation`](docs/prefer-dot-notation.md) | :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.\n[`prefer-for-of`](docs/prefer-for-of.md) | :mag: Prefer `for...of` loops over regular `for` loops where possible. | Avoids the false positives of TSLint's `prefer-for-of` rule.\n[`prefer-namespace-keyword`](docs/prefer-namespace-keyword.md) | :wrench: Prefer `namespace foo {}` over `module foo {}` to avoid confusion with ECMAScript modules. | Same as TSLint's `no-internal-module`.\n[`prefer-number-methods`](docs/prefer-number-methods.md) | :mag: :wrench: Prefer ES2015's `Number.isNaN` and `Number.isFinite` over the global `isNaN` and `isFinite`. | No similar rule in TSLint.\n[`prefer-object-spread`](docs/prefer-object-spread.md) | :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.\n[`return-never-call`](docs/return-never-call.md) | :mag: Enforces `return`ing or `throw`ing the result of a function of method call that returns `never`. | TSLint has no similar rule.\n[`syntaxcheck`](docs/syntaxcheck.md) | :mag: :x: Reports syntax errors as lint errors.| Used to be part of the deprecated `tslint --type-check`\n[`trailing-newline`](docs/trailing-newline.md) | :wrench: Enforces a line break at the end of each file. | Nothing fancy here :(\n[`try-catch-return-await`](docs/try-catch-return-await.md) | :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.\n[`type-assertion`](docs/type-assertion.md) | :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.\n[`typecheck`](docs/typecheck.md) | :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.\n\n## Formatters\n\n* `stylish`\n* `json`\n\n## Configuration Presets\n\n* `wotan:recommended` contains recommended builtin rules. This configuration only adds new rules in major versions.\n* `wotan:latest` contains recommended builtin rules and is updated in minor versions. Be aware that this might cause your build to break.\n\n## License\n\nApache-2.0 © [Klaus Meinhardt](https://github.com/ajafff)\n","readmeFilename":"README.md","_id":"@fimbul/mimir@0.25.0-dev.20210309","_nodeVersion":"15.11.0","_npmVersion":"7.6.0","dist":{"integrity":"sha512-FocLjBafAu37pm5G2jxXJslF2HnjISVzVZ5MedX9t0vD53MfoSqwO+KtzVJc5CSQPrVPKIF7YGNL3HF6z+ziNg==","shasum":"a29200aea2457111c1915aeeb5bf908adfacb3ee","tarball":"https://registry.npmjs.org/@fimbul/mimir/-/mimir-0.25.0-dev.20210309.tgz","fileCount":168,"unpackedSize":460470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRzdqCRA9TVsSAnZWagAAzfMP/A39SMq+kj0dTpOFaRqU\nA9RcNcMLUIAGiW40NhuSqobErpHpYAfpp4IPMpYYBxdcA3jlfqEz4WIaHWSg\nPNHx+JZ+rRIFMO0OstwPEcTczUeAM+zyGes9tM12cdxjJ91oxqj7yq48oRZ2\nGluLVoOkZvDs1yhrLdBj/Zna/7/BnpZQO1q1G43QQberHFGSVsiFkZALjZ8v\nam9oLJPJvL6+KcHE70uxZuV1LsgfTqw8e314G04w2o7cP0ZpN2mU7tMehXiV\nIhifud8itaRNIWDcNN0wnwoxHM+3Faifkt7gjTzILGbOfkVWZT49lKIy5XPg\nrD8zN/fxStvt52cu70vKL33wQ9f7AyPWqiFxL1E6EYI7YO04gQNRZOnOIQXL\nzhCziDVmg4v2RoP2b7abM1WRJGFx68LhKmyGvEORUvMc/Vu4ur7WlC72shAv\nSzJ29RrfMrimgCgkiTTLk3IjDBnWRBgtOENf/AbHNcPOeCp8I3i2uhUjJ3qA\nSCwwcZpMU3lKLiE3SxGnDmGr7Dv87BB+0SyOFry/1BSOkEEFZcAc4MxvkzQB\nLdlHOoavzyHokcQjXpiq+DRgdtloqrDHQoQqHg8XYf3YVbMXtNi9tkpX38Yu\nKXvzrlfZPXmfOurvFYzsKOicKDREc6YocK4Ud+E+vGGSgxv1wb6MyCIyyNYs\nVhb2\r\n=VpKL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZZWuoZWHRDJznhlz0pnVUNUEK0qiHl3JH9FWwdJhhoAIgXaE5G2Guh/mb5DmNMtO1F98dLNoKALK2xZrhnY5HwIY="}]},"_npmUser":{"name":"harbard","email":"klaus.meinhardt1@gmail.com"},"directories":{},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mimir_0.25.0-dev.20210309_1615279978249_0.997607749050377"},"_hasShrinkwrap":false}},"time":{"created":"2018-03-06T23:18:33.916Z","0.4.0-dev.20180306":"2018-03-06T23:18:34.205Z","modified":"2022-04-05T10:43:02.720Z","0.4.0-dev.20180307":"2018-03-07T23:19:15.968Z","0.4.0-dev.20180308":"2018-03-08T23:19:24.596Z","0.4.0":"2018-03-09T21:28:20.962Z","0.5.0-dev.20180311":"2018-03-11T23:21:26.488Z","0.5.0-dev.20180313":"2018-03-13T23:22:15.625Z","0.5.0":"2018-03-15T21:26:46.863Z","0.6.0-dev.20180316":"2018-03-16T23:23:30.486Z","0.6.0-dev.20180318":"2018-03-18T23:25:00.772Z","0.6.0-dev.20180320":"2018-03-20T23:26:11.452Z","0.6.0-dev.20180321":"2018-03-21T23:27:35.803Z","0.6.0-dev.20180322":"2018-03-22T23:27:05.759Z","0.6.0":"2018-03-23T21:51:39.150Z","0.7.0-dev.20180325":"2018-03-25T23:28:14.907Z","0.7.0-dev.20180326":"2018-03-26T23:29:03.053Z","0.7.0-dev.20180327":"2018-03-27T23:29:44.460Z","0.7.0-dev.20180328":"2018-03-28T23:30:11.363Z","0.7.0-dev.20180331":"2018-03-31T23:31:06.349Z","0.7.0-dev.20180404":"2018-04-04T23:32:25.115Z","0.7.0-dev.20180405":"2018-04-05T23:33:31.079Z","0.7.0":"2018-04-07T18:14:00.767Z","0.8.0-dev.20180410":"2018-04-10T23:35:27.570Z","0.8.0-dev.20180411":"2018-04-11T23:35:26.310Z","0.8.0-dev.20180415":"2018-04-15T23:38:10.115Z","0.8.0-dev.20180416":"2018-04-16T23:38:53.351Z","0.8.0-dev.20180419":"2018-04-19T23:39:40.038Z","0.8.0-dev.20180420":"2018-04-20T23:39:37.437Z","0.8.0-dev.20180421":"2018-04-21T23:40:34.562Z","0.8.0":"2018-04-22T08:07:34.507Z","0.9.0-dev.20180425":"2018-04-25T23:42:58.504Z","0.9.0-dev.20180426":"2018-04-26T23:43:35.879Z","0.9.0-dev.20180428":"2018-04-28T23:44:02.411Z","0.9.0-dev.20180430":"2018-04-30T23:44:28.610Z","0.9.0-dev.20180501":"2018-05-01T23:45:47.169Z","0.9.0-dev.20180502":"2018-05-02T23:44:26.976Z","0.9.0-dev.20180505":"2018-05-05T23:46:54.846Z","0.9.0":"2018-05-09T17:22:35.176Z","0.10.0-dev.20180509":"2018-05-09T23:48:02.111Z","0.10.0-dev.20180510":"2018-05-10T23:47:25.770Z","0.10.0-dev.20180512":"2018-05-12T23:48:18.198Z","0.10.0-dev.20180515":"2018-05-15T23:50:05.022Z","0.10.0-dev.20180517":"2018-05-17T23:50:35.998Z","0.10.0":"2018-05-18T15:53:22.160Z","0.11.0-dev.20180604":"2018-06-04T00:02:57.946Z","0.11.0-dev.20180607":"2018-06-07T00:04:38.871Z","0.11.0-dev.20180609":"2018-06-09T00:04:19.429Z","0.11.0-dev.20180610":"2018-06-10T00:05:18.563Z","0.11.0":"2018-06-21T09:15:16.397Z","0.12.0-dev.20180624":"2018-06-24T00:13:48.403Z","0.12.0-dev.20180628":"2018-06-28T00:16:34.447Z","0.12.0-dev.20180629":"2018-06-29T00:18:06.428Z","0.12.0-dev.20180701":"2018-07-01T00:18:26.060Z","0.12.0-dev.20180710":"2018-07-10T00:23:35.195Z","0.12.0-dev.20180711":"2018-07-11T00:24:35.677Z","0.12.0":"2018-07-11T18:32:16.430Z","0.13.0-dev.20180718":"2018-07-18T00:28:49.809Z","0.13.0-dev.20180719":"2018-07-19T00:28:38.466Z","0.13.0-dev.20180726":"2018-07-26T00:37:26.936Z","0.13.0-dev.20180802":"2018-08-02T00:35:59.448Z","0.13.0-dev.20180803":"2018-08-03T00:36:35.937Z","0.13.0":"2018-08-27T18:29:49.360Z","0.14.0-dev.20180905":"2018-09-05T00:52:42.590Z","0.14.0":"2018-09-06T10:47:49.692Z","0.15.0-dev.20180913":"2018-09-13T00:57:16.613Z","0.15.0-dev.20181018":"2018-10-18T01:16:59.913Z","0.15.0-dev.20181020":"2018-10-20T01:18:14.522Z","0.15.0":"2018-10-21T19:53:35.170Z","0.16.0-dev.20181026":"2018-10-26T01:19:47.119Z","0.16.0-dev.20181031":"2018-10-31T01:24:00.814Z","0.16.0-dev.20181104":"2018-11-04T01:24:52.977Z","0.16.0-dev.20181107":"2018-11-07T01:26:55.818Z","0.16.0-dev.20181115":"2018-11-15T01:31:11.036Z","0.16.0":"2018-11-23T22:32:20.033Z","0.17.0-dev.20181130":"2018-11-30T01:40:57.242Z","0.17.0-dev.20181201":"2018-12-01T01:41:37.258Z","0.17.0-dev.20181205":"2018-12-05T01:44:47.336Z","0.17.0-dev.20181215":"2018-12-15T01:50:12.886Z","0.17.0-dev.20181217":"2018-12-17T01:51:30.672Z","0.17.0-dev.20181218":"2018-12-18T01:52:24.988Z","0.17.0-dev.20181220":"2018-12-20T01:52:55.011Z","0.17.0-dev.20181221":"2018-12-21T01:53:51.572Z","0.17.0":"2018-12-21T20:15:09.060Z","0.18.0-dev.20190106":"2019-01-06T02:02:38.923Z","0.18.0":"2019-01-06T15:20:49.713Z","0.19.0-dev.20190111":"2019-01-11T02:03:24.767Z","0.19.0-dev.20190119":"2019-01-19T02:08:50.768Z","0.19.0-dev.20190120":"2019-01-20T02:10:32.880Z","0.19.0":"2019-01-22T11:17:24.214Z","0.20.0-dev.20190126":"2019-01-26T02:13:31.916Z","0.20.0-dev.20190129":"2019-01-29T02:13:34.570Z","0.20.0-dev.20190201":"2019-02-01T02:17:47.735Z","0.20.0-dev.20190203":"2019-02-03T02:18:33.969Z","0.20.0":"2019-03-16T17:06:13.338Z","0.21.0-dev.20190318":"2019-03-18T02:40:50.968Z","0.21.0-dev.20190322":"2019-03-22T02:46:41.911Z","0.21.0-dev.20190329":"2019-03-29T02:50:45.401Z","0.21.0-dev.20190412":"2019-04-12T02:58:55.325Z","0.21.0-dev.20190507":"2019-05-07T03:08:11.942Z","0.21.0-dev.20190518":"2019-05-18T03:15:43.858Z","0.21.0-dev.20190529":"2019-05-29T03:21:45.720Z","0.21.0-dev.20190603":"2019-06-03T03:23:11.799Z","0.21.0-dev.20190604":"2019-06-04T03:25:12.398Z","0.21.0-dev.20190605":"2019-06-05T03:22:53.089Z","0.21.0":"2019-06-06T19:55:27.502Z","0.22.0-dev.20190806":"2019-08-06T03:56:17.427Z","0.22.0-dev.20191111":"2019-11-11T04:53:01.674Z","0.22.0-dev.20200101":"2020-01-01T05:19:15.772Z","0.22.0":"2020-12-09T13:54:59.548Z","0.23.0-dev.20201218":"2020-12-18T08:12:45.074Z","0.23.0-dev.20210107":"2021-01-07T08:19:49.682Z","0.23.0-dev.20210108":"2021-01-08T08:20:40.413Z","0.23.0-dev.20210110":"2021-01-10T08:21:20.724Z","0.23.0-dev.20210111":"2021-01-11T08:22:19.124Z","0.23.0-dev.20210112":"2021-01-12T08:22:42.264Z","0.23.0-dev.20210114":"2021-01-14T08:24:19.864Z","0.23.0-dev.20210116":"2021-01-16T08:25:35.155Z","0.23.0":"2021-01-17T13:08:37.578Z","0.24.0-dev.20210120":"2021-01-20T08:31:03.825Z","0.24.0-dev.20210121":"2021-01-21T08:49:18.695Z","0.24.0-dev.20210122":"2021-01-22T09:03:45.718Z","0.24.0-dev.20210131":"2021-01-31T08:55:36.280Z","0.24.0-dev.20210214":"2021-02-14T08:42:09.693Z","0.24.0-dev.20210216":"2021-02-16T08:42:20.096Z","0.24.0":"2021-02-19T18:32:56.053Z","0.25.0-dev.20210309":"2021-03-09T08:52:58.377Z"},"maintainers":[{"name":"ajaff","email":"klaus.meinhardt1@gmail.com"},{"name":"harbard","email":"klaus.meinhardt1@gmail.com"}],"description":"Core rules of the Fimbullinter project","homepage":"https://github.com/fimbullinter/wotan#readme","keywords":["wotan","fimbullinter","core","lint","linter","rules"],"repository":{"type":"git","url":"git+https://github.com/fimbullinter/wotan.git","directory":"packages/mimir"},"author":{"name":"Klaus Meinhardt"},"bugs":{"url":"https://github.com/fimbullinter/wotan/issues"},"license":"Apache-2.0","readme":"","readmeFilename":""}