|
|
const fs = require('fs'); |
|
|
const path = require('path'); |
|
|
const swaggerUi = require('swagger-ui-express'); |
|
|
|
|
|
function faviconUrl() { |
|
|
return process.env.NODE_ENV === "production" ? |
|
|
'/public/favicon.png' : |
|
|
'http://localhost:3000/public/favicon.png' |
|
|
} |
|
|
|
|
|
function useSwagger(app) { |
|
|
app.use('/api/docs', swaggerUi.serve); |
|
|
const options = { |
|
|
customCss: [ |
|
|
fs.readFileSync(path.resolve(__dirname, 'index.css')), |
|
|
fs.readFileSync(path.resolve(__dirname, 'dark-swagger.css')) |
|
|
].join('\n\n\n'), |
|
|
customSiteTitle: 'AnythingLLM Developer API Documentation', |
|
|
customfavIcon: faviconUrl(), |
|
|
} |
|
|
|
|
|
if (process.env.NODE_ENV === "production") { |
|
|
const swaggerDocument = require('./openapi.json'); |
|
|
app.get('/api/docs', swaggerUi.setup( |
|
|
swaggerDocument, |
|
|
{ |
|
|
...options, |
|
|
customJsStr: 'window.SWAGGER_DOCS_ENV = "production";\n\n' + fs.readFileSync(path.resolve(__dirname, 'index.js'), 'utf8'), |
|
|
}, |
|
|
)); |
|
|
} else { |
|
|
|
|
|
app.get( |
|
|
"/api/docs", |
|
|
async (_, response) => { |
|
|
|
|
|
const swaggerDocument = require('./openapi.json'); |
|
|
return response.send( |
|
|
swaggerUi.generateHTML( |
|
|
swaggerDocument, |
|
|
{ |
|
|
...options, |
|
|
customJsStr: 'window.SWAGGER_DOCS_ENV = "development";\n\n' + fs.readFileSync(path.resolve(__dirname, 'index.js'), 'utf8'), |
|
|
} |
|
|
) |
|
|
); |
|
|
} |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
module.exports = { faviconUrl, useSwagger } |