Skip to content

Commit ff53126

Browse files
committed
commitlint.config: remove workaround for body
The workaround is not needed anymore because we're now using a recent-enough version of commitlint that includes the fix for the bug [1]. [1] conventional-changelog/commitlint#3428
1 parent 60929f3 commit ff53126

File tree

4 files changed

+127
-94
lines changed

4 files changed

+127
-94
lines changed

commitlint.config.ts

Lines changed: 61 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,28 @@ module.exports = {
5959
{
6060
rules: {
6161
"body-prose": ({ raw }: { raw: any }) => {
62-
let rawStr = Helpers.convertAnyToString(raw, "raw").trim();
62+
let rawUncastedStr = Helpers.convertAnyToString(raw, "raw");
63+
Helpers.assertRaw(rawUncastedStr);
64+
let rawStr = (rawUncastedStr as string).trim();
65+
6366
return Plugins.bodyProse(rawStr);
6467
},
6568

6669
"commit-hash-alone": ({ raw }: { raw: any }) => {
67-
let rawStr = Helpers.convertAnyToString(raw, "raw");
70+
let rawUncastedStr = Helpers.convertAnyToString(raw, "raw");
71+
Helpers.assertRaw(rawUncastedStr);
72+
let rawStr = (rawUncastedStr as string).trim();
73+
6874
return Plugins.commitHashAlone(rawStr);
6975
},
7076

7177
"empty-wip": ({ header }: { header: any }) => {
72-
let headerStr = Helpers.convertAnyToString(
78+
let headerUncastedStr = Helpers.convertAnyToString(
7379
header,
7480
"header"
7581
);
82+
Helpers.assertHeader(headerUncastedStr);
83+
let headerStr = headerUncastedStr as string;
7684
return Plugins.emptyWip(headerStr);
7785
},
7886

@@ -81,108 +89,138 @@ module.exports = {
8189
_: any,
8290
maxLineLength: number
8391
) => {
84-
let headerStr = Helpers.convertAnyToString(
92+
let headerUncastedStr = Helpers.convertAnyToString(
8593
header,
8694
"header"
8795
);
96+
Helpers.assertHeader(headerUncastedStr);
97+
let headerStr = headerUncastedStr as string;
8898
return Plugins.headerMaxLengthWithSuggestions(
8999
headerStr,
90100
maxLineLength
91101
);
92102
},
93103

94-
"footer-notes-misplacement": ({ raw }: { raw: any }) => {
95-
let rawStr = Helpers.convertAnyToString(raw, "raw").trim();
96-
return Plugins.footerNotesMisplacement(rawStr);
104+
"footer-notes-misplacement": ({ body }: { body: any }) => {
105+
let bodyStr = Helpers.convertAnyToString(body, "body");
106+
return Plugins.footerNotesMisplacement(bodyStr);
97107
},
98108

99-
"footer-references-existence": ({ raw }: { raw: any }) => {
100-
let rawStr = Helpers.convertAnyToString(raw, "raw").trim();
101-
return Plugins.footerReferencesExistence(rawStr);
109+
"footer-references-existence": ({ body }: { body: any }) => {
110+
let bodyStr = Helpers.convertAnyToString(body, "body");
111+
112+
return Plugins.footerReferencesExistence(bodyStr);
102113
},
103114

104115
"prefer-slash-over-backslash": ({
105116
header,
106117
}: {
107118
header: any;
108119
}) => {
109-
let headerStr = Helpers.convertAnyToString(
120+
let headerUncastedStr = Helpers.convertAnyToString(
110121
header,
111122
"header"
112123
);
124+
Helpers.assertHeader(headerUncastedStr);
125+
let headerStr = headerUncastedStr as string;
113126
return Plugins.preferSlashOverBackslash(headerStr);
114127
},
115128

116129
"proper-issue-refs": ({ raw }: { raw: any }) => {
117-
let rawStr = Helpers.convertAnyToString(raw, "raw").trim();
130+
let rawUncastedStr = Helpers.convertAnyToString(raw, "raw");
131+
Helpers.assertRaw(rawUncastedStr);
132+
let rawStr = (rawUncastedStr as string).trim();
133+
118134
return Plugins.properIssueRefs(rawStr);
119135
},
120136

121137
"title-uppercase": ({ header }: { header: any }) => {
122-
let headerStr = Helpers.convertAnyToString(
138+
let headerUncastedStr = Helpers.convertAnyToString(
123139
header,
124140
"header"
125141
);
142+
Helpers.assertHeader(headerUncastedStr);
143+
let headerStr = headerUncastedStr as string;
144+
126145
return Plugins.titleUppercase(headerStr);
127146
},
128147

129148
"too-many-spaces": ({ raw }: { raw: any }) => {
130-
let rawStr = Helpers.convertAnyToString(raw, "raw");
149+
let rawUncastedStr = Helpers.convertAnyToString(raw, "raw");
150+
Helpers.assertRaw(rawUncastedStr);
151+
let rawStr = (rawUncastedStr as string).trim();
152+
131153
return Plugins.tooManySpaces(rawStr);
132154
},
133155

134156
"type-space-after-colon": ({ header }: { header: any }) => {
135-
let headerStr = Helpers.convertAnyToString(
157+
let headerUncastedStr = Helpers.convertAnyToString(
136158
header,
137159
"header"
138160
);
161+
Helpers.assertHeader(headerUncastedStr);
162+
let headerStr = headerUncastedStr as string;
139163
return Plugins.typeSpaceAfterColon(headerStr);
140164
},
141165

142166
"type-with-square-brackets": ({ header }: { header: any }) => {
143-
let headerStr = Helpers.convertAnyToString(
167+
let headerUncastedStr = Helpers.convertAnyToString(
144168
header,
145169
"header"
146170
);
171+
Helpers.assertHeader(headerUncastedStr);
172+
let headerStr = headerUncastedStr as string;
147173
return Plugins.typeWithSquareBrackets(headerStr);
148174
},
149175

150176
// NOTE: we use 'header' instead of 'subject' as a workaround to this bug: https://github.com/conventional-changelog/commitlint/issues/3404
151177
"subject-lowercase": ({ header }: { header: any }) => {
152-
let headerStr = Helpers.convertAnyToString(
178+
let headerUncastedStr = Helpers.convertAnyToString(
153179
header,
154180
"header"
155181
);
182+
Helpers.assertHeader(headerUncastedStr);
183+
let headerStr = headerUncastedStr as string;
156184
return Plugins.subjectLowercase(headerStr);
157185
},
158186

159187
"type-space-after-comma": ({ header }: { header: any }) => {
160-
let headerStr = Helpers.convertAnyToString(
188+
let headerUncastedStr = Helpers.convertAnyToString(
161189
header,
162190
"header"
163191
);
192+
Helpers.assertHeader(headerUncastedStr);
193+
let headerStr = headerUncastedStr as string;
164194
return Plugins.typeSpaceAfterComma(headerStr);
165195
},
166196

167197
"body-soft-max-line-length": (
168-
{ raw }: { raw: any },
198+
{ body }: { body: any },
169199
_: any,
170200
maxLineLength: number
171201
) => {
172-
let rawStr = Helpers.convertAnyToString(raw, "raw").trim();
173-
return Plugins.bodySoftMaxLineLength(rawStr, maxLineLength);
202+
let bodyStr = Helpers.convertAnyToString(body, "body");
203+
return Plugins.bodySoftMaxLineLength(
204+
bodyStr,
205+
maxLineLength
206+
);
174207
},
175208

176209
"trailing-whitespace": ({ raw }: { raw: any }) => {
177-
let rawStr = Helpers.convertAnyToString(raw, "raw");
210+
let rawUncastedStr = Helpers.convertAnyToString(raw, "raw");
211+
Helpers.assertRaw(rawUncastedStr);
212+
let rawStr = rawUncastedStr as string;
213+
178214
return Plugins.trailingWhitespace(rawStr);
179215
},
180216

181217
"type-space-before-paren": ({ header }: { header: any }) => {
182-
let headerStr = Helpers.convertAnyToString(
218+
let headerUncastedStr = Helpers.convertAnyToString(
183219
header,
184220
"header"
185221
);
222+
Helpers.assertHeader(headerUncastedStr);
223+
let headerStr = headerUncastedStr as string;
186224
return Plugins.typeSpaceBeforeParen(headerStr);
187225
},
188226
},

commitlint/helpers.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,28 @@ export abstract class Helpers {
1919
public static convertAnyToString(
2020
potentialString: any,
2121
paramName: string
22-
): string {
22+
): string | null {
2323
if (potentialString === null || potentialString === undefined) {
2424
// otherwise, String(null) might give us the stupid string "null"
25+
return null;
26+
}
27+
return String(potentialString);
28+
}
29+
30+
public static assertRaw(rawStr: string | null) {
31+
if (rawStr === null) {
2532
throw new Error(
26-
"Unexpected " +
27-
paramName +
28-
"===null or " +
29-
paramName +
30-
"===undefined happened"
33+
"This is unexpected because raw should never be null"
34+
);
35+
}
36+
}
37+
38+
public static assertHeader(headerStr: string | null) {
39+
if (headerStr === null) {
40+
throw new Error(
41+
"This is unexpected because header should never be null"
3142
);
3243
}
33-
return String(potentialString);
3444
}
3545

3646
public static assertCharacter(letter: string) {

commitlint/plugins.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,7 @@ test("trailing-whitespace5", () => {
831831
let trailingWhitespace5 = runCommitLintOnMsg(
832832
commitMsgWithTrailingWhiteSpaceInBodyEnd
833833
);
834+
834835
expect(trailingWhitespace5.status).not.toBe(0);
835836
});
836837

0 commit comments

Comments
 (0)