Skip to content

Commit 033f1ea

Browse files
committed
feat: add missing merger [member-delimiter-style] #254
1 parent 2cccfd0 commit 033f1ea

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

src/rules/mergers.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { mergeBanTypes } from "./mergers/ban-types";
22
import { mergeIndent } from "./mergers/indent";
3+
import { mergeNoMemberDelimiterStyle } from "./mergers/member-delimiter-style";
34
import { mergeNoCaller } from "./mergers/no-caller";
45
import { mergeNoEval } from "./mergers/no-eval";
56
import { mergeNoUnnecessaryTypeAssertion } from "./mergers/no-unnecessary-type-assertion";
67

78
export const mergers = new Map([
89
["@typescript-eslint/ban-types", mergeBanTypes],
910
["@typescript-eslint/indent", mergeIndent],
11+
["@typescript-eslint/member-delimiter-style", mergeNoMemberDelimiterStyle],
1012
["@typescript-eslint/no-unnecessary-type-assertion", mergeNoUnnecessaryTypeAssertion],
1113
["no-caller", mergeNoCaller],
1214
["no-eval", mergeNoEval],
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { RuleMerger } from "../merger";
2+
3+
export const mergeNoMemberDelimiterStyle: RuleMerger = (existingOptions, newOptions) => {
4+
if (existingOptions === undefined && newOptions === undefined) {
5+
return [];
6+
}
7+
8+
return [merge((existingOptions || [])[0] || {}, (newOptions || [])[0] || {})];
9+
};
10+
11+
const merge = (...objs: Record<string, any>[]) =>
12+
[...objs].reduce(
13+
(acc, obj) =>
14+
Object.keys(obj).reduce((_, k) => {
15+
acc[k] = obj[k];
16+
return acc;
17+
}, {}),
18+
{},
19+
);
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import { mergeNoMemberDelimiterStyle } from "../member-delimiter-style";
2+
3+
describe(mergeNoMemberDelimiterStyle, () => {
4+
test("neither options existing", () => {
5+
const result = mergeNoMemberDelimiterStyle(undefined, undefined);
6+
7+
expect(result).toEqual([]);
8+
});
9+
10+
test("new object config existing", () => {
11+
const result = mergeNoMemberDelimiterStyle(undefined, [
12+
{
13+
multiline: {
14+
delimiter: "semi",
15+
requireLast: true,
16+
},
17+
singleline: {
18+
delimiter: "semi",
19+
requireLast: false,
20+
},
21+
},
22+
]);
23+
24+
expect(result).toEqual([
25+
{
26+
multiline: {
27+
delimiter: "semi",
28+
requireLast: true,
29+
},
30+
singleline: {
31+
delimiter: "semi",
32+
requireLast: false,
33+
},
34+
},
35+
]);
36+
});
37+
38+
test("both object config existing", () => {
39+
const result = mergeNoMemberDelimiterStyle(
40+
[
41+
{
42+
singleline: {
43+
delimiter: "semi",
44+
requireLast: false,
45+
},
46+
},
47+
],
48+
[
49+
{
50+
singleline: {
51+
delimiter: "semi",
52+
requireLast: false,
53+
},
54+
multiline: {
55+
delimiter: "semi",
56+
requireLast: true,
57+
},
58+
},
59+
],
60+
);
61+
62+
expect(result).toEqual([
63+
{
64+
multiline: {
65+
delimiter: "semi",
66+
requireLast: true,
67+
},
68+
singleline: {
69+
delimiter: "semi",
70+
requireLast: false,
71+
},
72+
},
73+
]);
74+
});
75+
});

0 commit comments

Comments
 (0)