Skip to content

Commit e462e72

Browse files
authored
DelimiterCase / SnakeCase / ScreamingSnakeCase / KebabCase: Fix default value for splitOnNumbers option (#1073)
1 parent af5bfb7 commit e462e72

File tree

8 files changed

+36
-112
lines changed

8 files changed

+36
-112
lines changed

source/delimiter-case.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const rawCliOptions: OddlyCasedProperties<SomeOptions> = {
6161
export type DelimiterCase<
6262
Value,
6363
Delimiter extends string,
64-
Options extends WordsOptions = {},
64+
Options extends WordsOptions = {splitOnNumbers: false},
6565
> = Value extends string
6666
? IsStringLiteral<Value> extends false
6767
? Value

source/kebab-case.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ const rawCliOptions: KebabCasedProperties<CliOptions> = {
3939
*/
4040
export type KebabCase<
4141
Value,
42-
Options extends WordsOptions = {},
42+
Options extends WordsOptions = {splitOnNumbers: false},
4343
> = DelimiterCase<Value, '-', Options>;

source/screaming-snake-case.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ const someVariableNoSplitOnNumbers: ScreamingSnakeCase<'p2pNetwork', {splitOnNum
2020
*/
2121
export type ScreamingSnakeCase<
2222
Value,
23-
Options extends WordsOptions = {},
23+
Options extends WordsOptions = {splitOnNumbers: false},
2424
> = Value extends string ? Uppercase<SnakeCase<Value, Options>> : Value;

source/snake-case.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ const dbResult: SnakeCasedProperties<ModelProps> = {
3939
*/
4040
export type SnakeCase<
4141
Value,
42-
Options extends WordsOptions = {},
42+
Options extends WordsOptions = {splitOnNumbers: false},
4343
> = DelimiterCase<Value, '_', Options>;

test-d/delimiter-case.ts

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type {DelimiterCase} from '../source/delimiter-case';
55
const delimiterFromCamel: DelimiterCase<'fooBar', '#'> = 'foo#bar';
66
expectType<'foo#bar'>(delimiterFromCamel);
77

8-
const delimiterFromComplexCamel: DelimiterCase<'fooBarAbc123', '#', {splitOnNumbers: false}> = 'foo#bar#abc123';
8+
const delimiterFromComplexCamel: DelimiterCase<'fooBarAbc123', '#'> = 'foo#bar#abc123';
99
expectType<'foo#bar#abc123'>(delimiterFromComplexCamel);
1010

1111
const delimiterFromComplexCamelSplitOnNumbers: DelimiterCase<
@@ -15,22 +15,13 @@ const delimiterFromComplexCamelSplitOnNumbers: DelimiterCase<
1515
> = 'foo#bar#abc#123';
1616
expectType<'foo#bar#abc#123'>(delimiterFromComplexCamelSplitOnNumbers);
1717

18-
const delimiterFromComplexCamelNoSplitOnNumbers: DelimiterCase<
19-
'fooBarAbc123',
20-
'#',
21-
{splitOnNumbers: false}
22-
> = 'foo#bar#abc123';
18+
const delimiterFromComplexCamelNoSplitOnNumbers: DelimiterCase<'fooBarAbc123', '#'> = 'foo#bar#abc123';
2319
expectType<'foo#bar#abc123'>(delimiterFromComplexCamelNoSplitOnNumbers);
2420

25-
const delimiterNumberInTheMiddle: DelimiterCase<'p2pNetwork', '#'>
26-
= 'p#2#p#network';
21+
const delimiterNumberInTheMiddle: DelimiterCase<'p2pNetwork', '#', {splitOnNumbers: true}> = 'p#2#p#network';
2722
expectType<'p#2#p#network'>(delimiterNumberInTheMiddle);
2823

29-
const delimiterNumberInTheMiddleNoSplitOnNumbers: DelimiterCase<
30-
'p2pNetwork',
31-
'#',
32-
{splitOnNumbers: false}
33-
> = 'p2p#network';
24+
const delimiterNumberInTheMiddleNoSplitOnNumbers: DelimiterCase<'p2pNetwork', '#'> = 'p2p#network';
3425
expectType<'p2p#network'>(delimiterNumberInTheMiddleNoSplitOnNumbers);
3526

3627
const delimiterFromPascal: DelimiterCase<'FooBar', '#'> = 'foo#bar';
@@ -86,50 +77,25 @@ const delimiterFromMixed3: DelimiterCase<'parseHTMLItem', '#'>
8677
= 'parse#html#item';
8778
expectType<'parse#html#item'>(delimiterFromMixed3);
8879

89-
const delimiterFromNumberInTheMiddleSplitOnNumbers: DelimiterCase<
90-
'foo2bar',
91-
'#'
92-
> = 'foo#2#bar';
80+
const delimiterFromNumberInTheMiddleSplitOnNumbers: DelimiterCase<'foo2bar', '#', {splitOnNumbers: true}> = 'foo#2#bar';
9381
expectType<'foo#2#bar'>(delimiterFromNumberInTheMiddleSplitOnNumbers);
9482

95-
const delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase: DelimiterCase<
96-
'foO2Bar',
97-
'#'
98-
> = 'fo#o#2#bar';
83+
const delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase: DelimiterCase<'foO2Bar', '#', {splitOnNumbers: true}> = 'fo#o#2#bar';
9984
expectType<'fo#o#2#bar'>(delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase);
10085

101-
const delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase2: DelimiterCase<
102-
'foO2bar',
103-
'#'
104-
> = 'fo#o#2#bar';
86+
const delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase2: DelimiterCase<'foO2bar', '#', {splitOnNumbers: true}> = 'fo#o#2#bar';
10587
expectType<'fo#o#2#bar'>(delimiterFromNumberInTheMiddleSplitOnNumbersEdgeCase2);
10688

107-
const delimiterFromNumberInTheMiddleNoSplitOnNumbers: DelimiterCase<
108-
'foo2bar',
109-
'#',
110-
{splitOnNumbers: false}
111-
> = 'foo2bar';
89+
const delimiterFromNumberInTheMiddleNoSplitOnNumbers: DelimiterCase<'foo2bar', '#'> = 'foo2bar';
11290
expectType<'foo2bar'>(delimiterFromNumberInTheMiddleNoSplitOnNumbers);
11391

114-
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: DelimiterCase<
115-
'foo2Bar',
116-
'#',
117-
{splitOnNumbers: false}
118-
> = 'foo2#bar';
92+
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: DelimiterCase<'foo2Bar', '#'> = 'foo2#bar';
11993
expectType<'foo2#bar'>(delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase);
12094

121-
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: DelimiterCase<
122-
'foO2bar',
123-
'#',
124-
{splitOnNumbers: false}
125-
> = 'fo#o2bar';
95+
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: DelimiterCase<'foO2bar', '#'> = 'fo#o2bar';
12696
expectType<'fo#o2bar'>(delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2);
12797

128-
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: DelimiterCase<
129-
'FOO22Bar',
130-
'#',
131-
{splitOnNumbers: false}
132-
> = 'foo22#bar';
98+
const delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: DelimiterCase<'FOO22Bar', '#'> = 'foo22#bar';
13399
expectType<'foo22#bar'>(
134100
delimiterFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3,
135101
);

test-d/kebab-case.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -58,38 +58,23 @@ expectType<'parse-html'>(kebabFromMixed2);
5858
const kebabFromMixed3: KebabCase<'parseHTMLItem'> = 'parse-html-item';
5959
expectType<'parse-html-item'>(kebabFromMixed3);
6060

61-
const kebabFromNumberInTheMiddleSplitOnNumbers: KebabCase<'foo2bar'>
62-
= 'foo-2-bar';
61+
const kebabFromNumberInTheMiddleSplitOnNumbers: KebabCase<'foo2bar', {splitOnNumbers: true}> = 'foo-2-bar';
6362
expectType<'foo-2-bar'>(kebabFromNumberInTheMiddleSplitOnNumbers);
6463

65-
const kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase: KebabCase<'foO2Bar'>
66-
= 'fo-o-2-bar';
64+
const kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase: KebabCase<'foO2Bar', {splitOnNumbers: true}> = 'fo-o-2-bar';
6765
expectType<'fo-o-2-bar'>(kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase);
6866

69-
const kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase2: KebabCase<'foO2bar'>
70-
= 'fo-o-2-bar';
67+
const kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase2: KebabCase<'foO2bar', {splitOnNumbers: true}> = 'fo-o-2-bar';
7168
expectType<'fo-o-2-bar'>(kebabFromNumberInTheMiddleSplitOnNumbersEdgeCase2);
7269

73-
const kebabFromNumberInTheMiddleNoSplitOnNumbers: KebabCase<
74-
'foo2bar',
75-
{splitOnNumbers: false}
76-
> = 'foo2bar';
70+
const kebabFromNumberInTheMiddleNoSplitOnNumbers: KebabCase<'foo2bar'> = 'foo2bar';
7771
expectType<'foo2bar'>(kebabFromNumberInTheMiddleNoSplitOnNumbers);
7872

79-
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: KebabCase<
80-
'foo2Bar',
81-
{splitOnNumbers: false}
82-
> = 'foo2-bar';
73+
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: KebabCase<'foo2Bar'> = 'foo2-bar';
8374
expectType<'foo2-bar'>(kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase);
8475

85-
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: KebabCase<
86-
'foO2bar',
87-
{splitOnNumbers: false}
88-
> = 'fo-o2bar';
76+
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: KebabCase<'foO2bar'> = 'fo-o2bar';
8977
expectType<'fo-o2bar'>(kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2);
9078

91-
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: KebabCase<
92-
'FOO22Bar',
93-
{splitOnNumbers: false}
94-
> = 'foo22-bar';
79+
const kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: KebabCase<'FOO22Bar'> = 'foo22-bar';
9580
expectType<'foo22-bar'>(kebabFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3);

test-d/screaming-snake-case.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,40 +59,25 @@ expectType<'PARSE_HTML'>(snakeFromMixed2);
5959
const snakeFromMixed3: ScreamingSnakeCase<'parseHTMLItem'> = 'PARSE_HTML_ITEM';
6060
expectType<'PARSE_HTML_ITEM'>(snakeFromMixed3);
6161

62-
const snakeFromNumberInTheMiddleSplitOnNumbers: ScreamingSnakeCase<'foo2bar'>
63-
= 'FOO_2_BAR';
62+
const snakeFromNumberInTheMiddleSplitOnNumbers: ScreamingSnakeCase<'foo2bar', {splitOnNumbers: true}> = 'FOO_2_BAR';
6463
expectType<'FOO_2_BAR'>(snakeFromNumberInTheMiddleSplitOnNumbers);
6564

66-
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase: ScreamingSnakeCase<'foO2Bar'>
67-
= 'FO_O_2_BAR';
65+
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase: ScreamingSnakeCase<'foO2Bar', {splitOnNumbers: true}> = 'FO_O_2_BAR';
6866
expectType<'FO_O_2_BAR'>(snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase);
6967

70-
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2: ScreamingSnakeCase<'foO2bar'>
71-
= 'FO_O_2_BAR';
68+
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2: ScreamingSnakeCase<'foO2bar', {splitOnNumbers: true}> = 'FO_O_2_BAR';
7269
expectType<'FO_O_2_BAR'>(snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2);
7370

74-
const snakeFromNumberInTheMiddleNoSplitOnNumbers: ScreamingSnakeCase<
75-
'foo2bar',
76-
{splitOnNumbers: false}
77-
> = 'FOO2BAR';
71+
const snakeFromNumberInTheMiddleNoSplitOnNumbers: ScreamingSnakeCase<'foo2bar'> = 'FOO2BAR';
7872
expectType<'FOO2BAR'>(snakeFromNumberInTheMiddleNoSplitOnNumbers);
7973

80-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: ScreamingSnakeCase<
81-
'foo2Bar',
82-
{splitOnNumbers: false}
83-
> = 'FOO2_BAR';
74+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: ScreamingSnakeCase<'foo2Bar'> = 'FOO2_BAR';
8475
expectType<'FOO2_BAR'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase);
8576

86-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: ScreamingSnakeCase<
87-
'foO2bar',
88-
{splitOnNumbers: false}
89-
> = 'FO_O2BAR';
77+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: ScreamingSnakeCase<'foO2bar'> = 'FO_O2BAR';
9078
expectType<'FO_O2BAR'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2);
9179

92-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: ScreamingSnakeCase<
93-
'FOO22Bar',
94-
{splitOnNumbers: false}
95-
> = 'FOO22_BAR';
80+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: ScreamingSnakeCase<'FOO22Bar'> = 'FOO22_BAR';
9681
expectType<'FOO22_BAR'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3);
9782

9883
const nonStringFromNonString: ScreamingSnakeCase<[]> = [];

test-d/snake-case.ts

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,38 +58,26 @@ expectType<'parse_html'>(snakeFromMixed2);
5858
const snakeFromMixed3: SnakeCase<'parseHTMLItem'> = 'parse_html_item';
5959
expectType<'parse_html_item'>(snakeFromMixed3);
6060

61-
const snakeFromNumberInTheMiddleSplitOnNumbers: SnakeCase<'foo2bar'>
61+
const snakeFromNumberInTheMiddleSplitOnNumbers: SnakeCase<'foo2bar', {splitOnNumbers: true}>
6262
= 'foo_2_bar';
6363
expectType<'foo_2_bar'>(snakeFromNumberInTheMiddleSplitOnNumbers);
6464

65-
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase: SnakeCase<'foO2Bar'>
65+
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase: SnakeCase<'foO2Bar', {splitOnNumbers: true}>
6666
= 'fo_o_2_bar';
6767
expectType<'fo_o_2_bar'>(snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase);
6868

69-
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2: SnakeCase<'foO2bar'>
69+
const snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2: SnakeCase<'foO2bar', {splitOnNumbers: true}>
7070
= 'fo_o_2_bar';
7171
expectType<'fo_o_2_bar'>(snakeFromNumberInTheMiddleSplitOnNumbersEdgeCase2);
7272

73-
const snakeFromNumberInTheMiddleNoSplitOnNumbers: SnakeCase<
74-
'foo2bar',
75-
{splitOnNumbers: false}
76-
> = 'foo2bar';
73+
const snakeFromNumberInTheMiddleNoSplitOnNumbers: SnakeCase<'foo2bar'> = 'foo2bar';
7774
expectType<'foo2bar'>(snakeFromNumberInTheMiddleNoSplitOnNumbers);
7875

79-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: SnakeCase<
80-
'foo2Bar',
81-
{splitOnNumbers: false}
82-
> = 'foo2_bar';
76+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase: SnakeCase<'foo2Bar'> = 'foo2_bar';
8377
expectType<'foo2_bar'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase);
8478

85-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: SnakeCase<
86-
'foO2bar',
87-
{splitOnNumbers: false}
88-
> = 'fo_o2bar';
79+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2: SnakeCase<'foO2bar'> = 'fo_o2bar';
8980
expectType<'fo_o2bar'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase2);
9081

91-
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: SnakeCase<
92-
'FOO22Bar',
93-
{splitOnNumbers: false}
94-
> = 'foo22_bar';
82+
const snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3: SnakeCase<'FOO22Bar'> = 'foo22_bar';
9583
expectType<'foo22_bar'>(snakeFromNumberInTheMiddleNoSplitOnNumbersEdgeCase3);

0 commit comments

Comments
 (0)