You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					304 lines
				
				4.9 KiB
			
		
		
			
		
	
	
					304 lines
				
				4.9 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								const swaggerOption = {
							 | 
						||
| 
								 | 
							
								  swagger: {
							 | 
						||
| 
								 | 
							
								    info: {
							 | 
						||
| 
								 | 
							
								      title: 'Test swagger',
							 | 
						||
| 
								 | 
							
								      description: 'testing the fastify swagger api',
							 | 
						||
| 
								 | 
							
								      version: '0.1.0'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    host: 'localhost',
							 | 
						||
| 
								 | 
							
								    schemes: ['http'],
							 | 
						||
| 
								 | 
							
								    consumes: ['application/json'],
							 | 
						||
| 
								 | 
							
								    produces: ['application/json'],
							 | 
						||
| 
								 | 
							
								    tags: [
							 | 
						||
| 
								 | 
							
								      { name: 'tag' }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    externalDocs: {
							 | 
						||
| 
								 | 
							
								      description: 'Find more info here',
							 | 
						||
| 
								 | 
							
								      url: 'https://swagger.io'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    securityDefinitions: {
							 | 
						||
| 
								 | 
							
								      apiKey: {
							 | 
						||
| 
								 | 
							
								        type: 'apiKey',
							 | 
						||
| 
								 | 
							
								        name: 'apiKey',
							 | 
						||
| 
								 | 
							
								        in: 'header'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    security: [{
							 | 
						||
| 
								 | 
							
								      apiKey: []
							 | 
						||
| 
								 | 
							
								    }]
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const openapiOption = {
							 | 
						||
| 
								 | 
							
								  openapi: {
							 | 
						||
| 
								 | 
							
								    info: {
							 | 
						||
| 
								 | 
							
								      title: 'Test swagger',
							 | 
						||
| 
								 | 
							
								      description: 'testing the fastify swagger api',
							 | 
						||
| 
								 | 
							
								      version: '0.1.0'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    servers: [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        url: 'http://localhost'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    tags: [
							 | 
						||
| 
								 | 
							
								      { name: 'tag' }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    components: {
							 | 
						||
| 
								 | 
							
								      securitySchemes: {
							 | 
						||
| 
								 | 
							
								        apiKey: {
							 | 
						||
| 
								 | 
							
								          type: 'apiKey',
							 | 
						||
| 
								 | 
							
								          name: 'apiKey',
							 | 
						||
| 
								 | 
							
								          in: 'header'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    security: [{
							 | 
						||
| 
								 | 
							
								      apiKey: []
							 | 
						||
| 
								 | 
							
								    }],
							 | 
						||
| 
								 | 
							
								    externalDocs: {
							 | 
						||
| 
								 | 
							
								      description: 'Find more info here',
							 | 
						||
| 
								 | 
							
								      url: 'https://swagger.io'
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const openapiRelativeOptions = {
							 | 
						||
| 
								 | 
							
								  openapi: {
							 | 
						||
| 
								 | 
							
								    info: {
							 | 
						||
| 
								 | 
							
								      title: 'Test swagger',
							 | 
						||
| 
								 | 
							
								      description: 'testing the fastify swagger api',
							 | 
						||
| 
								 | 
							
								      version: '0.1.0'
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    servers: [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        url: '/test'
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    tags: [
							 | 
						||
| 
								 | 
							
								      { name: 'tag' }
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    components: {
							 | 
						||
| 
								 | 
							
								      securitySchemes: {
							 | 
						||
| 
								 | 
							
								        apiKey: {
							 | 
						||
| 
								 | 
							
								          type: 'apiKey',
							 | 
						||
| 
								 | 
							
								          name: 'apiKey',
							 | 
						||
| 
								 | 
							
								          in: 'header'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    security: [{
							 | 
						||
| 
								 | 
							
								      apiKey: []
							 | 
						||
| 
								 | 
							
								    }],
							 | 
						||
| 
								 | 
							
								    externalDocs: {
							 | 
						||
| 
								 | 
							
								      description: 'Find more info here',
							 | 
						||
| 
								 | 
							
								      url: 'https://swagger.io'
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  stripBasePath: false
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaQuerystring = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    response: {
							 | 
						||
| 
								 | 
							
								      200: {
							 | 
						||
| 
								 | 
							
								        type: 'object',
							 | 
						||
| 
								 | 
							
								        properties: {
							 | 
						||
| 
								 | 
							
								          hello: { type: 'string' }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    querystring: {
							 | 
						||
| 
								 | 
							
								      hello: { type: 'string' },
							 | 
						||
| 
								 | 
							
								      world: { type: 'string' }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaBody = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    body: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        hello: { type: 'string' },
							 | 
						||
| 
								 | 
							
								        obj: {
							 | 
						||
| 
								 | 
							
								          type: 'object',
							 | 
						||
| 
								 | 
							
								          properties: {
							 | 
						||
| 
								 | 
							
								            some: { type: 'string' },
							 | 
						||
| 
								 | 
							
								            constantProp: { const: 'my-const' }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      required: ['hello']
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaParams = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    params: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        id: {
							 | 
						||
| 
								 | 
							
								          type: 'string',
							 | 
						||
| 
								 | 
							
								          description: 'user id'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaHeaders = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    headers: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        authorization: {
							 | 
						||
| 
								 | 
							
								          type: 'string',
							 | 
						||
| 
								 | 
							
								          description: 'api token'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      required: ['authorization']
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaHeadersParams = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    headers: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        'x-api-token': {
							 | 
						||
| 
								 | 
							
								          type: 'string',
							 | 
						||
| 
								 | 
							
								          description: 'optional api token'
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        'x-api-version': {
							 | 
						||
| 
								 | 
							
								          type: 'string',
							 | 
						||
| 
								 | 
							
								          description: 'optional api version'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    params: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        id: {
							 | 
						||
| 
								 | 
							
								          type: 'string',
							 | 
						||
| 
								 | 
							
								          description: 'user id'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaSecurity = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    security: [
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        apiKey: []
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    ]
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaConsumes = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    consumes: ['application/x-www-form-urlencoded'],
							 | 
						||
| 
								 | 
							
								    body: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        hello: {
							 | 
						||
| 
								 | 
							
								          description: 'hello',
							 | 
						||
| 
								 | 
							
								          type: 'string'
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      required: ['hello']
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaProduces = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    produces: ['*/*'],
							 | 
						||
| 
								 | 
							
								    response: {
							 | 
						||
| 
								 | 
							
								      200: {
							 | 
						||
| 
								 | 
							
								        type: 'object',
							 | 
						||
| 
								 | 
							
								        properties: {
							 | 
						||
| 
								 | 
							
								          hello: {
							 | 
						||
| 
								 | 
							
								            description: 'hello',
							 | 
						||
| 
								 | 
							
								            type: 'string'
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        required: ['hello']
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaCookies = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    cookies: {
							 | 
						||
| 
								 | 
							
								      type: 'object',
							 | 
						||
| 
								 | 
							
								      properties: {
							 | 
						||
| 
								 | 
							
								        bar: { type: 'string' }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaAllOf = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    querystring: {
							 | 
						||
| 
								 | 
							
								      allOf: [
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          type: 'object',
							 | 
						||
| 
								 | 
							
								          properties: {
							 | 
						||
| 
								 | 
							
								            foo: { type: 'string' }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      ]
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaExtension = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    'x-tension': true
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const schemaOperationId = {
							 | 
						||
| 
								 | 
							
								  schema: {
							 | 
						||
| 
								 | 
							
								    operationId: 'helloWorld',
							 | 
						||
| 
								 | 
							
								    response: {
							 | 
						||
| 
								 | 
							
								      200: {
							 | 
						||
| 
								 | 
							
								        type: 'object',
							 | 
						||
| 
								 | 
							
								        properties: {
							 | 
						||
| 
								 | 
							
								          hello: {
							 | 
						||
| 
								 | 
							
								            description: 'hello',
							 | 
						||
| 
								 | 
							
								            type: 'string'
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        required: ['hello']
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  openapiOption,
							 | 
						||
| 
								 | 
							
								  openapiRelativeOptions,
							 | 
						||
| 
								 | 
							
								  swaggerOption,
							 | 
						||
| 
								 | 
							
								  schemaQuerystring,
							 | 
						||
| 
								 | 
							
								  schemaBody,
							 | 
						||
| 
								 | 
							
								  schemaParams,
							 | 
						||
| 
								 | 
							
								  schemaHeaders,
							 | 
						||
| 
								 | 
							
								  schemaHeadersParams,
							 | 
						||
| 
								 | 
							
								  schemaSecurity,
							 | 
						||
| 
								 | 
							
								  schemaConsumes,
							 | 
						||
| 
								 | 
							
								  schemaProduces,
							 | 
						||
| 
								 | 
							
								  schemaCookies,
							 | 
						||
| 
								 | 
							
								  schemaAllOf,
							 | 
						||
| 
								 | 
							
								  schemaExtension,
							 | 
						||
| 
								 | 
							
								  schemaOperationId
							 | 
						||
| 
								 | 
							
								}
							 |