Skip to content

Commit c464d30

Browse files
committed
Parsers
1 parent 850680d commit c464d30

File tree

4 files changed

+34
-23
lines changed

4 files changed

+34
-23
lines changed

ResourceParser.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {OpenAPIV3} from "openapi-types";
22
import * as lodash from "lodash";
3-
import {toResourceName} from "./src/n8n/utils";
43

54
export interface IResourceParser {
65
name(tag: OpenAPIV3.TagObject): string
@@ -16,9 +15,7 @@ export class DefaultResourceParser {
1615
}
1716

1817
value(tag: Pick<OpenAPIV3.TagObject, "name">): string {
19-
// TODO: use startCase by default
20-
return toResourceName(tag.name)
21-
// return lodash.startCase(tag.name);
18+
return lodash.startCase(tag.name)
2219
}
2320

2421
description(tag: OpenAPIV3.TagObject): string {

src/N8NPropertiesBuilder.spec.ts

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {OpenAPIV3} from "openapi-types";
55
import {OperationContext} from "./openapi/OpenAPIVisitor";
66
import * as lodash from "lodash";
77
import {DefaultOperationParser} from "./OperationParser";
8+
import {DefaultResourceParser} from "../ResourceParser";
89

910
export class CustomOperationParser extends DefaultOperationParser {
1011
name(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
@@ -28,6 +29,12 @@ export class CustomOperationParser extends DefaultOperationParser {
2829
}
2930
}
3031

32+
export class CustomResourceParser extends DefaultResourceParser {
33+
value(tag: OpenAPIV3.TagObject): string {
34+
return lodash.startCase(tag.name.replace(/[^a-zA-Z0-9_-]/g, ''));
35+
}
36+
}
37+
3138
test('query param', () => {
3239
const paths = {
3340
'/api/entities': {
@@ -51,7 +58,10 @@ test('query param', () => {
5158
},
5259
};
5360

54-
const parser = new N8NPropertiesBuilder({paths}, {operation: new CustomOperationParser()});
61+
const parser = new N8NPropertiesBuilder({paths}, {
62+
operation: new CustomOperationParser(),
63+
resource: new CustomResourceParser(),
64+
});
5565
const result = parser.build()
5666

5767
expect(result).toEqual([
@@ -159,7 +169,8 @@ test('path param', () => {
159169

160170
const parser = new N8NPropertiesBuilder({paths}, {
161171
OperationsCollector: BaseOperationsCollector,
162-
operation: new CustomOperationParser()
172+
operation: new CustomOperationParser(),
173+
resource: new CustomResourceParser(),
163174
});
164175
const result = parser.build()
165176
expect(result).toEqual([
@@ -277,7 +288,8 @@ test('request body', () => {
277288

278289
const parser = new N8NPropertiesBuilder({paths, components}, {
279290
OperationsCollector: BaseOperationsCollector,
280-
operation: new CustomOperationParser()
291+
operation: new CustomOperationParser(),
292+
resource: new CustomResourceParser(),
281293
});
282294
const result = parser.build()
283295

@@ -419,7 +431,8 @@ test('enum schema', () => {
419431
// @ts-ignore
420432
const parser = new N8NPropertiesBuilder({paths}, {
421433
OperationsCollector: BaseOperationsCollector,
422-
operation: new CustomOperationParser()
434+
operation: new CustomOperationParser(),
435+
resource: new CustomResourceParser(),
423436
});
424437
const result = parser.build()
425438

@@ -524,7 +537,8 @@ test('body "array" param', () => {
524537

525538
const parser = new N8NPropertiesBuilder({paths}, {
526539
OperationsCollector: BaseOperationsCollector,
527-
operation: new CustomOperationParser()
540+
operation: new CustomOperationParser(),
541+
resource: new CustomResourceParser(),
528542
});
529543
const result = parser.build()
530544

@@ -670,7 +684,8 @@ test('test overrides', () => {
670684

671685
const parser = new N8NPropertiesBuilder({paths, components}, {
672686
OperationsCollector: BaseOperationsCollector,
673-
operation: new CustomOperationParser()
687+
operation: new CustomOperationParser(),
688+
resource: new CustomResourceParser(),
674689
});
675690
const result = parser.build(customDefaults)
676691

@@ -809,7 +824,8 @@ test('multiple tags', () => {
809824
};
810825

811826
const parser = new N8NPropertiesBuilder({paths}, {
812-
operation: new CustomOperationParser()
827+
operation: new CustomOperationParser(),
828+
resource: new CustomResourceParser(),
813829
})
814830
const result = parser.build()
815831

@@ -1004,7 +1020,8 @@ test('no tags - default tag', () => {
10041020
};
10051021

10061022
const parser = new N8NPropertiesBuilder({paths}, {
1007-
operation: new CustomOperationParser()
1023+
operation: new CustomOperationParser(),
1024+
resource: new CustomResourceParser(),
10081025
});
10091026
const result = parser.build()
10101027

src/n8n/utils.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
import * as lodash from "lodash";
2-
3-
/**
4-
* Convert a string to a resource name
5-
* @param name
6-
*/
7-
export function toResourceName(name: string) {
8-
// keep only ascii, no emojis
9-
return lodash.startCase(name.replace(/[^a-zA-Z0-9_-]/g, ''));
10-
}
11-
121
/**
132
* /api/entities/{entity} => /api/entities/{{$parameter["entity"]}}
143
*/

tests/waha.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {OpenAPIV3} from "openapi-types";
44
import {OperationContext} from "../src/openapi/OpenAPIVisitor";
55
import {DefaultOperationParser} from "../src/OperationParser";
66
import * as lodash from "lodash";
7+
import {DefaultResourceParser} from "../ResourceParser";
78

89
function sessionFirst(a: any, b: any) {
910
if (a.name === 'session') {
@@ -15,6 +16,12 @@ function sessionFirst(a: any, b: any) {
1516
return 0;
1617
}
1718

19+
export class WAHAResourceParser extends DefaultResourceParser {
20+
value(tag: OpenAPIV3.TagObject): string {
21+
return lodash.startCase(tag.name.replace(/[^a-zA-Z0-9_-]/g, ''));
22+
}
23+
}
24+
1825
export class WAHAOperationParser extends DefaultOperationParser {
1926
name(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
2027
let operationId: string = operation.operationId!!.split('_').slice(1).join('_');
@@ -50,6 +57,7 @@ test('waha.json', () => {
5057
const config: N8NPropertiesBuilderConfig = {
5158
OperationsCollector: WAHAOperationsCollector,
5259
operation: new WAHAOperationParser(),
60+
resource: new WAHAResourceParser(),
5361
}
5462
const parser = new N8NPropertiesBuilder(doc, config);
5563
const result = parser.build()

0 commit comments

Comments
 (0)