import Hapi from '@hapi/hapi'
import Inert from '@hapi/inert'
import Vision from '@hapi/vision'
import HapiSwagger from 'hapi-swagger'
export const swaggerPlugin = {
    name: 'swaggerPlugin',
    register: async (server: Hapi.Server) => {
        await server.register([
            Inert,
            Vision,
            {
                plugin: HapiSwagger,
                options: {
                    info: {
                        title: process.env.APPLICATION_NAME,
                        version: process.env.APPLICATION_VERSION,
                    },
                    security: [{ Bearer: [] }],  // Applies Bearer token globally
                    securityDefinitions: {
                        Bearer: {
                            type: "apiKey",
                            name: "authorization",
                            in: "header",
                        },
                    },
                    host: process.env.API_HOST,
                    schemes: [process.env.PROTOCOL!],
                    grouping: 'tags',
                    tags: [],
                    documentationPath: '/documentation',
                    basePath: "/",
                    sortEndpoints: "ordered",
                    consumes: ["application/json"],
                    produces: ["application/json"]
                },
            }
        ])
    },
}
