@openapi-codegen/typescript
Advanced tools
Comparing version 9.1.0 to 9.2.0
@@ -36,3 +36,7 @@ "use strict"; | ||
const filenamePrefix = c.snake(config.filenamePrefix ?? context.openAPIDocument.info.title) + "-"; | ||
const formatFilename = config.filenameCase ? c[config.filenameCase] : c.camel; | ||
const formatFilename = typeof config.formatFilename === "function" | ||
? config.formatFilename | ||
: config.filenameCase | ||
? c[config.filenameCase] | ||
: c.camel; | ||
const filename = formatFilename(filenamePrefix + "-components"); | ||
@@ -39,0 +43,0 @@ const fetcherFn = c.camel(`${filenamePrefix}-fetch`); |
@@ -39,3 +39,7 @@ "use strict"; | ||
const filenamePrefix = c.snake(config.filenamePrefix ?? context.openAPIDocument.info.title) + "-"; | ||
const formatFilename = config.filenameCase ? c[config.filenameCase] : c.camel; | ||
const formatFilename = typeof config.formatFilename === "function" | ||
? config.formatFilename | ||
: config.filenameCase | ||
? c[config.filenameCase] | ||
: c.camel; | ||
const filename = formatFilename(filenamePrefix + "-components"); | ||
@@ -42,0 +46,0 @@ const fetcherFn = c.camel(`${filenamePrefix}-fetch`); |
@@ -39,3 +39,7 @@ "use strict"; | ||
const filenamePrefix = c.snake(config.filenamePrefix ?? context.openAPIDocument.info.title) + "-"; | ||
const formatFilename = config.filenameCase ? c[config.filenameCase] : c.camel; | ||
const formatFilename = typeof config.formatFilename === "function" | ||
? config.formatFilename | ||
: config.filenameCase | ||
? c[config.filenameCase] | ||
: c.camel; | ||
const filename = formatFilename(filenamePrefix + "-functions"); | ||
@@ -42,0 +46,0 @@ const fetcherFn = c.camel(`${filenamePrefix}-fetch`); |
@@ -35,11 +35,32 @@ "use strict"; | ||
.join("\n"); | ||
const handleTypeAlias = (componentSchema) => componentSchema.reduce((mem, [name, schema]) => [ | ||
const handleTypeAlias = (componentSchema, currentComponent) => componentSchema.reduce((mem, [name, schema]) => [ | ||
...mem, | ||
...(0, schemaToTypeAliasDeclaration_1.schemaToTypeAliasDeclaration)(name, schema, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent: "schemas", | ||
currentComponent: currentComponent, | ||
}, config.useEnums), | ||
], []); | ||
const generateTypeAliasDeclarations = (componentSchemaEntries, currentComponent) => { | ||
if (config.useEnums) { | ||
const enumSchemaEntries = (0, getEnumProperties_1.getEnumProperties)(componentSchemaEntries); | ||
const enumSchemas = enumSchemaEntries.reduce((mem, [name, schema]) => [ | ||
...mem, | ||
...(0, schemaToEnumDeclaration_1.schemaToEnumDeclaration)(name, schema, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent, | ||
}), | ||
], []); | ||
const componentsSchemas = handleTypeAlias(componentSchemaEntries.filter(([name]) => !enumSchemaEntries.some(([enumName]) => name === enumName)), currentComponent); | ||
return [...enumSchemas, ...componentsSchemas]; | ||
} | ||
else { | ||
return handleTypeAlias(componentSchemaEntries, currentComponent); | ||
} | ||
}; | ||
const filenamePrefix = c.snake(config.filenamePrefix ?? context.openAPIDocument.info.title) + "-"; | ||
const formatFilename = config.filenameCase ? c[config.filenameCase] : c.camel; | ||
const formatFilename = typeof config.formatFilename === "function" | ||
? config.formatFilename | ||
: config.filenameCase | ||
? c[config.filenameCase] | ||
: c.camel; | ||
const files = { | ||
@@ -54,20 +75,4 @@ requestBodies: formatFilename(filenamePrefix + "-request-bodies"), | ||
if (components.schemas) { | ||
const schemas = []; | ||
const componentSchemaEntries = Object.entries(components.schemas); | ||
if (config.useEnums) { | ||
const enumSchemaEntries = (0, getEnumProperties_1.getEnumProperties)(componentSchemaEntries); | ||
const enumSchemas = enumSchemaEntries.reduce((mem, [name, schema]) => [ | ||
...mem, | ||
...(0, schemaToEnumDeclaration_1.schemaToEnumDeclaration)(name, schema, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent: "schemas", | ||
}), | ||
], []); | ||
const componentsSchemas = handleTypeAlias(componentSchemaEntries.filter(([name]) => !enumSchemaEntries.some(([enumName]) => name === enumName))); | ||
schemas.push(...enumSchemas, ...componentsSchemas); | ||
} | ||
else { | ||
const componentsSchemas = handleTypeAlias(componentSchemaEntries); | ||
schemas.push(...componentsSchemas); | ||
} | ||
const schemas = generateTypeAliasDeclarations(componentSchemaEntries, "schemas"); | ||
await context.writeFile(files.schemas + ".ts", printNodes([ | ||
@@ -81,19 +86,16 @@ (0, createWatermark_1.createWatermark)(context.openAPIDocument.info), | ||
if (components.responses) { | ||
const componentsResponses = Object.entries(components.responses).reduce((mem, [name, responseObject]) => { | ||
// Convert responses to schemas | ||
const componentsResponsesEntries = Object.entries(components.responses).reduce((mem, [name, responseObject]) => { | ||
if ((0, openapi3_ts_1.isReferenceObject)(responseObject)) | ||
return mem; | ||
const mediaType = (0, findCompatibleMediaType_1.findCompatibleMediaType)(responseObject); | ||
return [ | ||
...mem, | ||
...(0, schemaToTypeAliasDeclaration_1.schemaToTypeAliasDeclaration)(name, mediaType?.schema || {}, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent: "responses", | ||
}), | ||
]; | ||
mem.push([name, mediaType?.schema || {}]); | ||
return mem; | ||
}, []); | ||
if (componentsResponses.length) { | ||
const schemas = generateTypeAliasDeclarations(componentsResponsesEntries, "responses"); | ||
if (schemas.length) { | ||
await context.writeFile(files.responses + ".ts", printNodes([ | ||
(0, createWatermark_1.createWatermark)(context.openAPIDocument.info), | ||
...(0, getUsedImports_1.getUsedImports)(componentsResponses, files).nodes, | ||
...componentsResponses, | ||
...(0, getUsedImports_1.getUsedImports)(schemas, files).nodes, | ||
...schemas, | ||
])); | ||
@@ -104,3 +106,4 @@ } | ||
if (components.requestBodies) { | ||
const componentsRequestBodies = Object.entries(components.requestBodies).reduce((mem, [name, requestBodyObject]) => { | ||
// Convert requestBodies to schemas | ||
const componentsRequestBodiesEntries = Object.entries(components.requestBodies).reduce((mem, [name, requestBodyObject]) => { | ||
if ((0, openapi3_ts_1.isReferenceObject)(requestBodyObject)) | ||
@@ -111,15 +114,11 @@ return mem; | ||
return mem; | ||
return [ | ||
...mem, | ||
...(0, schemaToTypeAliasDeclaration_1.schemaToTypeAliasDeclaration)(name, mediaType.schema, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent: "requestBodies", | ||
}), | ||
]; | ||
mem.push([name, mediaType.schema]); | ||
return mem; | ||
}, []); | ||
if (componentsRequestBodies.length) { | ||
const schemas = generateTypeAliasDeclarations(componentsRequestBodiesEntries, "requestBodies"); | ||
if (schemas.length) { | ||
await context.writeFile(files.requestBodies + ".ts", printNodes([ | ||
(0, createWatermark_1.createWatermark)(context.openAPIDocument.info), | ||
...(0, getUsedImports_1.getUsedImports)(componentsRequestBodies, files).nodes, | ||
...componentsRequestBodies, | ||
...(0, getUsedImports_1.getUsedImports)(schemas, files).nodes, | ||
...schemas, | ||
])); | ||
@@ -130,18 +129,14 @@ } | ||
if (components.parameters) { | ||
const componentsParameters = Object.entries(components.parameters).reduce((mem, [name, parameterObject]) => { | ||
if ((0, openapi3_ts_1.isReferenceObject)(parameterObject) || !parameterObject.schema) { | ||
// Convert parameters to schemas | ||
const componentsParametersEntries = Object.entries(components.parameters).reduce((mem, [name, parameterObject]) => { | ||
if ((0, openapi3_ts_1.isReferenceObject)(parameterObject) || !parameterObject.schema) | ||
return mem; | ||
} | ||
return [ | ||
...mem, | ||
...(0, schemaToTypeAliasDeclaration_1.schemaToTypeAliasDeclaration)(name, parameterObject.schema, { | ||
openAPIDocument: context.openAPIDocument, | ||
currentComponent: "parameters", | ||
}), | ||
]; | ||
mem.push([name, parameterObject.schema]); | ||
return mem; | ||
}, []); | ||
const schemas = generateTypeAliasDeclarations(componentsParametersEntries, "parameters"); | ||
await context.writeFile(files.parameters + ".ts", printNodes([ | ||
(0, createWatermark_1.createWatermark)(context.openAPIDocument.info), | ||
...(0, getUsedImports_1.getUsedImports)(componentsParameters, files).nodes, | ||
...componentsParameters, | ||
...(0, getUsedImports_1.getUsedImports)(schemas, files).nodes, | ||
...schemas, | ||
])); | ||
@@ -148,0 +143,0 @@ } |
@@ -27,2 +27,7 @@ import { OpenAPIObject } from "openapi3-ts"; | ||
/** | ||
* Allows customizing the filename. | ||
* If provided, `filenameCase` will be ignored. | ||
*/ | ||
formatFilename?: (filename: string) => string; | ||
/** | ||
* Allows using explicit enums instead of string unions. | ||
@@ -29,0 +34,0 @@ * |
{ | ||
"name": "@openapi-codegen/typescript", | ||
"version": "9.1.0", | ||
"version": "9.2.0", | ||
"description": "OpenAPI Codegen typescript generators", | ||
@@ -44,3 +44,3 @@ "main": "lib/index.js", | ||
}, | ||
"gitHead": "fda377ee89b33efcea1ce85c8a9d9c2b8d6c0597" | ||
"gitHead": "943036c3f7568120dacaf27fd64f16200e5d8b9f" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
241167
2971