mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Fixed required field order for referenced parameters
This commit is contained in:
parent
83a2370d3c
commit
cc6c7f2241
@ -46,7 +46,7 @@
|
||||
"build": "rollup --config --environment NODE_ENV:development",
|
||||
"build:watch": "rollup --config --environment NODE_ENV:development --watch",
|
||||
"release": "rollup --config --environment NODE_ENV:production",
|
||||
"run": "node ./test/index.js",
|
||||
"run": "NODE_ENV=production node ./test/index.js",
|
||||
"test": "jest --selectProjects UNIT",
|
||||
"test:update": "jest --selectProjects UNIT --updateSnapshot",
|
||||
"test:watch": "jest --selectProjects UNIT --watch",
|
||||
|
||||
@ -11,6 +11,7 @@ import { getOperationResponseHeader } from './getOperationResponseHeader';
|
||||
import { getOperationResponses } from './getOperationResponses';
|
||||
import { getOperationResults } from './getOperationResults';
|
||||
import { getServiceClassName } from './getServiceClassName';
|
||||
import { sortByRequired } from './sortByRequired';
|
||||
|
||||
export function getOperation(
|
||||
openApi: OpenApi,
|
||||
@ -73,5 +74,7 @@ export function getOperation(
|
||||
});
|
||||
}
|
||||
|
||||
operation.parameters = operation.parameters.sort(sortByRequired);
|
||||
|
||||
return operation;
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
|
||||
import { getOperationParameter } from './getOperationParameter';
|
||||
import { getRef } from './getRef';
|
||||
import { sortByRequired } from './sortByRequired';
|
||||
|
||||
export function getOperationParameters(openApi: OpenApi, parameters: OpenApiParameter[]): OperationParameters {
|
||||
const operationParameters: OperationParameters = {
|
||||
@ -58,12 +57,5 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
operationParameters.parameters = operationParameters.parameters.sort(sortByRequired);
|
||||
operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired);
|
||||
operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired);
|
||||
operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired);
|
||||
operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired);
|
||||
operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired);
|
||||
return operationParameters;
|
||||
}
|
||||
|
||||
@ -69,7 +69,6 @@ export function getOperation(
|
||||
const requestBody = getOperationRequestBody(openApi, requestBodyDef);
|
||||
operation.imports.push(...requestBody.imports);
|
||||
operation.parameters.push(requestBody);
|
||||
operation.parameters = operation.parameters.sort(sortByRequired);
|
||||
operation.parametersBody = requestBody;
|
||||
}
|
||||
|
||||
@ -86,5 +85,7 @@ export function getOperation(
|
||||
});
|
||||
}
|
||||
|
||||
operation.parameters = operation.parameters.sort(sortByRequired);
|
||||
|
||||
return operation;
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
|
||||
import { getOperationParameter } from './getOperationParameter';
|
||||
import { getRef } from './getRef';
|
||||
import { sortByRequired } from './sortByRequired';
|
||||
|
||||
export function getOperationParameters(openApi: OpenApi, parameters: OpenApiParameter[]): OperationParameters {
|
||||
const operationParameters: OperationParameters = {
|
||||
@ -58,12 +57,5 @@ export function getOperationParameters(openApi: OpenApi, parameters: OpenApiPara
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
operationParameters.parameters = operationParameters.parameters.sort(sortByRequired);
|
||||
operationParameters.parametersPath = operationParameters.parametersPath.sort(sortByRequired);
|
||||
operationParameters.parametersQuery = operationParameters.parametersQuery.sort(sortByRequired);
|
||||
operationParameters.parametersForm = operationParameters.parametersForm.sort(sortByRequired);
|
||||
operationParameters.parametersCookie = operationParameters.parametersCookie.sort(sortByRequired);
|
||||
operationParameters.parametersHeader = operationParameters.parametersHeader.sort(sortByRequired);
|
||||
return operationParameters;
|
||||
}
|
||||
|
||||
@ -2105,12 +2105,12 @@ export class DefaultsService {
|
||||
method: 'PUT',
|
||||
path: \`/api/v\${OpenAPI.VERSION}/defaults\`,
|
||||
query: {
|
||||
'parameterStringWithNoDefault': parameterStringWithNoDefault,
|
||||
'parameterOptionalStringWithDefault': parameterOptionalStringWithDefault,
|
||||
'parameterOptionalStringWithEmptyDefault': parameterOptionalStringWithEmptyDefault,
|
||||
'parameterOptionalStringWithNoDefault': parameterOptionalStringWithNoDefault,
|
||||
'parameterStringWithDefault': parameterStringWithDefault,
|
||||
'parameterStringWithEmptyDefault': parameterStringWithEmptyDefault,
|
||||
'parameterStringWithNoDefault': parameterStringWithNoDefault,
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -2293,8 +2293,8 @@ export class ParametersService {
|
||||
'parameter.header': parameterHeader,
|
||||
},
|
||||
query: {
|
||||
'parameter-query': parameterQuery,
|
||||
'default': _default,
|
||||
'parameter-query': parameterQuery,
|
||||
},
|
||||
formData: {
|
||||
'parameter_form': parameterForm,
|
||||
@ -2494,13 +2494,13 @@ export class TypesService {
|
||||
method: 'GET',
|
||||
path: \`/api/v\${OpenAPI.VERSION}/types\`,
|
||||
query: {
|
||||
'parameterArray': parameterArray,
|
||||
'parameterDictionary': parameterDictionary,
|
||||
'parameterEnum': parameterEnum,
|
||||
'parameterNumber': parameterNumber,
|
||||
'parameterString': parameterString,
|
||||
'parameterBoolean': parameterBoolean,
|
||||
'parameterObject': parameterObject,
|
||||
'parameterArray': parameterArray,
|
||||
'parameterDictionary': parameterDictionary,
|
||||
'parameterEnum': parameterEnum,
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -5051,12 +5051,12 @@ export class DefaultsService {
|
||||
method: 'PUT',
|
||||
path: \`/api/v\${OpenAPI.VERSION}/defaults\`,
|
||||
query: {
|
||||
'parameterStringWithNoDefault': parameterStringWithNoDefault,
|
||||
'parameterOptionalStringWithDefault': parameterOptionalStringWithDefault,
|
||||
'parameterOptionalStringWithEmptyDefault': parameterOptionalStringWithEmptyDefault,
|
||||
'parameterOptionalStringWithNoDefault': parameterOptionalStringWithNoDefault,
|
||||
'parameterStringWithDefault': parameterStringWithDefault,
|
||||
'parameterStringWithEmptyDefault': parameterStringWithEmptyDefault,
|
||||
'parameterStringWithNoDefault': parameterStringWithNoDefault,
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -5315,8 +5315,8 @@ export class ParametersService {
|
||||
'parameter.header': parameterHeader,
|
||||
},
|
||||
query: {
|
||||
'parameter-query': parameterQuery,
|
||||
'default': _default,
|
||||
'parameter-query': parameterQuery,
|
||||
},
|
||||
formData: {
|
||||
'parameter_form': parameterForm,
|
||||
@ -5591,13 +5591,13 @@ export class TypesService {
|
||||
method: 'GET',
|
||||
path: \`/api/v\${OpenAPI.VERSION}/types\`,
|
||||
query: {
|
||||
'parameterArray': parameterArray,
|
||||
'parameterDictionary': parameterDictionary,
|
||||
'parameterEnum': parameterEnum,
|
||||
'parameterNumber': parameterNumber,
|
||||
'parameterString': parameterString,
|
||||
'parameterBoolean': parameterBoolean,
|
||||
'parameterObject': parameterObject,
|
||||
'parameterArray': parameterArray,
|
||||
'parameterDictionary': parameterDictionary,
|
||||
'parameterEnum': parameterEnum,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
'use strict';
|
||||
|
||||
const OpenAPI = require('../dist');
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
async function generateV2() {
|
||||
async function generate(input, output) {
|
||||
await OpenAPI.generate({
|
||||
input: './test/spec/v2.json',
|
||||
output: './test/generated/v2/',
|
||||
input,
|
||||
output,
|
||||
httpClient: OpenAPI.HttpClient.FETCH,
|
||||
useOptions: false,
|
||||
useUnionTypes: false,
|
||||
@ -17,24 +18,47 @@ async function generateV2() {
|
||||
});
|
||||
}
|
||||
|
||||
async function generateV3() {
|
||||
await OpenAPI.generate({
|
||||
input: './test/spec/v3.json',
|
||||
output: './test/generated/v3/',
|
||||
httpClient: OpenAPI.HttpClient.FETCH,
|
||||
useOptions: false,
|
||||
useUnionTypes: false,
|
||||
exportCore: true,
|
||||
exportSchemas: true,
|
||||
exportModels: true,
|
||||
exportServices: true,
|
||||
// request: './test/custom/request.ts',
|
||||
async function generateRealWorldSpecs() {
|
||||
const response = await fetch('https://api.apis.guru/v2/list.json');
|
||||
|
||||
const list = await response.json();
|
||||
delete list['api.video'];
|
||||
delete list['apideck.com:vault'];
|
||||
delete list['amazonaws.com:mediaconvert'];
|
||||
delete list['bungie.net'];
|
||||
delete list['docusign.net'];
|
||||
delete list['googleapis.com:adsense'];
|
||||
delete list['googleapis.com:servicebroker'];
|
||||
delete list['kubernetes.io'];
|
||||
delete list['microsoft.com:graph'];
|
||||
delete list['presalytics.io:ooxml'];
|
||||
delete list['stripe.com'];
|
||||
|
||||
const specs = Object.entries(list).map(([name, api]) => {
|
||||
const latestVersion = api.versions[api.preferred];
|
||||
return {
|
||||
name: name
|
||||
.replace(/^[^a-zA-Z]+/g, '')
|
||||
.replace(/[^\w\-]+/g, '-')
|
||||
.trim()
|
||||
.toLowerCase(),
|
||||
url: latestVersion.swaggerYamlUrl || latestVersion.swaggerUrl,
|
||||
};
|
||||
});
|
||||
|
||||
for (let i = 0; i < specs.length; i++) {
|
||||
const spec = specs[i];
|
||||
await generate(spec.url, `./test/generated/${spec.name}/`);
|
||||
}
|
||||
}
|
||||
|
||||
async function generate() {
|
||||
await generateV2();
|
||||
await generateV3();
|
||||
async function main() {
|
||||
// await generate('./test/spec/v2.json', './test/generated/v2/');
|
||||
// await generate('./test/spec/v3.json', './test/generated/v3/');
|
||||
// await generateRealWorldSpecs();
|
||||
await generate('https://api.apis.guru/v2/specs/asana.com/1.0/openapi.yaml', './test/generated/asana/');
|
||||
await generate('https://api.apis.guru/v2/specs/amazonaws.com/ec2/2016-11-15/openapi.yaml', './test/generated/ec2/');
|
||||
await generate('https://api.apis.guru/v2/specs/aucklandmuseum.com/2.0.0/swagger.yaml', './test/generated/aucklandmuseum/');
|
||||
}
|
||||
|
||||
generate();
|
||||
main();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user