swagger-express-typescript
Version:
Generate and serve swagger.json
1 lines • 47.1 kB
Source Map (JSON)
{"version":3,"sources":["../../lib/swagger-express-typescript-lib/src/swagger.service.ts"],"names":[],"mappings":"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","file":"swagger.service.js","sourcesContent":["import * as assert from 'assert';\nimport * as _ from 'lodash';\nimport { IApiModelArgs } from '.';\nimport { IApiModelPropertyArgs } from './api-model-property.decorator';\nimport { IApiOperationGetArgs } from './api-operation-get.decorator';\nimport { IApiOperationPostArgs } from './api-operation-post.decorator';\nimport { IApiPathArgs } from './api-path.decorator';\nimport {\n IApiBodyOperationArgsBaseParameter,\n IApiOperationArgsBase,\n IApiOperationArgsBaseParameter,\n IApiOperationArgsBaseResponse,\n} from './i-api-operation-args.base';\nimport {\n ISwagger,\n ISwaggerDefinition,\n ISwaggerDefinitionProperty,\n ISwaggerDefinitionPropertyItems,\n ISwaggerExternalDocs,\n ISwaggerInfo,\n ISwaggerOperation,\n ISwaggerOperationParameter,\n ISwaggerOperationResponse,\n ISwaggerOperationSchema,\n ISwaggerOperationSchemaItems,\n ISwaggerPath,\n ISwaggerPropertySchemaOperation,\n ISwaggerTag,\n} from './i-swagger';\nimport { SwaggerDefinitionConstant } from './swagger-definition.constant';\nimport {\n ISwaggerBuildDefinitionModel,\n ISwaggerBuildDefinitionModelProperty,\n ISwaggerSecurityDefinition,\n} from './swagger.builder';\n\ninterface IPath {\n path: string;\n get?: ISwaggerOperation;\n post?: ISwaggerOperation;\n put?: ISwaggerOperation;\n patch?: ISwaggerOperation;\n delete?: ISwaggerOperation;\n}\n\ninterface IController {\n path?: string;\n paths?: { [key: string]: IPath };\n name?: string;\n description?: string;\n security?: { [key: string]: any[] };\n deprecated?: boolean;\n}\n\nexport class SwaggerService {\n public static getInstance(): SwaggerService {\n if (!SwaggerService.instance) {\n const newSwaggerService: SwaggerService = new SwaggerService();\n newSwaggerService.initData();\n SwaggerService.instance = newSwaggerService;\n }\n return SwaggerService.instance;\n }\n private static instance: SwaggerService;\n private controllerMap: IController[] = [];\n private data: ISwagger;\n private modelsMap: { [key: string]: ISwaggerBuildDefinitionModel } = {};\n private globalResponses: { [key: string]: IApiOperationArgsBaseResponse };\n\n public resetData(): void {\n this.controllerMap = [];\n this.initData();\n }\n\n public getData(): ISwagger {\n return _.cloneDeep(this.data);\n }\n\n public setBasePath(basePath: string): void {\n this.data.basePath = basePath;\n }\n\n public setOpenapi(openapi: string): void {\n this.data.openapi = openapi;\n }\n\n public setInfo(info: ISwaggerInfo): void {\n this.data.info = info;\n }\n\n public setSchemes(schemes: string[]): void {\n this.data.schemes = schemes;\n }\n\n public setProduces(produces: string[]): void {\n this.data.produces = produces;\n }\n\n public setConsumes(consumes: string[]): void {\n this.data.consumes = consumes;\n }\n\n public setHost(host: string): void {\n this.data.host = host;\n }\n\n public setDefinitions(models: {\n [key: string]: ISwaggerBuildDefinitionModel;\n }): void {\n const definitions: { [key: string]: ISwaggerDefinition } = {};\n for (const modelIndex in models) {\n const model: ISwaggerBuildDefinitionModel = models[modelIndex];\n const newDefinition: ISwaggerDefinition = {\n type: SwaggerDefinitionConstant.Model.Type.OBJECT,\n properties: {},\n required: [],\n };\n if (model.description) {\n newDefinition.description = model.description;\n }\n for (const propertyIndex in model.properties) {\n const property: ISwaggerBuildDefinitionModelProperty =\n model.properties[propertyIndex];\n const newProperty: ISwaggerDefinitionProperty = {\n type: property.type,\n };\n newProperty.format = property.format;\n newProperty.description = property.description;\n newProperty.enum = property.enum;\n newProperty.example = property.example;\n if (property.itemType) {\n newProperty.items = {\n type: property.itemType,\n } as ISwaggerDefinitionPropertyItems;\n }\n if (property.model) {\n if (\n _.isEqual(\n SwaggerDefinitionConstant.Model.Property.Type.ARRAY,\n property.type\n )\n ) {\n newProperty.items = {\n $ref: this.buildRef(property.model),\n } as ISwaggerDefinitionPropertyItems;\n } else {\n newProperty.$ref = this.buildRef(property.model);\n }\n }\n if (property.required) {\n newDefinition.required.push(propertyIndex);\n }\n newDefinition.properties[propertyIndex] = newProperty;\n }\n definitions[modelIndex] = newDefinition;\n }\n this.data.definitions = _.mergeWith(this.data.definitions, definitions);\n }\n\n public setExternalDocs(externalDocs: ISwaggerExternalDocs): void {\n this.data.externalDocs = externalDocs;\n }\n\n public setGlobalResponses(globalResponses: {\n [key: string]: IApiOperationArgsBaseResponse;\n }): void {\n this.globalResponses = this.buildOperationResponses(globalResponses);\n }\n\n public addPath(args: IApiPathArgs, target: any): void {\n let currentController: IController = {\n path: args.path,\n name: args.name,\n paths: {},\n };\n for (const controllerIndex in this.controllerMap) {\n const controller: IController = this.controllerMap[controllerIndex];\n if (controllerIndex === target.name) {\n currentController = controller;\n currentController.path = args.path;\n currentController.name = args.name;\n currentController.description = args.description;\n currentController.security = args.security;\n currentController.deprecated = args.deprecated;\n }\n }\n this.controllerMap[target.name] = _.mergeWith(\n this.controllerMap[target.name],\n currentController\n );\n }\n\n public addOperationGet(\n args: IApiOperationGetArgs,\n target: any,\n propertyKey: string | symbol\n ): void {\n assert.ok(args, 'Args are required.');\n assert.ok(args.responses, 'Responses are required.');\n if (args.parameters) {\n assert.ok(!args.parameters.body, 'Parameter body is not required.');\n }\n this.addOperation('get', args, target, propertyKey);\n }\n\n public addOperationPost(\n args: IApiOperationPostArgs,\n target: any,\n propertyKey: string | symbol\n ): void {\n assert.ok(args, 'Args are required.');\n assert.ok(args.parameters, 'Parameters are required.');\n assert.ok(args.responses, 'Responses are required.');\n this.addOperation('post', args, target, propertyKey);\n }\n\n public addOperationPut(\n args: IApiOperationPostArgs,\n target: any,\n propertyKey: string | symbol\n ): void {\n assert.ok(args, 'Args are required.');\n assert.ok(args.parameters, 'Parameters are required.');\n assert.ok(args.responses, 'Responses are required.');\n this.addOperation('put', args, target, propertyKey);\n }\n\n public addOperationPatch(\n args: IApiOperationPostArgs,\n target: any,\n propertyKey: string | symbol\n ): void {\n assert.ok(args, 'Args are required.');\n assert.ok(args.parameters, 'Parameters are required.');\n assert.ok(args.responses, 'Responses are required.');\n this.addOperation('patch', args, target, propertyKey);\n }\n\n public addOperationDelete(\n args: IApiOperationPostArgs,\n target: any,\n propertyKey: string | symbol\n ): void {\n assert.ok(args, 'Args are required.');\n assert.ok(args.parameters, 'Parameters are required.');\n assert.ok(args.responses, 'Responses are required.');\n this.addOperation('delete', args, target, propertyKey);\n }\n\n public addSecurityDefinitions(securityDefinitions: {\n [key: string]: ISwaggerSecurityDefinition;\n }): void {\n this.data.securityDefinitions = securityDefinitions;\n }\n\n public buildSwagger(): void {\n const data: ISwagger = _.cloneDeep(this.data);\n for (const controllerIndex in this.controllerMap) {\n const controller: IController = this.controllerMap[controllerIndex];\n if (_.toArray(controller.paths).length > 0) {\n for (const pathIndex in controller.paths) {\n const path: IPath = controller.paths[pathIndex];\n const swaggerPath: ISwaggerPath = {};\n if (path.get) {\n swaggerPath.get = this.buildSwaggerOperation(\n path.get,\n controller\n );\n }\n if (path.post) {\n swaggerPath.post = this.buildSwaggerOperation(\n path.post,\n controller\n );\n }\n if (path.put) {\n swaggerPath.put = this.buildSwaggerOperation(\n path.put,\n controller\n );\n }\n if (path.patch) {\n swaggerPath.patch = this.buildSwaggerOperation(\n path.patch,\n controller\n );\n }\n if (path.delete) {\n swaggerPath.delete = this.buildSwaggerOperation(\n path.delete,\n controller\n );\n }\n if (path.path && path.path.length > 0) {\n data.paths[\n controller.path.concat(path.path)\n ] = swaggerPath;\n } else {\n data.paths[controller.path] = swaggerPath;\n }\n }\n } else {\n const swaggerPath: ISwaggerPath = {};\n data.paths[controller.path] = swaggerPath;\n }\n data.tags.push({\n name: _.upperFirst(controller.name),\n description: controller.description,\n } as ISwaggerTag);\n }\n this.data = data;\n }\n\n public addApiModelProperty(\n args: IApiModelPropertyArgs,\n target: any,\n propertyKey: string | symbol,\n propertyType: string\n ) {\n const definitionKey = target.constructor.name;\n let swaggerBuildDefinitionModel: ISwaggerBuildDefinitionModel = this\n .modelsMap[definitionKey];\n if (!swaggerBuildDefinitionModel) {\n swaggerBuildDefinitionModel = {\n properties: {},\n };\n this.modelsMap[definitionKey] = swaggerBuildDefinitionModel;\n }\n\n const swaggerBuildDefinitionModelProperty: ISwaggerBuildDefinitionModelProperty = {\n type: _.lowerCase(propertyType),\n };\n if (args) {\n swaggerBuildDefinitionModelProperty.required = args.required;\n swaggerBuildDefinitionModelProperty.description = args.description;\n swaggerBuildDefinitionModelProperty.enum = args.enum;\n swaggerBuildDefinitionModelProperty.itemType = args.itemType;\n swaggerBuildDefinitionModelProperty.example = args.example;\n if (args.model) {\n swaggerBuildDefinitionModelProperty.model = args.model;\n if (!_.isEqual('Array', propertyType)) {\n swaggerBuildDefinitionModelProperty.type = undefined;\n }\n }\n if (args.type) {\n swaggerBuildDefinitionModelProperty.type = args.type;\n }\n }\n swaggerBuildDefinitionModel.properties[\n propertyKey.toString()\n ] = swaggerBuildDefinitionModelProperty;\n this.setDefinitions(this.modelsMap);\n }\n\n public addApiModel(args: IApiModelArgs, target: any): any {\n const definitionKey = target.name;\n let swaggerBuildDefinitionModel: ISwaggerBuildDefinitionModel = this\n .modelsMap[definitionKey];\n if (!swaggerBuildDefinitionModel) {\n swaggerBuildDefinitionModel = {\n properties: {},\n };\n this.modelsMap[definitionKey] = swaggerBuildDefinitionModel;\n }\n if (args) {\n swaggerBuildDefinitionModel.description = args.description;\n if (args.name) {\n const name: string = _.upperFirst(args.name);\n this.modelsMap[name] = _.cloneDeep(\n this.modelsMap[definitionKey]\n );\n if (!_.isEqual(name, definitionKey)) {\n delete this.modelsMap[definitionKey];\n delete this.data.definitions[definitionKey];\n }\n }\n }\n this.setDefinitions(this.modelsMap);\n }\n\n private initData(): void {\n this.data = {\n basePath: '/',\n info: {\n title: '',\n version: '',\n } as ISwaggerInfo,\n paths: {},\n tags: [],\n schemes: [SwaggerDefinitionConstant.Scheme.HTTP],\n produces: [SwaggerDefinitionConstant.Produce.JSON],\n consumes: [SwaggerDefinitionConstant.Consume.JSON],\n definitions: {},\n swagger: '2.0',\n };\n }\n\n private addOperation(\n operation: string,\n args: IApiOperationArgsBase,\n target: any,\n propertyKey: string | symbol\n ): void {\n let currentController: IController = {\n paths: {},\n };\n for (const index in this.controllerMap) {\n const controller = this.controllerMap[index];\n if (index === target.constructor.name) {\n currentController = controller;\n }\n }\n\n let currentPath: IPath;\n if (args.path && args.path.length > 0) {\n if (!currentController.paths[args.path]) {\n currentController.paths[args.path] = {} as IPath;\n }\n currentPath = currentController.paths[args.path];\n currentPath.path = args.path;\n } else {\n if (!currentController.paths['/']) {\n currentController.paths['/'] = {} as IPath;\n }\n currentPath = currentController.paths['/'];\n }\n\n if ('get' === operation) {\n currentPath.get = this.buildOperation(args, target, propertyKey);\n }\n\n if ('post' === operation) {\n currentPath.post = this.buildOperation(args, target, propertyKey);\n }\n\n if ('put' === operation) {\n currentPath.put = this.buildOperation(args, target, propertyKey);\n }\n\n if ('patch' === operation) {\n currentPath.patch = this.buildOperation(args, target, propertyKey);\n }\n\n if ('delete' === operation) {\n currentPath.delete = this.buildOperation(args, target, propertyKey);\n }\n\n this.controllerMap[target.constructor.name] = currentController;\n }\n\n private buildOperation(\n args: IApiOperationArgsBase,\n target: any,\n propertyKey: string | symbol\n ): ISwaggerOperation {\n const operation: ISwaggerOperation = {\n operationId: propertyKey,\n tags: [],\n };\n if (args.description) {\n operation.description = args.description;\n }\n if (args.summary) {\n operation.summary = args.summary;\n }\n if (args.produces && args.produces.length > 0) {\n operation.produces = args.produces;\n }\n\n if (args.consumes && args.consumes.length > 0) {\n operation.consumes = args.consumes;\n }\n\n if (args.deprecated) {\n operation.deprecated = args.deprecated;\n }\n\n if (args.parameters) {\n operation.parameters = [];\n if (args.parameters.path) {\n operation.parameters = _.concat(\n operation.parameters,\n this.buildParameters(\n SwaggerDefinitionConstant.Parameter.In.PATH,\n args.parameters.path\n )\n );\n }\n if (args.parameters.query) {\n operation.parameters = _.concat(\n operation.parameters,\n this.buildParameters(\n SwaggerDefinitionConstant.Parameter.In.QUERY,\n args.parameters.query\n )\n );\n }\n if (args.parameters.body) {\n operation.parameters = _.concat(\n operation.parameters,\n this.buildBodyOperationParameter(args.parameters.body)\n );\n }\n if (args.parameters.formData) {\n operation.parameters = _.concat(\n operation.parameters,\n this.buildParameters(\n SwaggerDefinitionConstant.Parameter.In.FORM_DATA,\n args.parameters.formData\n )\n );\n }\n }\n\n if (args.responses) {\n operation.responses = this.buildOperationResponses(args.responses);\n }\n\n if (args.security) {\n operation.security = this.buildOperationSecurity(args.security);\n }\n\n return operation;\n }\n\n private buildOperationResponses(responses: {\n [key: string]: IApiOperationArgsBaseResponse;\n }): {\n [key: string]: ISwaggerOperationResponse;\n } {\n const swaggerOperationResponses: {\n [key: string]: ISwaggerOperationResponse;\n } = {};\n for (const responseIndex in responses) {\n const response: IApiOperationArgsBaseResponse =\n responses[responseIndex];\n const newSwaggerOperationResponse: ISwaggerOperationResponse = {};\n if (response.description) {\n newSwaggerOperationResponse.description = response.description;\n } else {\n switch (responseIndex) {\n case '200':\n newSwaggerOperationResponse.description = 'Success';\n break;\n case '201':\n newSwaggerOperationResponse.description = 'Created';\n break;\n case '202':\n newSwaggerOperationResponse.description = 'Accepted';\n break;\n case '203':\n newSwaggerOperationResponse.description =\n 'Non-Authoritative Information';\n break;\n case '204':\n newSwaggerOperationResponse.description = 'No Content';\n break;\n case '205':\n newSwaggerOperationResponse.description =\n 'Reset Content';\n break;\n case '206':\n newSwaggerOperationResponse.description =\n 'Partial Content';\n break;\n case '400':\n newSwaggerOperationResponse.description =\n 'Client error and Bad Request';\n break;\n case '401':\n newSwaggerOperationResponse.description =\n 'Client error and Unauthorized';\n break;\n case '404':\n newSwaggerOperationResponse.description =\n 'Client error and Not Found';\n break;\n case '406':\n newSwaggerOperationResponse.description =\n 'Client error and Not Acceptable';\n break;\n case '500':\n newSwaggerOperationResponse.description =\n 'Internal Server Error';\n break;\n case '501':\n newSwaggerOperationResponse.description =\n 'Not Implemented';\n break;\n case '503':\n newSwaggerOperationResponse.description =\n 'Service Unavailable';\n break;\n default:\n newSwaggerOperationResponse.description = null;\n }\n }\n if (response.model) {\n const ref = this.buildRef(response.model);\n let newSwaggerOperationResponseSchema: ISwaggerOperationSchema = {\n $ref: ref,\n };\n if (\n _.isEqual(\n response.type,\n SwaggerDefinitionConstant.Response.Type.ARRAY\n )\n ) {\n newSwaggerOperationResponseSchema = {\n items: {\n $ref: ref,\n } as ISwaggerOperationSchemaItems,\n type: SwaggerDefinitionConstant.Response.Type.ARRAY,\n };\n }\n newSwaggerOperationResponse.schema = newSwaggerOperationResponseSchema;\n }\n swaggerOperationResponses[\n responseIndex\n ] = newSwaggerOperationResponse;\n }\n return swaggerOperationResponses;\n }\n\n private buildBodyOperationParameter(\n bodyOperationArgsBaseParameter: IApiBodyOperationArgsBaseParameter\n ): ISwaggerOperationParameter[] {\n const swaggerOperationParameterList: ISwaggerOperationParameter[] = [];\n const swaggerOperationParameter = {} as ISwaggerOperationParameter;\n swaggerOperationParameter.name = bodyOperationArgsBaseParameter.name\n ? bodyOperationArgsBaseParameter.name\n : 'body';\n swaggerOperationParameter.in = 'body';\n swaggerOperationParameter.type = bodyOperationArgsBaseParameter.type;\n swaggerOperationParameter.description =\n bodyOperationArgsBaseParameter.description;\n swaggerOperationParameter.required =\n bodyOperationArgsBaseParameter.required;\n swaggerOperationParameter.format =\n bodyOperationArgsBaseParameter.format;\n swaggerOperationParameter.deprecated =\n bodyOperationArgsBaseParameter.deprecated;\n swaggerOperationParameter.allowEmptyValue =\n bodyOperationArgsBaseParameter.allowEmptyValue;\n swaggerOperationParameter.minimum =\n bodyOperationArgsBaseParameter.minimum;\n swaggerOperationParameter.maximum =\n bodyOperationArgsBaseParameter.maximum;\n swaggerOperationParameter.default =\n bodyOperationArgsBaseParameter.default;\n let schema = {} as ISwaggerOperationSchema;\n if (bodyOperationArgsBaseParameter.properties) {\n schema.type = 'object';\n schema.required = [];\n schema.properties = {} as {\n [key: string]: ISwaggerPropertySchemaOperation;\n };\n for (const propetyIndex in bodyOperationArgsBaseParameter.properties) {\n const propertyBodyOperationArgsBaseParameter =\n bodyOperationArgsBaseParameter.properties[propetyIndex];\n const propertySchemaOperation = {} as ISwaggerPropertySchemaOperation;\n propertySchemaOperation.type =\n propertyBodyOperationArgsBaseParameter.type;\n schema.properties[propetyIndex] = propertySchemaOperation;\n if (propertyBodyOperationArgsBaseParameter.required) {\n schema.required.push(propetyIndex);\n }\n }\n schema.properties = bodyOperationArgsBaseParameter.properties;\n }\n if (bodyOperationArgsBaseParameter.model) {\n const swaggerOperationSchema: ISwaggerOperationSchema = {\n $ref: this.buildRef(bodyOperationArgsBaseParameter.model),\n };\n schema = swaggerOperationSchema;\n }\n swaggerOperationParameter.schema = schema;\n swaggerOperationParameterList.push(swaggerOperationParameter);\n return swaggerOperationParameterList;\n }\n\n private buildOperationSecurity(argsSecurity: {\n [key: string]: any[];\n }): Array<{ [key: string]: any[] }> {\n const securityToReturn = [];\n for (const securityIndex in argsSecurity) {\n const security: any[] = argsSecurity[securityIndex];\n const result: { [key: string]: any[] } = {};\n result[securityIndex] = security;\n securityToReturn.push(result);\n }\n return securityToReturn;\n }\n\n private buildParameters(\n type: string,\n parameters: { [key: string]: IApiOperationArgsBaseParameter }\n ): ISwaggerOperationParameter[] {\n const swaggerOperationParameter: ISwaggerOperationParameter[] = [];\n for (const parameterIndex in parameters) {\n const parameter: IApiOperationArgsBaseParameter =\n parameters[parameterIndex];\n const newSwaggerOperationParameter: ISwaggerOperationParameter = {\n name: parameterIndex,\n in: type,\n type: parameter.type,\n };\n if (parameter.name) {\n newSwaggerOperationParameter.name = parameter.name;\n }\n newSwaggerOperationParameter.description = parameter.description;\n newSwaggerOperationParameter.required = parameter.required;\n newSwaggerOperationParameter.format = parameter.format;\n newSwaggerOperationParameter.deprecated = parameter.deprecated;\n newSwaggerOperationParameter.allowEmptyValue =\n parameter.allowEmptyValue;\n newSwaggerOperationParameter.minimum = parameter.minimum;\n newSwaggerOperationParameter.maximum = parameter.maximum;\n newSwaggerOperationParameter.default = parameter.default;\n swaggerOperationParameter.push(newSwaggerOperationParameter);\n }\n return swaggerOperationParameter;\n }\n\n private buildSwaggerOperation(\n operation: ISwaggerOperation,\n controller: IController\n ): ISwaggerOperation {\n if (_.isUndefined(operation.produces)) {\n operation.produces = this.data.produces;\n }\n if (_.isUndefined(operation.consumes)) {\n operation.consumes = this.data.consumes;\n }\n if (_.isUndefined(operation.security) && controller.security) {\n operation.security = this.buildOperationSecurity(\n controller.security\n );\n }\n if (_.isUndefined(operation.deprecated) && controller.deprecated) {\n operation.deprecated = controller.deprecated;\n }\n if (this.globalResponses) {\n operation.responses = _.mergeWith(\n _.cloneDeep(this.globalResponses),\n operation.responses\n );\n }\n operation.tags = [_.upperFirst(controller.name)];\n return operation;\n }\n\n private buildRef(definition: string): string {\n return '#/definitions/'.concat(_.upperFirst(definition));\n }\n}\n"]}