Skip to content

Commit 107895a

Browse files
committed
Better cleanup of service and operation names
1 parent 245afe6 commit 107895a

15 files changed

+425
-308
lines changed

src/openApi/v2/parser/getOperationName.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,10 @@ describe('getOperationName', () => {
99
expect(getOperationName('foo-bar')).toEqual('fooBar');
1010
expect(getOperationName('foo_bar')).toEqual('fooBar');
1111
expect(getOperationName('foo.bar')).toEqual('fooBar');
12+
expect(getOperationName('@foo.bar')).toEqual('fooBar');
13+
expect(getOperationName('$foo.bar')).toEqual('fooBar');
14+
expect(getOperationName('_foo.bar')).toEqual('fooBar');
15+
expect(getOperationName('-foo.bar')).toEqual('fooBar');
16+
expect(getOperationName('123.foo.bar')).toEqual('fooBar');
1217
});
1318
});

src/openApi/v2/parser/getOperationName.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import camelCase from 'camelcase';
66
* the most popular Javascript and Typescript writing style.
77
*/
88
export function getOperationName(value: string): string {
9-
const clean = value.replace(/[^\w\s\-]+/g, '-').trim();
9+
const clean = value
10+
.replace(/^[^a-zA-Z]+/g, '')
11+
.replace(/[^\w\-]+/g, '-')
12+
.trim();
1013
return camelCase(clean);
1114
}

src/openApi/v2/parser/getOperationParameterName.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ describe('getOperationParameterName', () => {
55
expect(getOperationParameterName('')).toEqual('');
66
expect(getOperationParameterName('foobar')).toEqual('foobar');
77
expect(getOperationParameterName('fooBar')).toEqual('fooBar');
8-
expect(getOperationParameterName('foo-bar')).toEqual('fooBar');
98
expect(getOperationParameterName('foo_bar')).toEqual('fooBar');
9+
expect(getOperationParameterName('foo-bar')).toEqual('fooBar');
1010
expect(getOperationParameterName('foo.bar')).toEqual('fooBar');
11+
expect(getOperationParameterName('@foo.bar')).toEqual('fooBar');
12+
expect(getOperationParameterName('$foo.bar')).toEqual('fooBar');
13+
expect(getOperationParameterName('123.foo.bar')).toEqual('fooBar');
1114
expect(getOperationParameterName('Foo-Bar')).toEqual('fooBar');
1215
expect(getOperationParameterName('FOO-BAR')).toEqual('fooBar');
1316
});

src/openApi/v2/parser/getOperationParameterName.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import camelCase from 'camelcase';
55
* For example: 'filter.someProperty' becomes 'filterSomeProperty'.
66
*/
77
export function getOperationParameterName(value: string): string {
8-
const clean = value.replace(/[^\w\s\-]+/g, '-').trim();
8+
const clean = value
9+
.replace(/^[^a-zA-Z]+/g, '')
10+
.replace(/[^\w\-]+/g, '-')
11+
.trim();
912
return camelCase(clean);
1013
}

src/openApi/v2/parser/getServiceClassName.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@ describe('getServiceClassName', () => {
99
expect(getServiceClassName('FooBarService')).toEqual('FooBarService');
1010
expect(getServiceClassName('Foo Bar Service')).toEqual('FooBarService');
1111
expect(getServiceClassName('foo bar service')).toEqual('FooBarService');
12+
expect(getServiceClassName('@fooBar')).toEqual('FooBarService');
13+
expect(getServiceClassName('$fooBar')).toEqual('FooBarService');
14+
expect(getServiceClassName('123fooBar')).toEqual('FooBarService');
1215
});
1316
});

src/openApi/v2/parser/getServiceClassName.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import camelCase from 'camelcase';
55
* the input string to PascalCase and appends the "Service" prefix if needed.
66
*/
77
export function getServiceClassName(value: string): string {
8-
const clean = value.replace(/[^\w\s\-]+/g, '-').trim();
8+
const clean = value
9+
.replace(/^[^a-zA-Z]+/g, '')
10+
.replace(/[^\w\-]+/g, '-')
11+
.trim();
912
const name = camelCase(clean, { pascalCase: true });
1013
if (name && !name.endsWith('Service')) {
1114
return `${name}Service`;

src/openApi/v3/parser/getOperationName.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,10 @@ describe('getOperationName', () => {
99
expect(getOperationName('foo-bar')).toEqual('fooBar');
1010
expect(getOperationName('foo_bar')).toEqual('fooBar');
1111
expect(getOperationName('foo.bar')).toEqual('fooBar');
12+
expect(getOperationName('@foo.bar')).toEqual('fooBar');
13+
expect(getOperationName('$foo.bar')).toEqual('fooBar');
14+
expect(getOperationName('_foo.bar')).toEqual('fooBar');
15+
expect(getOperationName('-foo.bar')).toEqual('fooBar');
16+
expect(getOperationName('123.foo.bar')).toEqual('fooBar');
1217
});
1318
});

src/openApi/v3/parser/getOperationName.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import camelCase from 'camelcase';
66
* the most popular Javascript and Typescript writing style.
77
*/
88
export function getOperationName(value: string): string {
9-
const clean = value.replace(/[^\w\s\-]+/g, '-').trim();
9+
const clean = value
10+
.replace(/^[^a-zA-Z]+/g, '')
11+
.replace(/[^\w\-]+/g, '-')
12+
.trim();
1013
return camelCase(clean);
1114
}

src/openApi/v3/parser/getOperationParameterName.spec.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ describe('getOperationParameterName', () => {
55
expect(getOperationParameterName('')).toEqual('');
66
expect(getOperationParameterName('foobar')).toEqual('foobar');
77
expect(getOperationParameterName('fooBar')).toEqual('fooBar');
8-
expect(getOperationParameterName('foo-bar')).toEqual('fooBar');
98
expect(getOperationParameterName('foo_bar')).toEqual('fooBar');
9+
expect(getOperationParameterName('foo-bar')).toEqual('fooBar');
1010
expect(getOperationParameterName('foo.bar')).toEqual('fooBar');
11+
expect(getOperationParameterName('@foo.bar')).toEqual('fooBar');
12+
expect(getOperationParameterName('$foo.bar')).toEqual('fooBar');
13+
expect(getOperationParameterName('123.foo.bar')).toEqual('fooBar');
1114
expect(getOperationParameterName('Foo-Bar')).toEqual('fooBar');
1215
expect(getOperationParameterName('FOO-BAR')).toEqual('fooBar');
1316
});

src/openApi/v3/parser/getOperationParameterName.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import camelCase from 'camelcase';
55
* For example: 'filter.someProperty' becomes 'filterSomeProperty'.
66
*/
77
export function getOperationParameterName(value: string): string {
8-
const clean = value.replace(/[^\w\s\-]+/g, '-').trim();
8+
const clean = value
9+
.replace(/^[^a-zA-Z]+/g, '')
10+
.replace(/[^\w\-]+/g, '-')
11+
.trim();
912
return camelCase(clean);
1013
}

0 commit comments

Comments
 (0)