Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit 6db0da7

Browse files
committed
Add rule @typescript-eslint/member-delimiter-style
1 parent e483c50 commit 6db0da7

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ module.exports = defineConfig({
120120
'readonly',
121121
'scripthost',
122122
'sharedmemory',
123+
'singleline',
123124
'tsconfig',
124125
'typedarrays',
125126
'unix',

src/rules/typescript-eslint/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type { ExplicitFunctionReturnTypeRule } from './explicit-function-return-
1010
import type { ExplicitMemberAccessibilityRule } from './explicit-member-accessibility';
1111
import type { IndentRule } from './indent';
1212
import type { InterfaceNamePrefixRule } from './interface-name-prefix';
13+
import type { MemberDelimiterStyleRule } from './member-delimiter-style';
1314
import type { MemberOrderingRule } from './member-ordering';
1415
import type { NoExplicitAnyRule } from './no-explicit-any';
1516
import type { NoInferrableTypesRule } from './no-inferrable-types';
@@ -38,6 +39,7 @@ export type TypeScriptEslintRules = AdjacentOverloadSignaturesRule &
3839
ExplicitMemberAccessibilityRule &
3940
IndentRule &
4041
InterfaceNamePrefixRule &
42+
MemberDelimiterStyleRule &
4143
MemberOrderingRule &
4244
NoExplicitAnyRule &
4345
NoInferrableTypesRule &
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import type { RuleConfig } from '../rule-config';
2+
3+
/** Base Config. */
4+
export interface BaseConfig {
5+
multiline?: {
6+
/**
7+
* @default 'semi'
8+
*
9+
* @see [delimiter](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#delimiter)
10+
*/
11+
delimiter?: 'none' | 'semi' | 'comma';
12+
/**
13+
* @default true
14+
*
15+
* @see [requireLast](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#requirelast)
16+
*/
17+
requireLast?: boolean;
18+
};
19+
singleline?: {
20+
/**
21+
* @default 'semi'
22+
*
23+
* @see [delimiter](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#delimiter)
24+
*/
25+
delimiter?: 'semi' | 'comma';
26+
/**
27+
* @default false
28+
*
29+
* @see [requireLast](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#requirelast)
30+
*/
31+
requireLast?: boolean;
32+
};
33+
}
34+
35+
/**
36+
* Option.
37+
*/
38+
export type MemberDelimiterStyleOption = BaseConfig & {
39+
/**
40+
* Allows you to specify options specifically for either `interfaces` or `type` definitions / inline `type`s.
41+
*
42+
* @see [overrides](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#overrides)
43+
*/
44+
overrides?: {
45+
interface?: BaseConfig;
46+
typeLiteral?: BaseConfig;
47+
};
48+
/**
49+
* @default 'brackets'
50+
*
51+
* @see [multilineDetection](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md#options)
52+
*/
53+
multilineDetection?: 'brackets' | 'last-member';
54+
};
55+
56+
/**
57+
* Options.
58+
*/
59+
export type MemberDelimiterStyleOptions = [MemberDelimiterStyleOption?];
60+
61+
/**
62+
* Require a specific member delimiter style for interfaces and type literals.
63+
*
64+
* @see [member-delimiter-style](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md)
65+
*/
66+
export type MemberDelimiterStyleRuleConfig = RuleConfig<MemberDelimiterStyleOptions>;
67+
68+
/**
69+
* Require a specific member delimiter style for interfaces and type literals.
70+
*
71+
* @see [member-delimiter-style](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md)
72+
*/
73+
export interface MemberDelimiterStyleRule {
74+
/**
75+
* Require a specific member delimiter style for interfaces and type literals.
76+
*
77+
* @see [member-delimiter-style](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/member-delimiter-style.md)
78+
*/
79+
'@typescript-eslint/member-delimiter-style': MemberDelimiterStyleRuleConfig;
80+
}

0 commit comments

Comments
 (0)