mirror of
https://github.com/Mintplex-Labs/anything-llm
synced 2026-04-26 01:25:15 +02:00
* add option to disable swagger docs via env * update .example.env for docker and server --------- Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
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) {
|
|
if (process.env.DISABLE_SWAGGER_DOCS === "true") {
|
|
console.log(
|
|
`\x1b[33m[SWAGGER DISABLED]\x1b[0m Swagger documentation is disabled via DISABLE_SWAGGER_DOCS environment variable.`
|
|
);
|
|
return;
|
|
}
|
|
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 {
|
|
// we regenerate the html page only in development mode to ensure it is up-to-date when the code is hot-reloaded.
|
|
app.get(
|
|
"/api/docs",
|
|
async (_, response) => {
|
|
// #swagger.ignore = true
|
|
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 } |