Skip to content

Commit 08bfe46

Browse files
author
ttristan
committed
UPDATE post processing
1 parent a4b318b commit 08bfe46

File tree

5 files changed

+42
-29
lines changed

5 files changed

+42
-29
lines changed

dist/index.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2464,31 +2464,34 @@ const flatMap = (array, callback) => {
24642464
};
24652465

24662466
const postProcessServiceOperationsJsonld = (operation) => {
2467-
const { service: serviceName } = operation;
24682467
operation.parameters.forEach(parameter => {
24692468
parameter.mediaType = 'application/ld+json';
24702469
parameter.imports = [];
24712470
});
24722471
if (operation.parametersBody) {
2473-
operation.parametersBody.base = replaceServiceName(serviceName, operation.parametersBody.base);
2474-
operation.parametersBody.type = replaceServiceName(serviceName, operation.parametersBody.base);
2472+
operation.parametersBody.base = replaceServiceName(operation.parametersBody.base);
2473+
operation.parametersBody.type = replaceServiceName(operation.parametersBody.base);
24752474
operation.parametersBody.imports = [];
24762475
}
2477-
operation.imports = operation.imports.map(importString => replaceServiceName(serviceName, importString));
2476+
operation.imports = operation.imports.map(importString => replaceServiceName(importString));
24782477
operation.results.forEach(result => {
2479-
result.base = replaceServiceName(serviceName, result.base);
2480-
result.type = replaceServiceName(serviceName, result.base);
2481-
result.imports = result.imports.map(importString => replaceServiceName(serviceName, importString));
2478+
processResult(result);
2479+
if (result.export === 'one-of' || result.export === 'any-of' || result.export === 'all-of') {
2480+
result.properties.forEach(processResult);
2481+
}
24822482
});
24832483
};
2484-
const replaceServiceName = (serviceName, replaceString) => {
2484+
const processResult = (result) => {
2485+
result.base = replaceServiceName(result.base);
2486+
result.type = replaceServiceName(result.base);
2487+
result.imports = result.imports.map(importString => replaceServiceName(importString));
2488+
return result;
2489+
};
2490+
const replaceServiceName = (replaceString) => {
24852491
if (replaceString === 'void' || replaceString.includes('jsonld')) {
24862492
return replaceString;
24872493
}
2488-
const version = replaceString.match(/_v\d+_/);
2489-
const versionString = version ? `_${version[0].split('_')[1]}` : '';
2490-
const versionedServiceName = `${serviceName}${versionString}`;
2491-
return replaceString.replace(versionedServiceName, `${versionedServiceName}_jsonld`);
2494+
return replaceString.replace('_', '_jsonld_');
24922495
};
24932496

24942497
const postProcessServiceOperations = (service, options) => {
@@ -2527,6 +2530,9 @@ const postProcessService = (service, options) => {
25272530
* @param options
25282531
*/
25292532
const postProcessClient = (client, options) => {
2533+
if (options?.useJsonld) {
2534+
client.models = client.models.filter(model => model.name.includes('jsonld'));
2535+
}
25302536
return {
25312537
...client,
25322538
models: client.models.map(model => postProcessModel(model)),

src/utils/postProcessClient.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import { postProcessService } from './postProcessService';
77
* @param client Client object with all the models, services, etc.
88
* @param options
99
*/
10-
export const postProcessClient = (client: Client, options?: { useJsonld: boolean }): Client => {
10+
export const postProcessClient = (client: Client, options?: { useJsonld?: boolean }): Client => {
11+
if (options?.useJsonld) {
12+
client.models = client.models.filter(model => model.name.includes('jsonld'));
13+
}
14+
1115
return {
1216
...client,
1317
models: client.models.map(model => postProcessModel(model)),

src/utils/postProcessService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Service } from '../client/interfaces/Service';
22
import { postProcessServiceImports } from './postProcessServiceImports';
33
import { postProcessServiceOperations } from './postProcessServiceOperations';
44

5-
export const postProcessService = (service: Service, options?: { useJsonld: boolean }): Service => {
5+
export const postProcessService = (service: Service, options?: { useJsonld?: boolean }): Service => {
66
const clone = { ...service };
77
clone.operations = postProcessServiceOperations(clone, options);
88
clone.imports = clone.operations.flatMap(operation => operation.imports);

src/utils/postProcessServiceOperations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { Service } from '../client/interfaces/Service';
33
import { flatMap } from './flatMap';
44
import { postProcessServiceOperationsJsonld } from './postProcessServiceOperationsJsonld';
55

6-
export const postProcessServiceOperations = (service: Service, options?: { useJsonld: boolean }): Operation[] => {
6+
export const postProcessServiceOperations = (service: Service, options?: { useJsonld?: boolean }): Operation[] => {
77
const names = new Map<string, number>();
88

99
return service.operations.map(operation => {
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,39 @@
11
import type { Operation } from '../client/interfaces/Operation';
22

33
export const postProcessServiceOperationsJsonld = (operation: Operation) => {
4-
const { service: serviceName } = operation;
5-
64
operation.parameters.forEach(parameter => {
75
parameter.mediaType = 'application/ld+json';
86
parameter.imports = [];
97
});
108

119
if (operation.parametersBody) {
12-
operation.parametersBody.base = replaceServiceName(serviceName, operation.parametersBody.base);
13-
operation.parametersBody.type = replaceServiceName(serviceName, operation.parametersBody.base);
10+
operation.parametersBody.base = replaceServiceName(operation.parametersBody.base);
11+
operation.parametersBody.type = replaceServiceName(operation.parametersBody.base);
1412
operation.parametersBody.imports = [];
1513
}
1614

17-
operation.imports = operation.imports.map(importString => replaceServiceName(serviceName, importString));
15+
operation.imports = operation.imports.map(importString => replaceServiceName(importString));
1816

1917
operation.results.forEach(result => {
20-
result.base = replaceServiceName(serviceName, result.base);
21-
result.type = replaceServiceName(serviceName, result.base);
22-
result.imports = result.imports.map(importString => replaceServiceName(serviceName, importString));
18+
processResult(result);
19+
20+
if (result.export === 'one-of' || result.export === 'any-of' || result.export === 'all-of') {
21+
result.properties.forEach(processResult);
22+
}
2323
});
2424
};
2525

26-
const replaceServiceName = (serviceName: string, replaceString: string) => {
26+
const processResult = (result: { base: string; type: string; imports: string[] }) => {
27+
result.base = replaceServiceName(result.base);
28+
result.type = replaceServiceName(result.base);
29+
result.imports = result.imports.map(importString => replaceServiceName(importString));
30+
return result;
31+
};
32+
33+
const replaceServiceName = (replaceString: string) => {
2734
if (replaceString === 'void' || replaceString.includes('jsonld')) {
2835
return replaceString;
2936
}
30-
const version = replaceString.match(/_v\d+_/);
31-
const versionString = version ? `_${version[0].split('_')[1]}` : '';
32-
33-
const versionedServiceName = `${serviceName}${versionString}`;
3437

35-
return replaceString.replace(versionedServiceName, `${versionedServiceName}_jsonld`);
38+
return replaceString.replace('_', '_jsonld_');
3639
};

0 commit comments

Comments
 (0)