diff --git a/package-lock.json b/package-lock.json index fadbe0f..4d826b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "serverless-openapi-documenter", - "version": "0.1.5", + "version": "0.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "serverless-openapi-documenter", - "version": "0.1.5", + "version": "0.1.6", "license": "MIT", "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.1.0", diff --git a/package.json b/package.json index 8944d4e..87507f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "serverless-openapi-documenter", - "version": "0.1.5", + "version": "0.1.6", "description": "Generate OpenAPI v3 documentation and Postman Collections from your Serverless Config", "main": "index.js", "keywords": [ @@ -46,7 +46,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/JaredCE/serverless-openapi-documenter.git" + "url": "git+https://github.com/JaredCE/serverless-openapi-documenter.git" }, "bugs": { "url": "https://github.com/JaredCE/serverless-openapi-documenter/issues" diff --git a/src/definitionGenerator.js b/src/definitionGenerator.js index 57a5d81..95e67cc 100644 --- a/src/definitionGenerator.js +++ b/src/definitionGenerator.js @@ -696,6 +696,10 @@ class DefinitionGenerator { return obj; } + schemaExistsInSchemaModels(model, currentContentType) { + return currentContentType === model.name || currentContentType === model?.apiGatewayKey + } + async createMediaTypeObject(models, type) { const mediaTypeObj = {}; for (const mediaTypeDocumentation of this.schemaHandler.models) { @@ -706,9 +710,11 @@ class DefinitionGenerator { } for (const modelContentType in models) { - let contentKey + let contentKey; + let modelName = mediaTypeDocumentation.name; - if (models[modelContentType] === mediaTypeDocumentation.name) { + if (this.schemaExistsInSchemaModels(mediaTypeDocumentation, models[modelContentType])) { + if (models[modelContentType] === mediaTypeDocumentation?.apiGatewayKey) { modelName = mediaTypeDocumentation.apiGatewayKey; } contentKey = modelContentType; } @@ -742,7 +748,7 @@ class DefinitionGenerator { } const schemaRef = await this.schemaHandler - .createSchema(mediaTypeDocumentation.name) + .createSchema(modelName) .catch((err) => { throw err; }); diff --git a/src/schemaHandler.js b/src/schemaHandler.js index 428553a..5f3a9b8 100644 --- a/src/schemaHandler.js +++ b/src/schemaHandler.js @@ -75,7 +75,9 @@ class SchemaHandler { const standardisedGatewayModels = Object.keys(this.apiGatewayModels).flatMap((key) => { const gatewayModel = this.apiGatewayModels[key]; - return standardModel(gatewayModel); + const model = standardModel(gatewayModel); + model.apiGatewayKey = key; + return model; }) || []; this.models = standardisedModels.concat( @@ -86,7 +88,8 @@ class SchemaHandler { async addModelsToOpenAPI() { for (const model of this.models) { - const modelName = model.name; + const modelName = model?.apiGatewayKey || model.name; + const schemas = [] if (model.schema) { // const modelSchema = model.schema;