@typelib/eslint-plugin v12.5.0
ESLint plugin
Table of contents
- Installation
- Rules
- class-member-typedef
- consistent-empty-lines
- consistent-import
- disallow-by-regexp
- disallow-identifier
- disallow-import
- empty-lines-around-comment
- exhaustive-switch
- no-inferrable-types
- no-mutable-signature
- no-unnecessary-readonly
- no-unnecessary-writable
- no-unsafe-object-assignment
- no-unused-import
- prefer-readonly
- require-jsdoc
- sort-class-members
- template-literal-format
- Shared options
Installation
npm install --save-dev @typelib/eslint-plugin
eslintrc.js
module.exports = {
plugins: ["@typelib/eslint-plugin"]
};
Rules
class-member-typedef
Requires type definition for class members without initializer.
eslintrc.js
"@typelib/class-member-typedef": "error"
consistent-empty-lines
Requires consistent empty lines.
eslintrc.js
"@typelib/consistent-empty-lines": [
"error",
{
rules: [
{
averageLinesGte?: number,
everyLinesGte?: number,
selector: string,
someHasDocComment?: boolean,
someLinesGte?: number
},
...
]
}
]
Options
Name | Description |
---|---|
averageLinesGte | Spread group if average lines >= given value. |
everyLinesGte | Spread group if every lines >= given value. |
selector | AST selector. |
someHasDocComment | Spread group if some item has doc comment. |
someLinesGte | Spread group if some lines >= given value. |
consistent-import
Requires consistent import. Auto-imports provided sources.
eslintrc.js
"@typelib/consistent-import": [
"error",
{
sources: [
{
altLocalNames?: string[],
autoImportSource?: string,
localName?: string,
sourcePattern: string,
type: "default" | "wildcard"
},
...
]
}
]
Options
Name | Description |
---|---|
altLocalNames | Alternative local names to be used if localName is occupied. |
autoImportSource | Auto-import source (defaults to sourcePattern). |
localName | Local name. |
sourcePattern | Source (minimatch pattern). |
type | Import type. |
disallow-by-regexp
Disallows code by regular expression.
eslintrc.js
"@typelib/disallow-by-regexp": [
"error",
{
contexts?: Array<"code" | "comment" | "string">,
rules: [
{
contexts?: Array<"code" | "comment" | "string">,
patterns: string[],
replacement?: string
},
...
]
}
]
Options
Name | Description |
---|---|
contexts | Contexts (defaults to all contexts). |
patterns | Patterns (regular expressions). |
replacement | Replacement. |
disallow-identifier
Disallows identifiers.
eslintrc.js
"@typelib/disallow-identifier": [
"error",
{
rules: [
{
ids: string[],
replacement?: string
},
...
]
}
]
Options
Name | Description |
---|---|
ids | Identifiers. |
replacement | Replacement. |
disallow-import
Disallows import.
eslintrc.js
"@typelib/disallow-import": [
"error",
{
rules: [
{
allow?: string[],
disallow?: string[]
},
...
]
}
]
Options
Name | Description |
---|---|
allow | Allowed sources (minimatch patterns). |
disallow | Disallowed sources (minimatch patterns). |
empty-lines-around-comment
Requires consistent empty lines around comments.
eslintrc.js
"@typelib/empty-lines-around-comment": "error"
exhaustive-switch
Requires exhaustive switch (replaces "@typescript-eslint/switch-exhaustiveness-check" rule, correctly treats typeof operator).
eslintrc.js
"@typelib/exhaustive-switch": "error"
no-inferrable-types
Forbids inferrable types (complements "@typescript-eslint/no-inferrable-types" rule).
eslintrc.js
"@typelib/no-inferrable-types": "error"
no-mutable-signature
Forbids mutable signatures.
eslintrc.js
"@typelib/no-mutable-signature": [
"error",
{
ignoreClasses?: boolean,
ignoreIdentifiers?: string[],
ignoreNumberSignature?: boolean,
ignoreStringSignature?: boolean,
ignoreTypes?: string[]
}
]
Options
Name | Description |
---|---|
ignoreClasses | Ignore classes (defaults to true). |
ignoreIdentifiers | Ignore identifiers (regular expressions). |
ignoreNumberSignature | Ignore number signature (defaults to true). |
ignoreStringSignature | Ignore string signature. |
ignoreTypes | Ignore types. |
no-unnecessary-readonly
Forbids unnecessary Readonly|DeepReadonly wrapper.
eslintrc.js
"@typelib/no-unnecessary-readonly": [
"error",
{
ignoreClasses?: boolean,
ignoreTypes?: string[]
}
]
Options
Name | Description |
---|---|
ignoreClasses | Ignores classes. |
ignoreTypes | Ignores types. |
no-unnecessary-writable
Forbids unnecessary Writable|DeepWritable wrapper.
eslintrc.js
"@typelib/no-unnecessary-writable": [
"error",
{
ignoreClasses?: boolean,
ignoreTypes?: string[]
}
]
Options
Name | Description |
---|---|
ignoreClasses | Ignores classes. |
ignoreTypes | Ignores types. |
no-unsafe-object-assignment
Forbids:
- Readonly-to-mutable assignments.
- Optional assignments.
eslintrc.js
"@typelib/no-unsafe-object-assignment": "error"
no-unused-import
Removes unused import.
eslintrc.js
"@typelib/no-unused-import": "error"
prefer-readonly
Enforces the use of readonly properties.
eslintrc.js
"@typelib/prefer-readonly": [
"error",
{
excludeSelectors?: string[],
ignoreClasses?: boolean,
ignoreIdentifiers?: string[],
ignoreTypes?: string[],
includeSelectors?: string[],
noDefaultSelectors?: boolean
}
]
Options
Name | Description |
---|---|
excludeSelectors | Exclude AST selectors. |
ignoreClasses | Ignore classes. |
ignoreIdentifiers | Ignore identifiers (regular expressions). |
ignoreTypes | Ignore types. |
includeSelectors | Add AST selectors. |
noDefaultSelectors | Do not use default AST selectors. |
require-jsdoc
Requires JSDoc comments.
eslintrc.js
"@typelib/require-jsdoc": [
"error",
{
excludeSelectors?: string[],
includeSelectors?: string[],
interfaceOptions?: Array<"callSignatures" | "constructSignatures" | "interface">,
noDefaultSelectors?: string[],
propertyOptions?: Array<"function" | "nonFunction">
}
]
Options
Name | Description |
---|---|
excludeSelectors | Excludes AST selectors. |
includeSelectors | Adds AST selectors. |
interfaceOptions.callSignatures | Require JSDoc comment for call signatures. |
interfaceOptions.constructSignatures | Require JSDoc comment for constructor signatures. |
interfaceOptions.interface | Require JSDoc comment for interface. |
noDefaultSelectors | Do not use default AST selectors. |
propertyOptions.function | Require JSDoc comment for function property. |
propertyOptions.nonFunction | Require JSDoc comment for non-function property. |
sort-class-members
Sorts class member.
eslintrc.js
"@typelib/sort-class-members": [
"error",
{
sortingOrder: string[]
}
]
Options
Name | Description |
---|---|
sortingOrder | Sorting order array may contain member types (accessor, constructor, field, get, method, set, signature), accessibility modifiers (public, private, protected), dynamic/static modifiers (dynamic, static), or any combination of them (e.g. public-accessor, get-private, static-method). |
template-literal-format
Checks template literal format.
eslintrc.js
"@typelib/template-literal-format": "error"
Shared options
eslintrc.js
"@typelib/<rule-id>": [
"error",
{
filesToLint?: string[],
filesToSkip?: string[],
<sub-options-key>: [
{
filesToLint?: string[],
filesToSkip?: string[],
subOptionsId?: string
},
...
]
}
]
Options
Name | Description |
---|---|
filesToLint | Files to lint (minimatch patterns). |
filesToSkip | Files to skip (minimatch patterns). |
subOptionsId | Suboptions ID. |
Configuration comment
/* typelib/\<rule-id\> disable \<\>[\<sub-options-id\>] */
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago