Skip to content

Commit 96df870

Browse files
Merge pull request #283 from jonaskello/dev
2 parents e4067de + 77d6dd6 commit 96df870

File tree

7 files changed

+53
-45
lines changed

7 files changed

+53
-45
lines changed

.eslintrc.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
"@rebeccastevens/eslint-config/modern",
1818
"@rebeccastevens/eslint-config/typescript",
1919
"@rebeccastevens/eslint-config/common-overrides",
20-
"plugin:eslint-plugin/recommended",
2120
"plugin:prettier/recommended",
2221
"prettier"
2322
],
@@ -60,6 +59,12 @@
6059
"functional/no-throw-statement": "off"
6160
}
6261
},
62+
// Source files.
63+
{
64+
"files": ["src/**/*"],
65+
"extends": ["plugin:eslint-plugin/recommended"],
66+
"rules": {}
67+
},
6368
// FIXME: This override is defined in the upsteam; it shouldn't need to be redefined here. Why?
6469
{
6570
"files": ["**/*.md/**"],

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"@commitlint/cli": "^13.2.1",
7171
"@commitlint/config-conventional": "^13.2.0",
7272
"@istanbuljs/nyc-config-typescript": "^1.0.1",
73-
"@rebeccastevens/eslint-config": "^1.1.4",
73+
"@rebeccastevens/eslint-config": "^1.1.5",
7474
"@rollup/plugin-commonjs": "^21.0.0",
7575
"@rollup/plugin-json": "^4.1.0",
7676
"@rollup/plugin-node-resolve": "^13.0.5",

src/common/ignore-options.ts

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
hasID,
99
hasKey,
1010
isAssignmentExpression,
11+
isDefined,
1112
isPropertyDefinition,
1213
isExpressionStatement,
1314
isIdentifier,
@@ -115,34 +116,34 @@ function getNodeIdentifierText(
115116
node: TSESTree.Node | null | undefined,
116117
context: RuleContext<string, BaseOptions>
117118
): string | undefined {
118-
return node === undefined || node === null
119-
? undefined
120-
: isIdentifier(node)
121-
? node.name
122-
: hasID(node)
123-
? getNodeIdentifierText(node.id, context)
124-
: hasKey(node)
125-
? getNodeIdentifierText(node.key, context)
126-
: isAssignmentExpression(node)
127-
? getNodeIdentifierText(node.left, context)
128-
: isMemberExpression(node)
129-
? `${getNodeIdentifierText(node.object, context)}.${getNodeIdentifierText(
130-
node.property,
131-
context
132-
)}`
133-
: isThisExpression(node)
134-
? "this"
135-
: isUnaryExpression(node)
136-
? getNodeIdentifierText(node.argument, context)
137-
: isExpressionStatement(node)
138-
? context.getSourceCode().getText(node)
139-
: isTSArrayType(node) ||
140-
isTSIndexSignature(node) ||
141-
isTSTupleType(node) ||
142-
isTSTypeAnnotation(node) ||
143-
isTSTypeLiteral(node) ||
144-
isTSTypeReference(node)
145-
? getNodeIdentifierText(node.parent, context)
119+
return isDefined(node)
120+
? isIdentifier(node)
121+
? node.name
122+
: hasID(node) && isDefined(node.id)
123+
? getNodeIdentifierText(node.id, context)
124+
: hasKey(node) && isDefined(node.key)
125+
? getNodeIdentifierText(node.key, context)
126+
: isAssignmentExpression(node)
127+
? getNodeIdentifierText(node.left, context)
128+
: isMemberExpression(node)
129+
? `${getNodeIdentifierText(node.object, context)}.${getNodeIdentifierText(
130+
node.property,
131+
context
132+
)}`
133+
: isThisExpression(node)
134+
? "this"
135+
: isUnaryExpression(node)
136+
? getNodeIdentifierText(node.argument, context)
137+
: isExpressionStatement(node)
138+
? context.getSourceCode().getText(node)
139+
: isTSArrayType(node) ||
140+
isTSIndexSignature(node) ||
141+
isTSTupleType(node) ||
142+
isTSTypeAnnotation(node) ||
143+
isTSTypeLiteral(node) ||
144+
isTSTypeReference(node)
145+
? getNodeIdentifierText(node.parent, context)
146+
: undefined
146147
: undefined;
147148
}
148149

src/rules/prefer-tacit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { createRule, getESTreeNode, getTypeOfNode } from "~/util/rule";
1111
import {
1212
isBlockStatement,
1313
isCallExpression,
14+
isDefined,
1415
isFunctionLike,
1516
isIdentifier,
1617
isReturnStatement,
@@ -101,8 +102,7 @@ function isCallerViolation(
101102
const declaration = getESTreeNode(tsDeclaration, context);
102103

103104
return (
104-
(declaration !== null &&
105-
declaration !== undefined &&
105+
(isDefined(declaration) &&
106106
(isFunctionLike(declaration) || isTSFunctionType(declaration)) &&
107107
declaration.params.length === caller.arguments.length) ||
108108
// Check for optional params.

src/util/tree.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils";
44
import {
55
isCallExpression,
66
isClassLike,
7+
isDefined,
78
isFunctionExpressionLike,
89
isFunctionLike,
910
isIdentifier,
@@ -27,9 +28,9 @@ function getAncestorOfType<T extends TSESTree.Node>(
2728
): T | null {
2829
return checker(node, child)
2930
? node
30-
: node.parent === null || node.parent === undefined
31-
? null
32-
: getAncestorOfType(checker, node.parent, node);
31+
: isDefined(node.parent)
32+
? getAncestorOfType(checker, node.parent, node)
33+
: null;
3334
}
3435

3536
/**
@@ -57,11 +58,9 @@ export function inClass(node: TSESTree.Node): boolean {
5758
export function inReadonly(node: TSESTree.Node): boolean {
5859
// For nested cases, we shouldn't look for any parent, but the immediate parent.
5960
if (
60-
node.parent !== null &&
61-
node.parent !== undefined &&
61+
isDefined(node.parent) &&
6262
isTSTypeLiteral(node.parent) &&
63-
node.parent.parent !== null &&
64-
node.parent.parent !== undefined &&
63+
isDefined(node.parent.parent) &&
6564
isTSTypeAnnotation(node.parent.parent)
6665
) {
6766
return false;
@@ -102,8 +101,7 @@ export function isInReturnType(node: TSESTree.Node): boolean {
102101
return (
103102
getAncestorOfType(
104103
(n): n is TSESTree.Node =>
105-
n.parent !== undefined &&
106-
n.parent !== null &&
104+
isDefined(n.parent) &&
107105
isFunctionLike(n.parent) &&
108106
n.parent.returnType === n,
109107
node

src/util/typeguard.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,10 @@ export function hasKey(
334334
return Object.prototype.hasOwnProperty.call(node, "key");
335335
}
336336

337+
export function isDefined<T>(value: T | null | undefined): value is T {
338+
return value !== null && value !== undefined;
339+
}
340+
337341
/*
338342
* TS types type guards.
339343
*/

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,10 +1154,10 @@
11541154
dependencies:
11551155
"@octokit/openapi-types" "^11.2.0"
11561156

1157-
"@rebeccastevens/eslint-config@^1.1.4":
1158-
version "1.1.4"
1159-
resolved "https://registry.yarnpkg.com/@rebeccastevens/eslint-config/-/eslint-config-1.1.4.tgz#97e656678d97fa3941f6aa817b1eda9a92ac6a98"
1160-
integrity sha512-nEWzZDhuSwYXVQ48Scovcrlw2WaXekEo1xSiZxBqRo3WyXLf2CsyJYi3wq3DoCIsPpBPmzZ8RostREw/vPDedw==
1157+
"@rebeccastevens/eslint-config@^1.1.5":
1158+
version "1.1.5"
1159+
resolved "https://registry.yarnpkg.com/@rebeccastevens/eslint-config/-/eslint-config-1.1.5.tgz#9b640323c99f0969f0aa59a3198f5609b3f82e94"
1160+
integrity sha512-Gd/g6CqCPOuycycsD3RFAaQ84wobusEA+60dyXvODj66nLaqvS78HcCrWbL69Y28XL5SuXJB8ukB/LK52AbE3A==
11611161
dependencies:
11621162
deepmerge-ts "^1.0.1"
11631163

0 commit comments

Comments
 (0)