Skip to content

Commit 178b76e

Browse files
authored
support case-insensitive-param-case (#2738)
1 parent c7e89bf commit 178b76e

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

projects/standard-rulesets/src/naming-changes/__tests__/__snapshots__/naming-changes.test.ts.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -2068,4 +2068,4 @@ exports[`naming changes configuration naming change configuration validation 2`]
20682068

20692069
exports[`naming changes configuration naming change configuration validation 3`] = `"Expected config.applies in NamingChangesRuleset to be specified and be one of added, addedOrChanged, always"`;
20702070

2071-
exports[`naming changes configuration naming change configuration validation 4`] = `"Expected casing option to be one of snake_case, camelCase, Capital-Param-Case, param-case, PascalCase, received not a valid format for queryParameters"`;
2071+
exports[`naming changes configuration naming change configuration validation 4`] = `"Expected casing option to be one of snake_case, camelCase, Capital-Param-Case, param-case, PascalCase, case-insensitive-param-case, received not a valid format for queryParameters"`;

projects/standard-rulesets/src/naming-changes/__tests__/is-case.test.ts

+25
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,29 @@ describe('isCase', () => {
134134
expect(isCase(failingCase, 'PascalCase')).toBe(false);
135135
}
136136
});
137+
138+
test('case-insensitive-param-case', () => {
139+
const passingCases = [
140+
'kebab-case-For-fun',
141+
'snake',
142+
'kebabwithoutfriends',
143+
'param1-Wwit2h-num3bers',
144+
'1param-2with-Leading-number',
145+
];
146+
const failingCases = [
147+
'',
148+
'some-kebab-someCamel',
149+
'some-AeAab-someCamel',
150+
'camelCase',
151+
'snake_case_for_fun',
152+
];
153+
for (const passingCase of passingCases) {
154+
console.log(passingCase);
155+
expect(isCase(passingCase, 'case-insensitive-param-case')).toBe(true);
156+
}
157+
158+
for (const failingCase of failingCases) {
159+
expect(isCase(failingCase, 'case-insensitive-param-case')).toBe(false);
160+
}
161+
});
137162
});

projects/standard-rulesets/src/naming-changes/constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const casing = [
44
'Capital-Param-Case',
55
'param-case',
66
'PascalCase',
7+
'case-insensitive-param-case',
78
] as const;
89

910
export const appliesWhen = ['added', 'addedOrChanged', 'always'] as const;

projects/standard-rulesets/src/naming-changes/isCase.ts

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ function regexForRule(format: (typeof casing)[number]) {
1212
return /^[A-Z][a-z0-9]+(?:[A-Z0-9][a-z0-9]+)*$/;
1313
case 'snake_case':
1414
return /^[a-z0-9]+(?:_[a-z0-9]+)*$/;
15+
case 'case-insensitive-param-case':
16+
return /^[a-zA-Z0-9][a-z0-9]*(-[a-zA-Z0-9][a-z0-9]*)*$/;
1517
default:
1618
return /(.*?)/;
1719
}

0 commit comments

Comments
 (0)