Files
anything-llm/server/swagger/utils.js
Marcello Fitton 4a4378ed99 chore: add ESLint to /server (#5126)
* add eslint config to server

* add break statements to switch case

* add support for browser globals and turn off empty catch blocks

* disable lines with useless try/catch wrappers

* format

* fix no-undef errors

* disbale lines violating no-unsafe-finally

* ignore syncStaticLists.mjs

* use proper null check for creatorId instead of unreachable nullish coalescing

* remove unneeded typescript eslint comment

* make no-unused-private-class-members a warning

* disable line for no-empty-objects

* add new lint script

* fix no-unused-vars violations

* make no-unsued-vars an error

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>
2026-03-05 16:32:45 -08:00

57 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 };