Skip to content

Commit 8b6642e

Browse files
committed
WIP: address some of the review comments; still need to fix eslint errors
1 parent 68d1d2d commit 8b6642e

File tree

9 files changed

+42
-44
lines changed

9 files changed

+42
-44
lines changed

.c8rc.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"reporter": ["text", "html", "lcov"],
77
"report-dir": "./coverage",
88
"check-coverage": true,
9-
"branches": 80,
10-
"lines": 80,
11-
"functions": 80,
12-
"statements": 80
9+
"branches": 95,
10+
"lines": 95,
11+
"functions": 95,
12+
"statements": 95
1313
}

.github/workflows/ci.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
name: CI
22

3-
on: [push]
3+
on:
4+
pull_request:
5+
branches: [ "name" ]
6+
push:
7+
branches: [ "name" ]
8+
workflow_dispatch:
49

510
jobs:
611
test:
@@ -15,7 +20,7 @@ jobs:
1520
node-version: '22'
1621

1722
- name: Install dependencies
18-
run: npm install
23+
run: npm ci
1924

2025
- name: Run build
2126
run: npm run build
@@ -26,5 +31,8 @@ jobs:
2631
- name: Run prettier
2732
run: npm run prettier-check
2833

34+
- name: Run lint
35+
run: npm run lint
36+
2937
- name: Run test & coverage
3038
run: npm run test:coverage

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ dist/
44
sample_cases/
55
wasm-toolchain
66
coverage
7-
.vscode/settings.json
7+
.vscode
88
reference

.prettierignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@ build/**
77
wasm-toolchain/**
88
coverage/**
99
.github/**
10-
**/*.json

.vscode/launch.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

eslint.config.mjs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
1-
import eslint from "@eslint/js";
21
import tseslint from "typescript-eslint";
2+
// @ts-expect-error Missing type definitions
3+
import { baseConfig } from "@schleifner/eslint-config-base/config.mjs";
34

45
export default tseslint.config(
56
{
67
ignores: [
7-
"**/node_modules/**",
88
"dist/**",
9-
"reference/**",
10-
"sample_cases/**",
11-
"sample_config/**",
12-
"build/**",
13-
"wasm-toolchain/**",
14-
"coverage/**",
15-
".github/**",
16-
"**/*.json",
17-
"**/*.md",
9+
"**/*.mjs",
1810
],
1911
},
20-
eslint.configs.recommended,
21-
tseslint.configs.recommended
12+
...baseConfig
2213
);

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"build": "npx tsc --build ./tsconfig.json",
3030
"test": "mocha 'dist/tests/**/**.test.js'",
3131
"test:coverage": "c8 npm test",
32-
"lint": "npx eslint sample_cases/",
32+
"lint": "npx eslint plugins/ tests/",
3333
"watch": "npx tsc --build ./tsconfig.json --watch",
3434
"spell-check": "cspell \"**/*.{ts,js,md}\"",
3535
"prettier-check": "prettier --check \"**/*.{ts,js,json,md}\"",
@@ -39,6 +39,7 @@
3939
"eslint": ">=8.0.0"
4040
},
4141
"devDependencies": {
42+
"@schleifner/eslint-config-base": "^2.0.0",
4243
"@types/eslint": "^9.6.1",
4344
"@types/mocha": "^10.0.10",
4445
"@types/node": "^22.14.1",

plugins/rules/dont-omit-else.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,10 @@ const dontOmitElse: RuleModule<"omittedElse", [], unknown, RuleListener> =
2828
defaultOptions: [],
2929
create(context) {
3030
// Check if the statement is part of an else-if chain
31-
function isElseIf(node: TSESTree.Node) {
32-
// Check parent relationship to determine if this is an else-if
31+
function isElseIfChain(node: TSESTree.IfStatement) {
3332
const ancestors = context.sourceCode.getAncestors(node);
3433
const parent = ancestors.at(-1);
35-
return (
36-
parent && parent.type === "IfStatement" && parent.alternate === node
37-
);
34+
return parent?.type === "IfStatement" && parent.alternate === node;
3835
}
3936

4037
// Helper function to check if a node will lead to early exit
@@ -64,7 +61,7 @@ const dontOmitElse: RuleModule<"omittedElse", [], unknown, RuleListener> =
6461
return {
6562
IfStatement(node) {
6663
// Skip if this is already an else-if
67-
if (isElseIf(node)) {
64+
if (isElseIfChain(node)) {
6865
return;
6966
}
7067
const hasElse = node.alternate !== null;

tests/rules/dont-omit-else.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@ describe("Rule: dont-omit-else", () => {
1313
if (b) {}
1414
else {}
1515
`,
16+
// Valid case: else-if chain - should be skipped by isElseIf check
17+
`
18+
if (a) {
19+
doSomething();
20+
} else if (b) {
21+
doSomethingElse();
22+
}
23+
`,
24+
// Valid case: else-if-else chain
25+
`
26+
if (a) {
27+
doSomething();
28+
} else if (b) {
29+
doSomethingElse();
30+
} else {
31+
doDefault();
32+
}
33+
`,
1634
// Valid case: function with early return
1735
`
1836
function foo() {

0 commit comments

Comments
 (0)