UNPKG

@bull-board/api

Version:

A Dashboard server API built on top of bull or bullmq.

72 lines 3.56 kB
"use strict"; 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