@bull-board/api
Version:
A Dashboard server API built on top of bull or bullmq.
72 lines • 3.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createBullBoard = createBullBoard;
const path_1 = __importDefault(require("path"));
const error_1 = require("./handlers/error");
const metricsHistory_1 = require("./handlers/metricsHistory");
const metricsHistoryStorage_1 = require("./handlers/metricsHistoryStorage");
const queuesApi_1 = require("./queuesApi");
const routes_1 = require("./routes");
function createBullBoard({ queues, serverAdapter, options = { uiConfig: {} }, }) {
const { bullBoardQueues, setQueues, replaceQueues, addQueue, removeQueue } = (0, queuesApi_1.getQueuesApi)(queues);
const uiBasePath =
// oxlint-disable-next-line no-eval
options.uiBasePath || path_1.default.dirname(eval(`require.resolve('@bull-board/ui/package.json')`));
const historyProvider = options.historyProvider;
// Optional provider capabilities: a route only exists when the provider implements it.
// Purging is destructive, so it additionally requires a board that isn't read-only.
// `readOnlyMode` is per-queue here, so a board is read-only when every queue is; queues
// registered later can't loosen that, matching how the other derived flags are fixed at
// creation time.
const hasHistoryUsage = Boolean(historyProvider === null || historyProvider === void 0 ? void 0 : historyProvider.getUsage);
const readOnlyBoard = queues.length > 0 && queues.every((queue) => queue.readOnlyMode);
const canPurgeHistory = Boolean(historyProvider === null || historyProvider === void 0 ? void 0 : historyProvider.purge) && !readOnlyBoard;
const apiRoutes = [...routes_1.appRoutes.api];
if (historyProvider) {
apiRoutes.push({
method: 'get',
route: '/api/metrics/history',
handler: (0, metricsHistory_1.createMetricsHistoryHandler)(historyProvider),
});
if (hasHistoryUsage) {
apiRoutes.push({
method: 'get',
route: '/api/metrics/history/usage',
handler: (0, metricsHistoryStorage_1.createMetricsHistoryUsageHandler)(historyProvider),
});
}
if (canPurgeHistory) {
apiRoutes.push({
method: 'post',
route: '/api/metrics/history/purge',
handler: (0, metricsHistoryStorage_1.createMetricsHistoryPurgeHandler)(historyProvider),
});
}
}
serverAdapter
.setQueues(bullBoardQueues)
.setViewsPath(path_1.default.join(uiBasePath, 'dist'))
.setStaticPath('/static', path_1.default.join(uiBasePath, 'dist/static'))
.setUIConfig({
boardTitle: 'Bull Dashboard',
favIcon: {
default: 'static/images/logo.svg',
alternative: 'static/favicon-32x32.png',
},
...options.uiConfig,
// Derived from `historyProvider`, so these must win over any caller-supplied
// uiConfig: each flag gates a UI feature whose backing route only exists when the
// provider supports it.
hasHistoryProvider: Boolean(historyProvider),
hasHistoryUsage,
canPurgeHistory,
})
.setEntryRoute(routes_1.appRoutes.entryPoint)
.setErrorHandler(error_1.errorHandler)
.setApiRoutes(apiRoutes);
return { setQueues, replaceQueues, addQueue, removeQueue };
}
//# sourceMappingURL=index.js.map