@lokalise/fastify-bullboard-plugin 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,17 @@
1
+ import { type RedisConfig } from '@lokalise/node-core';
1
2
  import type { Queue, QueueOptions, RedisConnection } from 'bullmq';
2
3
  import type { Redis } from 'ioredis';
3
4
  export type BullBoardOptions = {
4
5
  queueConstructor: QueueProConstructor | QueueConstructor;
5
- redisInstances: Redis[];
6
6
  basePath: string;
7
7
  refreshIntervalInSeconds?: number;
8
- };
8
+ } & ({
9
+ redisInstances: Redis[];
10
+ redisConfigs?: never;
11
+ } | {
12
+ redisInstances?: never;
13
+ redisConfigs: RedisConfig[];
14
+ });
9
15
  export interface QueueProConstructor {
10
16
  new (name: string, opts?: Record<string, unknown>): Queue;
11
17
  }
package/dist/bullBoard.js CHANGED
@@ -4,7 +4,7 @@ import { createBullBoard } from '@bull-board/api';
4
4
  import { BullMQAdapter } from '@bull-board/api/bullMQAdapter.js';
5
5
  import { FastifyAdapter } from '@bull-board/fastify';
6
6
  import fastifySchedule from '@fastify/schedule';
7
- import { backgroundJobProcessorGetActiveQueueIds, QUEUE_GROUP_DELIMITER, } from '@lokalise/background-jobs-common';
7
+ import { backgroundJobProcessorGetActiveQueueIds, createSanitizedRedisClient, QUEUE_GROUP_DELIMITER, } from '@lokalise/background-jobs-common';
8
8
  import { resolveGlobalErrorLogObject } from '@lokalise/node-core';
9
9
  import fp from 'fastify-plugin';
10
10
  import { AsyncTask, SimpleIntervalJob } from 'toad-scheduler';
@@ -28,25 +28,35 @@ async function getCurrentQueues(redisInstances, queueConstructor) {
28
28
  ids.map((id) => new queueConstructor(id, { connection: redisInstances[index] })))
29
29
  .map((queue) => new BullMQAdapter(queue, { delimiter: QUEUE_GROUP_DELIMITER }));
30
30
  }
31
- async function scheduleUpdates(fastify, bullBoard, pluginOptions) {
32
- const { refreshIntervalInSeconds, redisInstances, queueConstructor } = pluginOptions;
31
+ async function scheduleUpdates(fastify, bullBoard, resolvedRedisInstances, pluginOptions) {
32
+ const { refreshIntervalInSeconds, queueConstructor } = pluginOptions;
33
33
  if (!refreshIntervalInSeconds || refreshIntervalInSeconds <= 0)
34
34
  return;
35
35
  const refreshTask = new AsyncTask('Bull-board - update queues', async () => {
36
36
  fastify.log.debug({ refreshIntervalInSeconds }, 'Bull-dashboard -> updating queues');
37
- bullBoard.replaceQueues(await getCurrentQueues(redisInstances, queueConstructor));
37
+ bullBoard.replaceQueues(await getCurrentQueues(resolvedRedisInstances, queueConstructor));
38
38
  }, (e) => fastify.log.error(resolveGlobalErrorLogObject(e)));
39
- await fastify.register(fastifySchedule);
39
+ // if scheduler is not registered, register it
40
+ if (!fastify.scheduler)
41
+ await fastify.register(fastifySchedule);
40
42
  fastify.scheduler.addSimpleIntervalJob(new SimpleIntervalJob({ seconds: refreshIntervalInSeconds }, refreshTask, {
41
43
  id: 'bull-board-queues-update',
42
44
  preventOverrun: true,
43
45
  }));
44
46
  }
47
+ const resolveRedisInstances = (options) => {
48
+ if (options.redisInstances)
49
+ return options.redisInstances;
50
+ if (options.redisConfigs)
51
+ return options.redisConfigs.map(createSanitizedRedisClient);
52
+ throw new Error('Either `redisInstances` or `redisConfigs` must be provided in BullBoardOptions');
53
+ };
45
54
  const plugin = async (fastify, pluginOptions) => {
46
- const { basePath, redisInstances, queueConstructor } = pluginOptions;
55
+ const { basePath, queueConstructor } = pluginOptions;
56
+ const resolvedRedisInstances = resolveRedisInstances(pluginOptions);
47
57
  const serverAdapter = new FastifyAdapter();
48
58
  const bullBoard = createBullBoard({
49
- queues: await getCurrentQueues(redisInstances, queueConstructor),
59
+ queues: await getCurrentQueues(resolvedRedisInstances, queueConstructor),
50
60
  serverAdapter,
51
61
  });
52
62
  // biome-ignore lint/suspicious/noExplicitAny: bull-board is not exporting this type
@@ -55,7 +65,7 @@ const plugin = async (fastify, pluginOptions) => {
55
65
  await fastify.register(serverAdapter.registerPlugin(), {
56
66
  prefix: basePath,
57
67
  });
58
- await scheduleUpdates(fastify, bullBoard, pluginOptions);
68
+ await scheduleUpdates(fastify, bullBoard, resolvedRedisInstances, pluginOptions);
59
69
  };
60
70
  export const bullBoard = fp(plugin, {
61
71
  fastify: '>=4.0.0',
@@ -1 +1 @@
1
- {"version":3,"file":"bullBoard.js","sourceRoot":"","sources":["../src/bullBoard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bullBoard.js","sourceRoot":"","sources":["../src/bullBoard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/fastify-bullboard-plugin",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",