⬅️ Back to Table of Contents
📄 configs.test.ts
📊 Analysis Summary
Metric |
Count |
🔧 Functions |
2 |
📦 Imports |
3 |
📊 Variables & Constants |
4 |
📐 Interfaces |
1 |
📚 Table of Contents
🛠️ File Location:
📂 packages/eslint-plugin/tests/configs.test.ts
📦 Imports
Name |
Source |
RuleRecommendation |
@typescript-eslint/utils/ts-eslint |
plugin |
../src/index.js |
rules |
../src/rules/index.js |
Variables & Constants
Name |
Type |
Kind |
Value |
Exported |
RULE_NAME_PREFIX |
"@typescript-eslint/" |
const |
'@typescript-eslint/' |
✗ |
result |
[string, unknown][] |
let/var |
rulesEntriesList |
✗ |
customRecommendation |
any |
const |
`highestRecommendation && |
|
typeof rule.meta.docs?.recommended === 'object' && |
|
|
|
|
rule.meta.docs.recommended[ |
|
|
|
|
highestRecommendation as 'recommended' |
'strict' |
|
|
|
]` |
✗ |
|
|
|
ruleNames |
Set<string> |
let/var |
new Set(Object.keys(unfilteredConfigRules)) |
✗ |
Functions
filterRules(values: Record<string, string | unknown[]>): [string, string | unknown[]][]
Code
function filterRules(
values: Record<string, string | unknown[]>,
): [string, string | unknown[]][] {
return Object.entries(values).filter(([name]) =>
name.startsWith(RULE_NAME_PREFIX),
);
}
- Parameters:
values: Record<string, string | unknown[]>
- Return Type:
[string, string | unknown[]][]
- Calls:
Object.entries(values).filter
name.startsWith
`filterAndMapRuleConfigs({
excludeDeprecated,
recommendations,
typeChecked,
}: FilterAndMapRuleConfigsSettings): [string, unknown][]`
Code
function filterAndMapRuleConfigs({
excludeDeprecated,
recommendations,
typeChecked,
}: FilterAndMapRuleConfigsSettings = {}): [string, unknown][] {
let result = rulesEntriesList;
if (excludeDeprecated) {
result = result.filter(([, rule]) => !rule.meta.deprecated);
}
if (typeChecked) {
result = result.filter(([, rule]) =>
typeChecked === 'exclude'
? !rule.meta.docs?.requiresTypeChecking
: rule.meta.docs?.requiresTypeChecking,
);
}
if (recommendations) {
result = result.filter(([, rule]) => {
switch (typeof rule.meta.docs?.recommended) {
case 'object':
return Object.keys(rule.meta.docs.recommended).some(recommended =>
recommendations.includes(recommended as RuleRecommendation),
);
case 'string':
return recommendations.includes(rule.meta.docs.recommended);
default:
return false;
}
});
}
const highestRecommendation = recommendations?.filter(Boolean).at(-1);
return result.map(([name, rule]) => {
const customRecommendation =
highestRecommendation &&
typeof rule.meta.docs?.recommended === 'object' &&
rule.meta.docs.recommended[
highestRecommendation as 'recommended' | 'strict'
];
return [
`${RULE_NAME_PREFIX}${name}`,
customRecommendation && typeof customRecommendation !== 'boolean'
? ['error', customRecommendation[0]]
: 'error',
];
});
}
- Parameters:
{
excludeDeprecated,
recommendations,
typeChecked,
}: FilterAndMapRuleConfigsSettings
- Return Type:
[string, unknown][]
- Calls:
result.filter
Object.keys(rule.meta.docs.recommended).some
recommendations.includes
recommendations?.filter(Boolean).at
result.map
Interfaces
FilterAndMapRuleConfigsSettings
Interface Code
interface FilterAndMapRuleConfigsSettings {
excludeDeprecated?: boolean;
recommendations?: (RuleRecommendation | undefined)[];
typeChecked?: 'exclude' | 'include-only';
}
Properties
Name |
Type |
Optional |
Description |
excludeDeprecated |
boolean |
✓ |
|
recommendations |
(RuleRecommendation | undefined)[] |
✓ |
|
typeChecked |
'exclude' | 'include-only' |
✓ |
|