forked from ferdikoomen/openapi-typescript-codegen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpostProcessServiceOperationsJsonld.ts
39 lines (31 loc) · 1.4 KB
/
postProcessServiceOperationsJsonld.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import type { Operation } from '../client/interfaces/Operation';
export const postProcessServiceOperationsJsonld = (operation: Operation) => {
operation.parameters.forEach(parameter => {
parameter.mediaType = 'application/ld+json';
parameter.imports = [];
});
if (operation.parametersBody) {
operation.parametersBody.base = replaceServiceName(operation.parametersBody.base);
operation.parametersBody.type = replaceServiceName(operation.parametersBody.base);
operation.parametersBody.imports = [];
}
operation.imports = operation.imports.map(importString => replaceServiceName(importString));
operation.results.forEach(result => {
processResult(result);
if (result.export === 'one-of' || result.export === 'any-of' || result.export === 'all-of') {
result.properties.forEach(processResult);
}
});
};
const processResult = (result: { base: string; type: string; imports: string[] }) => {
result.base = replaceServiceName(result.base);
result.type = replaceServiceName(result.base);
result.imports = result.imports.map(importString => replaceServiceName(importString));
return result;
};
const replaceServiceName = (replaceString: string) => {
if (replaceString === 'void' || replaceString.includes('jsonld')) {
return replaceString;
}
return replaceString.replace('_', '_jsonld_');
};